Onvoldoende output in select.
In onderstaand stukje php-script is het de bedoeling dat er een keuzelijst ontstaat waarin een antal tijdsaanduidingen staan met of zonder de tekst 'BEZET' ernaast.
$sthh en $stmm: uiterste begintijd (uren:minuten) van de lijst, bijv. 8:30
$ethh en $etmm: uiterste eindtijd (uren:minuten) van de lijst, bijv. 23:00
(Deze 4 variabelen hebben al deze waarde voorafgaand aan de select).
$RSVrow: bevat een record uit een tabel, met daarin oa $rsv_vanaf en $rsv_tot zoals in de database opgeslagen,ook weer als uren:minuten.
Wat doe ik verkeerd, want het bovenstaande gebeurt niet!?
Bij voorbaat dank voor de hulp.
==========
.
.
// op dit moment is $sthh=8, $sthh=30, $ethh=23, $etmm=0.
<select name="Start">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
while (($sthh < $ethh) OR (($sthh == $ethh) AND ($stmm=="00"))) {
while ( $RSVrow = mysql_fetch_array($RSVresult) ) {
$sthhmm = $sthh . ":" . $stmm; $sthhmmNUM=$sthh.$stmm;
$rsv_vanaf=$RSVrow['rsv_vanaf']; $pieces=explode(":",$rsv_vanaf); $rsv_vanafNUM=$pieces[0].$pieces[1];
$rsv_tot=$RSVrow['rsv_tot']; $pieces=explode(":",$rsv_tot); $rsv_totNUM=$pieces[0].$pieces[1];
//Skip de al gereserveerde tijdranges.
if ( ( ($sthhmmNUM>=$rsv_vanafNUM) AND ($sthhmmNUM<=$rsv_totNUM) ) )
{
while ( ( ($sthhmmNUM>=$rsv_vanafNUM) AND ($sthhmmNUM<=$rsv_totNUM) ) ) {
?>
while (($sthh < $ethh) OR (($sthh == $ethh) AND ($stmm=="00"))) {
while ( $RSVrow = mysql_fetch_array($RSVresult) ) {
$sthhmm = $sthh . ":" . $stmm; $sthhmmNUM=$sthh.$stmm;
$rsv_vanaf=$RSVrow['rsv_vanaf']; $pieces=explode(":",$rsv_vanaf); $rsv_vanafNUM=$pieces[0].$pieces[1];
$rsv_tot=$RSVrow['rsv_tot']; $pieces=explode(":",$rsv_tot); $rsv_totNUM=$pieces[0].$pieces[1];
//Skip de al gereserveerde tijdranges.
if ( ( ($sthhmmNUM>=$rsv_vanafNUM) AND ($sthhmmNUM<=$rsv_totNUM) ) )
{
while ( ( ($sthhmmNUM>=$rsv_vanafNUM) AND ($sthhmmNUM<=$rsv_totNUM) ) ) {
?>
<OPTION></OPTION>
<OPTION></OPTION>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php }
}
$stmm = $stmm + 30;
if ($stmm==60) {
$sthh=$sthh+1;
$stmm="00";
}
}
?>
}
$stmm = $stmm + 30;
if ($stmm==60) {
$sthh=$sthh+1;
$stmm="00";
}
}
?>
</select>
Andre Janssen op 28/10/2013 09:45:31:
Wat doe ik verkeerd, want het bovenstaande gebeurt niet!?
Dat je een tijd opslaat als een CHAR of VARCHAR veld en niet als een TIME veld....?
De tijden zijn idd als VARCHAR in de database opgeslagen. Ik heb ook al geprobeerd ze als TIME-velden op te slaan, maar dat lost het probleem helaas niet op. Op de een of andere manier komt er iets wat er niet hoort tussen de <select></select> te staan. Echo's tussen de while's krijg ik ook niet te zien!?
Misschien wil je het stukje code zelf eens testen?
Je kunt vooraf gewoon de volgende variabelen zetten: $sthh=8, $sthh=30, $ethh=23, $etmm=0
En een tabelletje maken met twee velden erin: rsv_vanaf en rsv_tot
$rsv_vanaf bijv. 10:00 en $rsv_tot bijv. 11:30
In de keuzelijst van 8:30 tot 23:00 is dan het gedeelte van 10:00 tot 11:30 "BEZET".
Dus:
8:30
9:00
9:30
10:00 BEZET
10:30 BEZET
11:00 BEZET
11:30
12:00
enz. tot 23:00
mvg
Andre Janssen op 28/10/2013 12:32:42:
Je kunt vooraf gewoon de volgende variabelen zetten: $sthh=8, $sthh=30, $ethh=23, $etmm=0
Je kunt vooraf gewoon de volgende variabelen zetten: $sthh=8, $sthh=30, $ethh=23, $etmm=0
Volgens mij zie ik 3x (dus wel consequent ;) ) dezelfde fout voorbij komen.
Probeer het eens met $stmm = 30 i.p.v. met $sthh = 30 ;)
Dat is idd een tikfoutje van mij, helemaal gelijk. Het moet natuurlijk $stmm=30 zijn (startminuten).
Maar kun je me vertellen welke fout je 3x ziet? Wellicht is dat de oplossing?!
mvg