Ik heb een laptop systeem waarbij ik laptops kan uitlenen en nu wil ik als je de status veranderd dat dit niet mogelijk is dmv een javascript alert.

Dit werkt echter niet. Ik wil dat als de status naar "uitgeleend" wordt veranderd hij eerst controleert of de desbetreffende laptop niet uitgeleend is. Ik krijg geen errors. maar ik kan wel de status naar uitgeleend veranderen wat niet de bedoeling is.

mijn code:

<?php

elseif($_POST['status'] == 3){

$query1= "SELECT

*

FROM

reserveringen

WHERE

NOW() >= begintijd

AND

NOW() <= eindtijd

AND

laptopid=".$_POST['laptop']."

AND

checken =3
";

$result1 = mysql_query($query1);

if(mysql_num_rows($result1) == 1){

echo "<script>alert('Uitlenen is niet mogelijk omdat laptop ".$_POST['laptop']." al is uitgeleend!')</script>";

}

?>

Edit: Status 3 is de status uitgeleend in mijn database.
Misschien

if(mysql_num_rows($result1) > 0)


in plaats van:

if(mysql_num_rows($result1) == 1)


Zijn er meerdere resultaten i.p.v. 0 of 1?
Er kan nooit meer dan 1 resultaat zijn iig nu nog wel maar laptop 2 kan niet op 2 plaatsen tegelijk worden uitgeleend snappie
Ik heb 1 record die zou moeten matchen. en dus een foutmelding zou moeten geven. Wat niet gebeurd
Staan de tijden wel in een DATE of DATETIME veld in de database?
Jep het is een date/time veld. Ik denk dat ik ietsn iet goed heb gedaan in de query maar zoals ik em lees zou hij 1 match moeten geven en dus de error

Overigens als ik echo mysql_nuw_rows($query1); doe krijg ik 0 terug dus geen match
Jurgen schreef op 30.11.2006 14:15
Jep het is een date/time veld. Ik denk dat ik ietsn iet goed heb gedaan in de query maar zoals ik em lees zou hij 1 match moeten geven en dus de error

Overigens als ik echo mysql_nuw_rows($query1); doe krijg ik 0 terug dus geen match

Zet error_reporting(E_ALL); eens aan. (Bovenin je script). En check of de query wel is gelukt. (Foutafhandeling).
Mijn query is gelukt. Want hij veranderd de status. En dat moet hij juist niet doen. Hij moet een error geven.

note:

Ik gebruik elseif omdat daarboven ook nog wat if's en elseif's staan vanwege controleren op velden.

Als alles is gelukt incl. het controleren van de status. dan zou hij query update moeten doen. en dat doet hij ook.
De query is een SELECT en die verandert niets.
nee dat moet ook niet. Onder de Elseifjes heb ik een update query. Hier is de volledige code:

<?php

if($_SERVER['REQUEST_METHOD'] == "POST"){
if(empty($_POST['naam']) ||
empty($_POST['afdeling']) ||
empty($_POST['locatie']) ||
empty($_POST['begin_uur']) ||
empty($_POST['begin_minuten']) ||
empty($_POST['begin_dag']) ||
empty($_POST['begin_maand']) ||
empty($_POST['begin_jaar']) ||
empty($_POST['eind_uur']) ||
empty($_POST['eind_minuten']) ||
empty($_POST['eind_dag']) ||
empty($_POST['eind_maand']) ||
empty($_POST['eind_jaar']) ){

echo "<script>alert('vul alle velden in!')</script>";
}
elseif($_POST['begin_uur'] > 23 ){
echo "<script>alert('Vul een juist begin uur in (00 - 23)')</script>";
}

elseif($_POST['eind_uur'] > 23 ){
echo "<script>alert('Vul een juist eind uur in (00 - 23)')</script>";
}

elseif($_POST['begin_minuten'] > 59 ){
echo "<script>alert('Vul een juist begin minuten in (00 - 59)')</script>";
}

elseif($_POST['eind_minuten'] > 59 ){
echo "<script>alert('Vul een juist eind minuten in (00 - 59)')</script>";
}

elseif(checkdate($_POST['begin_maand'],
$_POST['begin_dag'],
$_POST['begin_jaar'])

AND

checkdate($_POST['eind_maand'],
$_POST['eind_dag'],
$_POST['eind_jaar'])
!= "TRUE"){

echo "<script>alert('Vul een geldige datum in!')</script>";

}

elseif($_POST['begin_jaar'] < date('Y') OR $_POST['eind_jaar'] < date('Y')){

echo "<script>alert('Kan geen reserveringen doen in het verleden!')</script>";
}
elseif($_POST['status'] == 3){

$query1= "SELECT

*

FROM

reserveringen

WHERE

NOW() >= begintijd

AND

NOW() <= eindtijd

AND

laptopid=".$_POST['laptop']."

AND

checken =3
";

$result1 = mysql_query($query1);

if(mysql_num_rows($result1) >= 1){

echo "<script>alert('Uitlenen is niet mogelijk omdat laptop ".$_POST['laptop']." al is uitgeleend!')</script>";

}


}
else
{
$begindatum = $_POST['begin_jaar']."-"
.$_POST['begin_maand']."-"
.$_POST['begin_dag']." "
.$_POST['begin_uur'].":"
.$_POST['begin_minuten'].":00";

$einddatum = $_POST['eind_jaar']."-"
.$_POST['eind_maand']."-"
.$_POST['eind_dag']." "
.$_POST['eind_uur'].":"
.$_POST['eind_minuten'].":00";


$query_update = "UPDATE

reserveringen

SET
naam = '".$_POST['naam']."',
afdeling = '".$_POST['afdeling']."',
laptopid = '".$_POST['laptop']."',
locatie= '".$_POST['locatie']."',
begintijd ='".$begindatum."',
eindtijd ='".$einddatum."',
checken ='".$_POST['actief']."',
ip = '".$_SERVER['REMOTE_ADDR']."',
hostname = '".gethostbyaddr($_SERVER['REMOTE_ADDR'])."'

WHERE id=".$_GET['id']."";

mysql_query($query_update) or die("Er is iets misgegaan met de database, Neem contact op met de systeembeheerder indien dit vaker voorkomt.");

if(mysql_affected_rows() > 0){

echo "Gegevens zijn opgeslagen";
echo "<script>window.opener.window.location.reload(true); window.self.close()</script>";

}else{

echo "<div id=\"error_message\">Er is een fout opgetreden neem contact op met de systeembeheerder indien dit vaker voorkomt</div>";

}

}
}
?>
Als ik zo even snel kijk lijkt het mij dat de update wordt uitgevoerd als er niet is gepost.
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(empty($_POST['naam']) ||...............
{
}
// en een hele boel elsif()
}
else
{
UPDATE
}
?>

Reageren