Inleiding:
Vanmiddag ben ik een beetje aan het knutselen geweest met javascript, en een scriptje gemaakt wat de inhoud van een selectiebox afhankelijk laat zijn van een andere, namelijk plaatsen van landen.
Manier van aanpak:
ik laat php een aantal javascript arrays produceren als volgt:
Vervolgens maakt javascript er een selectboxje mee:
Oke alles goed en aardig, het werkt, maar verschrikkelijk traag, als ik een land kies in de dropdown duurt het (afhankelijk van het aantal plaatsen wat voor dat land in de database staat) wel een halve minuut voor ik weer verder kan.
Aangezien wat ik aan het doen ben niet voor mij zelf is, is dit een onacceptabel lange wachttijd.
Heeft iemand dus tips of trucs om dit te versnellen?
Pak ik het zowieso helemaal verkeerd aan?
Alle tips en suggesties zijn welkom
Vanmiddag ben ik een beetje aan het knutselen geweest met javascript, en een scriptje gemaakt wat de inhoud van een selectiebox afhankelijk laat zijn van een andere, namelijk plaatsen van landen.
Manier van aanpak:
ik laat php een aantal javascript arrays produceren als volgt:
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
| case 2: { // eerst gaan we even alle plaatsen in arrays pompen... moet niet al te moeilijk zijn. ?> <script type="text/javascript"> <? $sql = "SELECT id, naam, code FROM v3_landen"; if (!$result = mysql_query($sql)) { echo 'Fout in de query: '. $sql .' '. mysql_error() .'<br />'; } else { if (mysql_num_rows($result) > 0) { while ($rows = mysql_fetch_assoc($result)) { echo $rows['naam'].' = new Array('; $sql2 = "SELECT * FROM v3_plaatsen WHERE code = '". $rows['code'] ."'"; if (!$result2 = mysql_query($sql2)) { echo 'Fout in de query: '. $sql2 .' '. mysql_error() .'<br />'; } else { if (mysql_num_rows($result2) > 0) { $first = true; while ($rows2 = mysql_fetch_assoc($result2)) { if ($first) { $first = false; } else { echo ','; } echo '"'. strtolower($rows2['naam']) .'"'; } } } echo ');'; } } } ?> |
Vervolgens maakt javascript er een selectboxje mee:
code:
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
| function WijzigPlaatsen(naam) {
selectieBox = '<select name="plaats">';
if (naam == 'Nederland') {
for (counter = 0; counter < Nederland.length; counter++) {
selectieBox += '<option value="' + Nederland[counter] + '">' + Nederland[counter] + '</option>';
}
}
if (naam == 'Duitsland') {
for (counter = 0; counter < Duitsland.length; counter++) {
selectieBox += '<option value="' + Duitsland[counter] + '">' + Duitsland[counter] + '</option>';
}
}
if (naam == 'Belgie') {
for (counter = 0; counter < Belgie.length; counter++) {
selectieBox += '<option value="' + Belgie[counter] + '">' + Belgie[counter] + '</option>';
}
}
if (naam == 'Frankrijk') {
for (counter = 0; counter < Frankrijk.length; counter++) {
selectieBox += '<option value="' + Frankrijk[counter] + '">' + Frankrijk[counter] + '</option>';
}
}
if (naam == 'Luxemburg') {
for (counter = 0; counter < Luxemburg.length; counter++) {
selectieBox += '<option value="' + Luxemburg[counter] + '">' + Luxemburg[counter] + '</option>';
}
}
document.getElementById('plaats_span').innerHTML = selectieBox;
}
</script> |
Oke alles goed en aardig, het werkt, maar verschrikkelijk traag, als ik een land kies in de dropdown duurt het (afhankelijk van het aantal plaatsen wat voor dat land in de database staat) wel een halve minuut voor ik weer verder kan.
Aangezien wat ik aan het doen ben niet voor mij zelf is, is dit een onacceptabel lange wachttijd.
Heeft iemand dus tips of trucs om dit te versnellen?
Pak ik het zowieso helemaal verkeerd aan?
Alle tips en suggesties zijn welkom