Avatar billede krydset Nybegynder
21. oktober 2005 - 11:37 Der er 5 kommentarer og
1 løsning

dynamiske selects

hejsa.

Jeg så engang på roenvigs side nogle dynamiske selects hvor den ene tilpassede sig efter valg på en anden select.
Men hans side eksistere åbenbart ikke mere så tænkte om nogen lå inde med den stump kode ?
Avatar billede tdimhcs Nybegynder
21. oktober 2005 - 12:18 #1
Er det noget i den stil du søger:

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY bgColor=#ffffff>
<form name="doublecombo">
<p><select name="example" size="1" onChange="redirect(this.options.selectedIndex)">
<option>1</option>
<option>2</option>
<option>3</option>

</select>
<select name="stage2" size="1">
<option value="11">1,1</option>
<option value="12">1,2</option>
<option value="13">1,3</option>
</select>
<input type="button" name="test" value="Go!"
onClick="go()">
</p>

<script>
<!--


var groups=document.doublecombo.example.options.length;
var group=new Array(2)
for (i=0; i<groups; i++)
group[i]=new Array()

group[0][0]=new Option("1,1","11")
group[0][1]=new Option("1,2","12")
group[0][2]=new Option("1,3","13")

group[1][0]=new Option("2,1","21")
group[1][1]=new Option("2,2","22")
group[1][2]=new Option("2,3","23")
group[1][3]=new Option("2,4","24")

group[2][0]=new Option("3,1","31")
group[2][1]=new Option("3,2","32")
group[2][2]=new Option("3,3","33")
group[2][3]=new Option("3,4","34")
group[2][4]=new Option("3,5","35")

var temp=document.doublecombo.stage2

function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}

function go(){
location=temp.options[temp.selectedIndex].value
}
//-->
</script>

</form>

    </BODY>
    </HTML>

/Kurt
Avatar billede krydset Nybegynder
21. oktober 2005 - 12:44 #2
ja... Men jeg skal have loaded det med nogle værdier fra en mysql database via php, hvordan kan det gøres har du en ide ?
Avatar billede roenving Novice
22. oktober 2005 - 05:23 #3
Hrm, whitehat har åbenbart nogle problemer, som jeg ikke har fået nogen form for besked om ,-(

-- men det eksempel, jeg har liggende der opfylder også en ambition om at være skalerbar, så den kan tåle et vilkårligt antal selectbokse, og vil derfor være overkill i enhver normal situation med 2 selects !-)

-- en simpel udgave kan du finde her: http://www.eksperten.dk/spm/615326 ...

-- men hvis du vil have forskellige værdier i text og value er kurts en ganske udmærket udgave ...

Indsættelse af værdier klarer du med f.eks.

echo"group[$tael][group[$tael].length] = new Option($vaerdier[$tael][$txt],$vaerdier[$tael][$vaerdi]);"
Avatar billede krydset Nybegynder
22. oktober 2005 - 08:55 #4
Okay det prøver jeg lige og kigge på senere.
Avatar billede krydset Nybegynder
23. oktober 2005 - 12:29 #5
Okay har nu der her
I select 1 henter den data ud fra en tabel der hedder category
I select 2 skal den hente data ud fra tabellen subCategory

i tabellen Category er der et felt der hedder subCategoryId som passer sammen med subcategoryId i tabellen subcategory

Hvorsan får jeg hevet data ud så det passer sammen ?
<?php
//Åbner database
mysql_connect("localhost", "root", "");
mysql_select_db("shop");
?>
<form name="doublecombo">
<select name="category" size="1" onChange="redirect(this.options.selectedIndex)">
    <?php
    $CategoryRes = mysql_query("SELECT * FROM category ORDER BY CategoryName") or die(mysql_error());
    while($categoryRow = mysql_fetch_array($CategoryRes)) {
        $id = $categoryRow['CategoryId'];
        ?>
        <option value="<?php echo $categoryRow['CategoryId']; ?>"><?php echo $categoryRow['CategoryName']; ?></option>
        <?
    }
    ?>   
</select>

<select name="subCategory2" size="1">
    <option value="11">1,1</option>
    <option value="12">1,2</option>
    <option value="13">1,3</option>
</select>

<input type="submit" name="test" value="Go!">


<script>
<!--


var groups=document.doublecombo.example.options.length;
var group=new Array(2)
for (i=0; i<groups; i++)
group[i]=new Array()

group[0][0]=new Option("1,1","11")
group[0][1]=new Option("1,2","12")
group[0][2]=new Option("1,3","13")

group[1][0]=new Option("2,1","21")
group[1][1]=new Option("2,2","22")
group[1][2]=new Option("2,3","23")
group[1][3]=new Option("2,4","24")

group[2][0]=new Option("3,1","31")
group[2][1]=new Option("3,2","32")
group[2][2]=new Option("3,3","33")
group[2][3]=new Option("3,4","34")
group[2][4]=new Option("3,5","35")

var temp=document.doublecombo.stage2

function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}

function go(){
location=temp.options[temp.selectedIndex].value
}
//-->
</script>

</form>

    </BODY>
    </HTML>
   
<?php
show_source("test2.php");
?>
Avatar billede krydset Nybegynder
23. november 2005 - 18:11 #6
lukker her
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester