Hey,

ik ben bezig met een script en hiervoor moet ik een array maken.
Maar ik kom er niet uit, ik heb dit:

<?php

$query = "SELECT * FROM bezet WHERE datum = '".$_SESSION[datum]."'";
$sql = mysql_query($query) or die(mysql_error());
$rij = mysql_fetch_assoc($sql);

?>
<select name="tijd" id="tijd">
<option value="">--- Kies een tijd ---</option>
<?php


// Get records from database
$list = mysql_query("SELECT * FROM tijd");

// Show records by while loop.
while($row_list=mysql_fetch_assoc($list)){

// zet de tijd om zodat deze in de dropdown normaal weergeven staat

$tijd_a = $row_list['tijd'];
$tijdb = explode(":", $tijd_a);
$newtime = $tijdb[0].":".$tijdb[1];

//controleer of er datum uit de dropdown overeenkomt met de datum uit BEZET, zoja geef (bezet) aan

if($rij['tijd'] == $row_list['tijd']) {
$voegtoe = " (bezet)";
}
else{
$voegtoe = "";
}

?>
<option value="<? echo $row_list['tijd']; ?>" <? if($row_list['tijd']==$select){ echo "selected"; } ?>><? echo $newtime.$voegtoe; ?></option>

<?php
} // End while loop.

?>

Het script maakt een lijst waarin een aantal tijden staan die mensen kunnen boeken, maar ik wil dat achter de tijden die bezet zijn: (bezet) komt te staan.
Nou check ik via een script eerst in de tabel BEZET of daar de tijd en datum instaan die ook in de dropdownlist staat, als dit zo is dan zou het script dat (bezet) moeten geven.
Dit werkt ook, maar alleen bij de eerste datum, als er daarna een datum geboekt word dan geeft hij alleen bij datum 1 (bezet) erachter.

Voorbeeld:

In de tabel bezet staat:

id Tijd Datum
1 10:00:00 2007-11-23
2 11:00:00 2007-11-23

In de dropdownlist staat:

10:00 uur (bezet)
11:00 uur

Einde Voorbeeld

Hij geeft dus bij 11:00 uur geen bezet terwijl die wel in de database in de kolom BEZET staat.

Nu schijnt het zo te zijn dat als ik alles eerst pre-load in een array en dan de gegevens in de dropdownlist uit de array laad dat het wel werkt, maar ik kom er niet uit.
Iemand die weet hoe dit moet of weet waar ik er wat meer duidelijke info over kan vinden?
op regel 7 ga je in ieder geval de fout in, daar staat HTML binnen PHP tag.

Zet op regel 6 alvast eens een ?>

En gebruik ook <?php ipv <?
Dat was inderdaad fout gegaan met het overzetten naar het forum, in het script stond het wel goed.
Maar heb je enig idee wat ik fout doe, hoe het anders kan?
Mag ik misschien de tabelopmaak zien? Ik denk namelijk dat je datamodel niet helemaal klopt, want sla je nou alle tijden op in de database of zie ik dat nou helemaal verkeerd?
Tabel tijd:

id tijd
1 10:00:00
2 10:50:00
3 11:40:00

ID = INT
TIJD = TIME

Tabel Bezet:

id tijd datum
1 19:20:00 2007-11-23
2 20:10:00 2007-11-23
3 21:00:00 2007-11-23

ID = INT
TIJD = TIME
DATUM = DATE

Dat is de gehele tabelopmaak

Dat is inderdaad een verkeerd datamodel. Het gaat over afspraken, dus je hebt een begin-DATETIME nodig en een eind-DATETIME, meer niet. Vandaaruit kun je een query maken die checkt of een bepaalde begin- en eindtijd ingepland kunnen worden, of dat er een overlap is.
Nou, er zijn vastgestelde tijden.
De planning is er dus zeg maar al, alleen kunnen mensen nu uit een lijst een datum en tijd kiezen.
Als deze datum icm de tijd al bezet is wat hij dus ziet in de tabel bezet, dan moet hij gewoon (bezet) aangeven.
Maar op dit moment doet hij dat maar bij 1 tijd uit de selectlist, bij de rest komt er niks te staan terwijl dat wel zou moeten.
En daarom hoorde ik van andere van dat moet je via een array doen, eerst alleen preloaden in een array en dan in de selectlist laden, alleen snap ik dat niet, hoe dat werkt.

Reageren