3 dropdown boxes - auto-update

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

P v H

P v H

10/10/2012 14:43:56
Quote Anchor link
Hallo
ik zit met een dilemma, ik probeer 3 dropdown-boxes te creeëren die elkaar updaten.
Nu is dit aardig gelukt.

Het enige probleem is dat hij één waarde direct als geselecteerd maakt, waarna je er niet op kan klikken om het werkend te krijgen.

Het is misschien makkelijker om het even te kunnen zien (het is een fictief bedrijf, ik wil gewoon de kneepjes van het programmeren onder de knie krijgen)



De code is:
<script type="text/javascript">
function reload(form){
var val=form.film.options[form.film.options.selectedIndex].value;
self.location='index.php?film=' + val ;
}

function reload2(form){
var val=form.film.options[form.film.options.selectedIndex].value;
var val2=form.dag.options[form.dag.options.selectedIndex].value;
self.location='index.php?film=' + val + '&dag=' + val2 ;
}

function reload3(form){
var val=form.film.options[form.film.options.selectedIndex].value;
var val2=form.dag.options[form.dag.options.selectedIndex].value;
var val3=form.tijd.options[form.tijd.options.selectedIndex].value;
self.location='index.php?film=' + val + '&dag=' + val2 + '&tijd='+val3 ;
}

</script>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php       $film=$_GET['film'];//begin dropdown1

if(isset($film) and strlen($film) > 0){
    $sql=mysql_query("SELECT DISTINCT * FROM `films` WHERE naam='$film' order by `naam`");
}
else{
    $sql=mysql_query("SELECT DISTINCT * FROM `films` order by `naam`");    
}

echo "<select id='dropdownfilmsfilm' name='film' onchange=\"reload(this.form)\">" ;

    while ($row=mysql_fetch_array($sql)){
        if($row['naam']==@$film){
                
        echo "<option id='dropdownfilmfilms' value='$row[naam]' STYLE=\"width: 230px\">   $row[naam]</option>"."<BR>";
    }
else{
        echo "<option value='$row[naam]' STYLE=\"width: 230px\">   $row[naam]</option>"."<BR>";
    }
}

echo "</select>";//eind dropdown1
                        
$dag=$_GET['dag'];//begin dropdown2
    if(isset($dag) and strlen($dag) > 0){
        $sql2=mysql_query("SELECT DISTINCT * FROM `dagen` WHERE dag='$dag'");
    }
else{
        $sql2=mysql_query("SELECT DISTINCT * FROM `dagen`");    
    }


echo "<select id='dropdownfilmsfilm' name='dag' onchange=\"reload2(this.form)\">";

while ($row2=mysql_fetch_array($sql2)){
    if($row2['dag']==@$dag){
        echo "<option value='$row2[dag]' STYLE=\"width: 230px\">   $row2[dag]</option>"."<BR>";
    }
else{
        echo "<option value='$row2[dag]' STYLE=\"width: 230px\">   $row2[dag]</option>"."<BR>";
    }
}

echo "</select>"; //eind dropdown2    

                
    
//begin dropdown3        

$sql3=mysql_query("SELECT $dag FROM `films` WHERE naam='$film'");
    
$tijd=$_GET['tijd'];    
echo "<select id='dropdownfilmsfilm' name='tijd' onchange=\"reload3(this.form)\">";
    while($row3=mysql_fetch_array($sql3)){
        echo "<option value='$row3[$dag]' STYLE=\"width: 230px\">   $row3[$dag]:00</option>"."<BR>";
        echo $row3[$dag];
    }

echo "</select>";//eind dropdown3
?>


Ik hoop dat iemand mij hiermee kan helpen, want ik zie door de bomen het bos niet meer..
Gewijzigd op 10/10/2012 16:27:57 door P v H
 
PHP hulp

PHP hulp

24/12/2024 00:41:14
 
Kris Peeters

Kris Peeters

10/10/2012 15:09:47
Quote Anchor link
Okay.
Dus wanneer een gebruiker een option kiest, wordt het formulier doorgestuurd en wordt die <select> leeggemaakt, behalve de geselecteerde option.

Dat moeten we dus veranderen. Ipv. de select leeg te maken, laden we sowieso alle options maar zetten we de geselecteerde option als ... tja als "geselecteerd".

Zo blijft alles nog flexibel en kan de gebruiker nog een stap terug doen.
Probeer dit al eens.
Ik toon de eerste <select>:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
...
$film = isset($_GET['film']) ? $_GET['film'] : '';  // deze notatie: zie "ternary operator"
//begin dropdown1
// we hebben alle records nodig

$res = mysql_query("SELECT DISTINCT naam FROM films order by naam");    
echo '<select id="dropdownfilmsfilm" name="film" onchange="reload(this.form)">' ;
while ($row=mysql_fetch_assoc($res)) {
  // we zetten alle <option>'s in de <select>, maar zetten de geselecteerde option als selected
  echo '<option id="dropdownfilmfilms" value="' . htmlentities($row['naam']) . '" style="width: 230px" ' . ($row['naam']== $film ? 'selected="selected"' : '' ) . '> ' . htmlentities($row['naam']) . ' </option>';  // trouwens, geen <br> nodig
}
echo "</select>";//eind dropdown1
...
?>


Kan je dit verder uitwerken en testen of deze ingreep volstaat?
Gewijzigd op 10/10/2012 15:11:25 door Kris Peeters
 
P v H

P v H

10/10/2012 16:27:40
Quote Anchor link
Ha heel hartelijk bedankt!
Het heeft gewerkt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.