3 dropdown boxes - auto-update
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)
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
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
?>
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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
...
?>
...
$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
Het heeft gewerkt!