16. oktober 2002 - 17:07Der er
36 kommentarer og 1 løsning
<select>
Jeg har en <select> box, hvor jeg udskriver nogle overskrifter fra min db, og dette virker fint!
Når jeg så vælger en tilfældig overskrift, vil jeg gerne have at dette fremkalder en ny <select> box, som skal indeholde underoverskrifterne!!
Jeg tror at eagleeye var på sporet den anden dag, men jeg er ikke sikker?? Og hvis han var, så forstår jeg det ikke helt! http://www.eksperten.dk/spm/270159
Jamme det er lige det jeg står og mangler, men som du siger, så er det noget af en mundfuld :)
Jeg har lidt svært ved at overskue det, - er det en mulighed at du vil prøve at rette den til, hvis jeg giver dig mine oplysninger, eller er det for meget??
|u_kategoriId | u_kategoriNavn | Id | --------------------------------------------------------- | 1 | underoverskrift til bøger | 1 | | 1 | underoverskrift til bøger | 2 | | 2 | underoverskrift til Cylker | 3 | | 5 | underoverskrift til Hest | 4 | | 5 | underoverskrift til Hest | 5 |
Jeg vil gerne have udskrevet kategoriNavn fra tabellen kategori i den første select! Hvis jeg vælger fx. bøger med kategoriId = 1, så vil jeg gerne have udskrevet alle u_kategoriId = 1 fra tabellen u_katagori!
Sådan her, du skal rette database navnet.. Så har jeg kaldt tabel2 for u_kategori men jeg kan se nu har skrevet u_katagori... men det er kun et sted det skal rettes i koden.:
<% set conn = server.CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db9.mdb") %> <html> <head><title>Select menu vælger sekundær select menu.</title> <META NAME="Generator" CONTENT="eagleeye">
<script language="JavaScript"> <!--
var selbokse = new Array();
selbokse['kategori'] = new Array( "- vælg kategori -"
<% strSQL = "SELECT * FROM kategori" set rs = conn.execute (strSQL) do while not rs.eof Response.Write ", """ & rs("kategoriNavn") & """" rs.movenext loop %> );
selbokse['u_kategori'] = new Array( <% 'Udfør samme SQL som lige før set rs = conn.execute (strSQL) do while not rs.eof %> new Array ( "- vælg tilbehør -" <% strSQL = "SELECT * FROM u_kategori WHERE u_kategoriID = " & rs("kategoriID") set rsMad = conn.execute(strSQL) do while not rsMad.eof Response.Write ", """ & rsMad("ID") & "|" & rsMad("u_kategoriNavn") & """" rsMad.movenext loop rs.Movenext %>)<% if NOT rs.EOF then response.write "," loop rsMad.Close rs.Close Conn.Close Set rsMad = Nothing Set rs = Nothing Set Conn = Nothing %> );
//Dette står i select hvis den er tom var offMenu = new Array( " \< - \< - \< - \< - \< -" ); // >
var sel; var selo;
function setOption( idx, data ) { var tmp = data.split("|"); if ( tmp.length == 1 ) { tmp[1]=tmp[0]; tmp[0]="" }; if ( selo.length > idx ) { selo[idx].text = tmp[1]; selo[idx].value = tmp[0]; } else selo[idx] = new Option( tmp[1], tmp[0] ); }; //end setOption( number, string, string )
function setupMenu( selobj, menuarray ) { //alert("menuarray type: " +typeof(menuarray) ); sel = selobj.selectedIndex; selo = selobj.options; for (var i=0; menuarray.length>i; i++ ) setOption( i, menuarray[i] ); selobj.selectedIndex = 0; selobj.disabled = ( menuarray==offMenu )?true:false; selo.length = menuarray.length; }; //end setupMenu( select object, array )
var idxLand = -1; // intet land valgt
function setMenu ( frm, selNavn ) { if ( selNavn == "" ) { setupMenu( frm.kategori, selbokse['kategori'] ); setupMenu( frm.u_kategori, offMenu ); idxLand = -1; } else if ( selNavn == 'kategori' ) { idxLand = frm.kategori.selectedIndex-1; if ( idxLand >= 0 ) setupMenu( frm.u_kategori, selbokse['u_kategori'][idxLand] ); else setupMenu( frm.u_kategori, offMenu ); } else alert( "Slem programfejl. du bør aldrig se denne besked." ); }; //end setMenu ( radioKnap element )
Det ser godt ud, men jeg skal lige høre! Jeg kan fint vælge kategori og underkategorien kommer også fint ned i selectboxen, men når jeg vælger en af underkategorierne, så udskriver den alert( "Slem programfejl. du bør aldrig se denne besked." )
Jeg vil gerne lave sådan at i stedet for at den henter en http://www side, så skal den når jeg vælger en underkategori med fx. id=3
<% If u_kategoriID = fx 3 then %>
udskriver jeg de tabeller der passer til kategorien
<% else %>
<% If u_kategoriID = fx 7 then %>
udskriver jeg de tabeller der passer til kategorien
selbokse['kategori'] = new Array( "- vælg kategori -"
<% strSQL = "SELECT * FROM kategori" set rs = conn.execute (strSQL) do while not rs.eof Response.Write ", """ & rs("kategoriNavn") & """" rs.movenext loop %> );
selbokse['u_kategori'] = new Array( <% 'Udfør samme SQL som lige før set rs = conn.execute (strSQL) do while not rs.eof %> new Array ( "- vælg tilbehør -" <% strSQL = "SELECT * FROM u_kategori WHERE u_kategoriID = " & rs("kategoriID") set rsMad = conn.execute(strSQL) do while not rsMad.eof Response.Write ", """ & rsMad("ID") & "|" & rsMad("u_kategoriNavn") & """" rsMad.movenext loop rs.Movenext %>)<% if NOT rs.EOF then response.write "," loop rsMad.Close rs.Close Conn.Close Set rsMad = Nothing Set rs = Nothing Set Conn = Nothing %> );
//Dette står i select hvis den er tom var offMenu = new Array( " \< - \< - \< - \< - \< -" ); // >
var sel; var selo;
function setOption( idx, data ) { var tmp = data.split("|"); if ( tmp.length == 1 ) { tmp[1]=tmp[0]; tmp[0]="" }; if ( selo.length > idx ) { selo[idx].text = tmp[1]; selo[idx].value = tmp[0]; } else selo[idx] = new Option( tmp[1], tmp[0] ); }; //end setOption( number, string, string )
function setupMenu( selobj, menuarray ) { //alert("menuarray type: " +typeof(menuarray) ); sel = selobj.selectedIndex; selo = selobj.options; for (var i=0; menuarray.length>i; i++ ) setOption( i, menuarray[i] ); selobj.selectedIndex = 0; selobj.disabled = ( menuarray==offMenu )?true:false; selo.length = menuarray.length; }; //end setupMenu( select object, array )
var idxLand = -1; // intet land valgt
function setMenu ( frm, selNavn ) { if ( selNavn == "" ) { setupMenu( frm.kategori, selbokse['kategori'] ); setupMenu( frm.u_kategori, offMenu ); idxLand = -1; } else if ( selNavn == 'kategori' ) { idxLand = frm.kategori.selectedIndex-1; if ( idxLand >= 0 ) setupMenu( frm.u_kategori, selbokse['u_kategori'][idxLand] ); else setupMenu( frm.u_kategori, offMenu ); } else if ( selNavn == 'u_kategori' && idxLand>=0 ) { } else alert( "Slem programfejl. du bør aldrig se denne besked." ); }; //end setMenu ( radioKnap element )
Det der skal sker er: hvis jeg klikker på et link med u_kategoriID = fx. 1 så vil jeg gerne lave en:
If rsMad("u_kategoriId")= fx 1 then <% Vil jeg gerne hente form felter der passer til denne kategori %> og hvis rsMad("u_kategoriId")= fx 2 then noget andet!
Er det når man har valgt noget i select'en u_kategori og så trykker på en knap eller skal det være noget som sker lige som man har valgt i u_kategori lige som u_kategori bliver opdateret når kategori vælges?
Arh så er det forkert skrevet, det var ment omvendt du skal bruge det du har vist i kommentar 17/10-2002 23:42:21 og det var meningen jeg ville vise hvor det skulle ind :)
Du skal huske at vælge den rigtige kategori for at kunne vælge u_kategori til den som har value=25.
if ( selNavn == 'u_kategori' && idxLand>=0 ) { if (frm.u_kategoriId.value==25) { Her via ASP sende bruger videre til en anden siden, med de rigtige formfelter, hvor u_kategoriId sendes med via en Request.Querystring ???
Hej eagleeye, du får lige dine point nu, men jeg ville være utrolig taknemlig hvis du ville hjælpe mig, så jeg kan få det sidste lille problem løst.
Når jeg vælger en kategori i den første select box, så virker det fint. Alle underkategorierne bliver vist i den 2. select box, - men når jeg klikker på en af undermenuerne, får jeg denne fejl!
Fejl: U_kategoriID.value er null eller ikke et objekt!
Jeg vil gerne have lavet sådan at hvis U_kategoriID fx = 10 så skal den gå til side1.asp, hvis U_kategoriID fx = 20 så skal den gå til side2.asp, er det noget du kan lave???
Du skal nok få nogle flere point hvis det er det!!
Her er hele min kode som den ser ud lige nu!
<% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ConString %>
<script language="JavaScript"> <!--
var selbokse = new Array();
selbokse['kategori'] = new Array( " Vælg kategori "
<% strSQL = "SELECT * FROM kategori" set rs = conn.execute (strSQL) do while not rs.eof Response.Write ", """ & rs("kategoriNavn") & """" rs.movenext loop %> );
selbokse['u_katagori'] = new Array( <% 'Udfør samme SQL som lige før set rs = conn.execute (strSQL) do while not rs.eof %> new Array ( "Vælg underkategori" <% strSQL = "SELECT * FROM u_katagori WHERE u_kategoriID = " & rs("kategoriID") set rsMad = conn.execute(strSQL) do while not rsMad.eof Response.Write ", """ & rsMad("ID") & "|" & rsMad("u_kategoriNavn") & """" rsMad.movenext loop rs.Movenext %>)<% if NOT rs.EOF then response.write "," loop rsMad.Close rs.Close Conn.Close Set rsMad = Nothing Set rs = Nothing Set Conn = Nothing %> );
//Dette står i select hvis den er tom var offMenu = new Array( "Vælg underkategori" ); // >
var sel; var selo;
function setOption( idx, data ) { var tmp = data.split("|"); if ( tmp.length == 1 ) { tmp[1]=tmp[0]; tmp[0]="" }; if ( selo.length > idx ) { selo[idx].text = tmp[1]; selo[idx].value = tmp[0]; } else selo[idx] = new Option( tmp[1], tmp[0] ); }; //end setOption( number, string, string )
function setupMenu( selobj, menuarray ) { //alert("menuarray type: " +typeof(menuarray) ); sel = selobj.selectedIndex; selo = selobj.options; for (var i=0; menuarray.length>i; i++ ) setOption( i, menuarray[i] ); selobj.selectedIndex = 0; selobj.disabled = ( menuarray==offMenu )?true:false; selo.length = menuarray.length; }; //end setupMenu( select object, array )
var idxLand = -1; // intet land valgt
function setMenu ( frm, selNavn ) { if ( selNavn == "" ) { setupMenu( frm.kategori, selbokse['kategori'] ); setupMenu( frm.u_katagori, offMenu ); idxLand = -1; } else if ( selNavn == 'kategori' ) { idxLand = frm.kategori.selectedIndex-1; if ( idxLand >= 0 ) setupMenu( frm.u_katagori, selbokse['u_katagori'][idxLand] ); else setupMenu( frm.u_katagori, offMenu ); } else if ( selNavn == 'u_katagori' && idxLand>=0 ) { if (frm.u_kategoriId.value==25) { document.replace ( "andenfil.asp?ID=25" ); } } else alert( "Slem programfejl. du bør aldrig se denne besked." );
Det ville virkelig hjælpe mig hvis du ville se lidt på det!! please
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.