Ok, ik ben al 2 dagen bezig met het zoeken van een oplossing en heb het soms even losgelaten om even na te denken. Ik kom er niet uit! Ik hoop dat mijn ingewikkelde verhaal goed overkomt..

Ik ben een reserveringssysteem aan het maken. Een leraar moet een CMDB_item (leermiddel) kunnen reserveren wanneer dit CMDB_item (leermiddel) niet al gereserveerd is.

CMDB
cmdb_id
soort_id
weergavenaam
actief

RESERVERINGEN
reservering_id
reden
reservering_td
verwacht_td
uitleen_td (wanneer het echt is uitgeleend)
teruggave_td (wanneer het terug is gebracht)

Nu voert een leraar dus een (toekomstige)reservering_id en een (toekomstige)verwacht_td in bij STAP 1. De leraar gaat naar STAP 2 en ziet een select box met options. De options zijn alle CMDB_items maar degene die gereserveerd zijn moeten "disabled=disabled" krijgen & grijs worden.

Nu is dit STAP 2:

<?php
include("includes.php");
include("functions.php");
check();
if(empty($_POST)){
	header("Location:reservering_plaatsen.php");
	die();
}
else {
	if(empty($_POST['reservering_dag']) OR 
	empty($_POST['reservering_maand']) OR
	empty($_POST['reservering_jaar']) OR
	empty($_POST['reservering_uur']) OR
	empty($_POST['reservering_minuten']) OR
	empty($_POST['verwacht_dag']) OR 
	empty($_POST['verwacht_maand']) OR
	empty($_POST['verwacht_jaar']) OR
	empty($_POST['verwacht_uur']) OR
	empty($_POST['verwacht_minuten'])){
		echo "<p>Alles moet ingevuld worden, ga terug</p>";
		die();
	}
	else {
		$reservering_uur = $_POST['reservering_uur'];
		$reservering_minuten = $_POST['reservering_minuten'] - 10;
		// reservering gegevens
		$reservering_datum = $_POST['reservering_dag']."/".$_POST['reservering_maand']."/".$_POST['reservering_jaar'];
		$reservering_tijd = $reservering_uur.":".$reservering_minuten;
		$_SESSION['form_reservering_plaatsen']['reservering_td'] = dateToTime($reservering_datum,$reservering_tijd);
		
		$verwacht_uur = $_POST['verwacht_uur'];
		$verwacht_minuten = $_POST['verwacht_minuten'] + 10;
		// verwacht gegevens
		$verwacht_datum = $_POST['verwacht_dag']."/".$_POST['verwacht_maand']."/".$_POST['verwacht_jaar'];
		$verwacht_tijd = $verwacht_uur.":".$verwacht_minuten;
		$_SESSION['form_reservering_plaatsen']['verwacht_td'] = dateToTime($verwacht_datum,$verwacht_tijd);
	}
}
// header
echo $header;
?>
<div id="container">
	<?php echo $menu; ?>
	<div id="content" class="right">
		<h3>Reservering plaatsen: Stap 2</h3>
		<br />
		<p><strong style="color:red;">Let op:</strong> Lichtgrijze leermiddelen zijn al gereserveerd en kunnen niet gereserveerd worden!</p>
		<br />
		<form method="post" action="reservering_plaatsen_stap3.php">
			<p>Wat moet er gereserveerd worden?</p>
			<select name="cmdb_id" onchange="if(this.options[this.selectedIndex].disabled==true){ this.selectedIndex=0; alert('LET OP: Lichtgrijze leermiddelen zijn al gereserveerd en kunnen niet gereserveerd worden!'); }">
			<?php
 			mysqlConnect();
			$query = "SELECT cmdb_id,weergavenaam FROM cmdb WHERE actief='1' ORDER BY weergavenaam ASC";
			$sql = mysql_query($query) or die("<p>Fout in query. ".mysql_error()."</p>");
			$numrows = mysql_num_rows($sql);
			mysqlStop();
			if($numrows > 0){
				for($i=0;$i<$numrows;$i++){
					$weergavenaam = ucfirst(mysql_result($sql,$i,"cmdb.weergavenaam"));
					$cmdb_id = mysql_result($sql,$i,"cmdb.cmdb_id");
					mysqlConnect();
					$query2 = "SELECT reservering_td,verwacht_td FROM reserveringen WHERE cmdb_id='".$cmdb_id."' AND reservering_td >= '".$_SESSION['form_reservering_plaatsen']['reservering_td']."' AND verwacht_td <= '".$_SESSION['form_reservering_plaatsen']['verwacht_td']."'";
					$sql2 = mysql_query($query2) or die("<p>Fout in query. ".mysql_error()."</p>");
					$numrows2 = mysql_num_rows($sql2);
					mysqlStop();
					if($numrows2 == 1){
						echo "<option value=\"$cmdb_id\" disabled=\"disabled\" class=\"disabled\">$weergavenaam</option>\n";
					}
					else {
						echo "<option value=\"$cmdb_id\">$weergavenaam</option>\n";
					}
				}
			}
			else {
				echo "<p>Er is niets te reserveren, probeer het later nogmaals.</p>";
			}
			?>
			</select>
			<p>Kleine beschrijving:</p>
			<textarea name="reden" maxlength="200">Bijv.: Tutorgesprek IB5E</textarea>
			<br /><br />
			<input type="submit" value="Volgende" />
		</form>
		<div id="reserveren"></div>
	</div>
</div>
<?php
echo $footer;
?>

Nu is bijvoorbeeld het CMDB_item met weergavenaam "SMARTBOARD 1" al gereserveerd met deze gegevens:
reserveringen.reservering_td - 23/05/2007 18:11
reserveringen.verwacht_td - 23/05/2007 19:41

Het probleem is nu dat wanneer ik bij STAP 1 deze gegevens invul:
reservering_td - 23/05/2007 - 17:50
verwacht_td - 23/05/2007 - 17:50

Hij goed aangeeft dat SMARTBOARD 1 ligt grijs is en de html code "disabled=disabled"

Wanneer ik echter deze gegevens invul bij STAP 1:
reservering_td - 23/05/2007 - 17:50
verwacht_td - 23/05/2007 - 17:50

Geeft hij fout aan aangezien SMARTBOARD 1 gewoon geselecteerd kan worden en zwart is!

Degene die mij kan helpen ben ik 2000000000x dankbaar. Voor extra informatie ben ik natuurlijk snel paraat!
sorry, vergeten in code te zetten :p
is er dan niemand die mij kan helpen?
mag gesloten worden. heb het van een guru van school ;)


SELECT cmdb.cmdb_id,cmdb.weergavenaam,Count(res.cmdb_id) AS rescheck FROM cmdb LEFT JOIN reserveringen res ON res.cmdb_id = cmdb.cmdb_id AND ((res.reservering_td >= '".$_SESSION['form_reservering_plaatsen']['reservering_td']."' AND res.reservering_td <= '".$_SESSION['form_reservering_plaatsen']['verwacht_td']."') OR (res.verwacht_td >= '".$_SESSION['form_reservering_plaatsen']['reservering_td']."' AND res.verwacht_td <= '".$nu."')) WHERE cmdb.actief='1' GROUP BY 1,2 ORDER BY cmdb.weergavenaam ASC
dus je weet nu wel hoe het moet?

het is belangrijk dat je het zelf ook snapt..

Reageren