PDA

Bekijk Volledige Versie : php: if structuur



Zenta
01/05/06, 09:20
Bij deze code wordt steeds het eerste if-statement uitgevoerd, ook al
is de ($_GET["plekje"])waarde niet overeenkomsitg :s .

Dit is de code :

----------------------------------------------
if (empty($_POST)){
// eerst controleren of pagina wel is aangeroepen vanuit formulier
echo("Vul eerst <a href=\"fromtoevoegenstanden.html\">gegevens
voor de werknemer</a> in");
exit();
}else{

if ($_GET["plekje"] ="één")
{
$stand =$_POST['fstand'];
$datum =$_POST['fdatum'];
$sql="INSERT INTO water3 (stand,datum)
VALUES ('$stand','$datum')";
mysql_query($sql) or die ("can't execute query.");
$query = $_POST["fstand"] ."', '" ;
$query .= $_POST["fdatum"] ."', '" ;
}
elseif ($_GET["plekje"] = "twee")
{
$stand =$_POST['fstand'];
$datum =$_POST['fdatum'];
$sql="INSERT INTO water2 (stand,datum)
VALUES ('$stand','$datum')";
mysql_query($sql) or die ("can't execute query.");
$query = $_POST["fstand"] ."', '" ;
$query .= $_POST["fdatum"] ."', '" ;
}
elseif ($_GET['plekje'] = "drie")
{
$stand =$_POST['fstand'];
$datum =$_POST['fdatum'];
$sql="INSERT INTO water1 (stand,datum)
VALUES ('$stand','$datum')";
mysql_query($sql) or die ("can't execute query.");
$query = $_POST["fstand"] ."', '" ;
$query .= $_POST["fdatum"] ."', '" ;
}
}
------------------------------------------------------------------------------

Dus wanneer de ($_GET['plekje']) waarde gelijk is aan drie, wordt toch
de eerste if-statement uitgevoerd.

Riemer Palstra
01/05/06, 09:20
On 2006-05-01, Zenta <millionsmillions@hotmail.com> wrote:
> if ($_GET["plekje"] ="één")

Bedoel je soms if ($_GET["plekje"] == "één") ?

--
Riemer Palstra Amsterdam, The Netherlands
riemer@palstra.com http://www.palstra.com/

Zenta
01/05/06, 10:00
> Bedoel je soms if ($_GET["plekje"] == "één") ?

Wanneer ik dit doe wordt men sql code niet uitgevoerd :s

Geert Wirken
01/05/06, 10:00
Zenta schreef op 1-5-2006 9:28:
>> Bedoel je soms if ($_GET["plekje"] == "één") ?
>
> Wanneer ik dit doe wordt men sql code niet uitgevoerd :s

Bedoel je niet ($_GET["plekje"]=="een") ? (dus zonder accenten)

Riemer Palstra
01/05/06, 10:00
On 2006-05-01, Zenta <millionsmillions@hotmail.com> wrote:
> Wanneer ik dit doe wordt men sql code niet uitgevoerd :s

[ ... ]

> mysql_query($sql) or die ("can't execute query.");

Leuk dat je de query uitvoert, maar wat wil je er verder mee doen?

> $query = $_POST["fstand"] ."', '" ;
> $query .= $_POST["fdatum"] ."', '" ;

En waar komt dit opeens vandaan? :)

--
Riemer Palstra Amsterdam, The Netherlands
riemer@palstra.com http://www.palstra.com/

Zenta
01/05/06, 10:00
neen dat is correct :)

Zenta
01/05/06, 10:40
Anders wordt $sql toch niet uitgevoerd :s ?


> $query = $_POST["fstand"] ."', '" ;
> $query .= $_POST["fdatum"] ."', '" ;
Dit dient hiervoor

<?php
echo("Query die wordt uitgevoerd: <b>$query</b><hr>\n");
echo("De volgende gegevens zijn ingevoegd:<br>\n");
echo("stand: <b>". $_POST["fstand"] . "</b><br>");
echo("datum: <b>". $_POST["fdatum"] . "</b><br>");

echo("<hr><a href=\"frmtoevoegenstanden.html\">Nog een stand
invoegen</a> |
<a href=\"water.php\">Overzicht van alle standen tot nu toe</a>");
?>

Riemer Palstra
01/05/06, 10:40
On 2006-05-01, Zenta <millionsmillions@hotmail.com> wrote:
> echo("Query die wordt uitgevoerd: <b>$query</b><hr>\n");

Maar je query zat toch in $sql?

> echo("De volgende gegevens zijn ingevoegd:<br>\n");
> echo("stand: <b>". $_POST["fstand"] . "</b><br>");
> echo("datum: <b>". $_POST["fdatum"] . "</b><br>");

Kan, maar in principe had je daar al $stand en $datum voor gebruikt.

--
Riemer Palstra Amsterdam, The Netherlands
riemer@palstra.com http://www.palstra.com/

Geert Wirken
01/05/06, 12:00
Zenta schreef op 1-5-2006 9:58:
[SQL wordt niet uitgevoerd]
> neen dat is correct :)

Is je SQL-code wel correct? (doe anders even echo mysql_error();)

tip: <www.leerquoten.nl>

Garfield
02/05/06, 08:00
Zenta schreef op 1-5-2006 9:05 het volgende bericht:
> Bij deze code wordt steeds het eerste if-statement uitgevoerd, ook al
> is de ($_GET["plekje"])waarde niet overeenkomsitg :s .
>
> Dit is de code :
>
> ----------------------------------------------
> if (empty($_POST)){
> // eerst controleren of pagina wel is aangeroepen vanuit formulier
> echo("Vul eerst <a href=\"fromtoevoegenstanden.html\">gegevens
> voor de werknemer</a> in");
> exit();
> }else{
>
> if ($_GET["plekje"] ="één")
> {
> $stand =$_POST['fstand'];
> $datum =$_POST['fdatum'];
> $sql="INSERT INTO water3 (stand,datum)
> VALUES ('$stand','$datum')";
> mysql_query($sql) or die ("can't execute query.");
> $query = $_POST["fstand"] ."', '" ;
> $query .= $_POST["fdatum"] ."', '" ;
> }
> elseif ($_GET["plekje"] = "twee")
> {
> $stand =$_POST['fstand'];
> $datum =$_POST['fdatum'];
> $sql="INSERT INTO water2 (stand,datum)
> VALUES ('$stand','$datum')";
> mysql_query($sql) or die ("can't execute query.");
> $query = $_POST["fstand"] ."', '" ;
> $query .= $_POST["fdatum"] ."', '" ;
> }
> elseif ($_GET['plekje'] = "drie")
> {
> $stand =$_POST['fstand'];
> $datum =$_POST['fdatum'];
> $sql="INSERT INTO water1 (stand,datum)
> VALUES ('$stand','$datum')";
> mysql_query($sql) or die ("can't execute query.");
> $query = $_POST["fstand"] ."', '" ;
> $query .= $_POST["fdatum"] ."', '" ;
> }
> }
> ------------------------------------------------------------------------------
>
> Dus wanneer de ($_GET['plekje']) waarde gelijk is aan drie, wordt toch
> de eerste if-statement uitgevoerd.
>

Dat komt omdat je in het eerste if statement $_GET['plekje'] vult met
'een'....

Er MOET inderdaad bij *ieder* if statement == worden gebruikt, omdat het
een vergelijking betreft, en geen toekenning. Er zijn mensen die, om
deze fout te voorkomen, altijd eerst de constante plaatsen, en dan pas
de variabele:
"drie" = $_GET['plekje']
Dit resulteert in een foutmelding, niet in een onverwachte uitvoering
van code.

Wat altijd helpt bij zo'n probleem is enkele debug regels in je script
op te nemen, na ieder if statement zal een
print ">>>>Debug: plekje {$_GET['plekje']}<br>\n";

heel verhelderend werken. (Deze haal je, als het probleem is opgelost
uiteraard weer weg).

Ook een
print ">>>>Debug: query $query<br>\n";

helpt goed om te controleren of er toch niet iets fout gaat met zo'n query.

--
Garf

Branko Collin
02/05/06, 12:40
On 1 May 2006 00:28:36 -0700, "Zenta" <millionsmillions@hotmail.com>
wrote:

>> Bedoel je soms if ($_GET["plekje"] == "één") ?
>
>Wanneer ik dit doe wordt men sql code niet uitgevoerd :s

Toch heeft Riemer gelijk. (Zie de uitgebreide posting van Garfield
over het waarom.)

Dat je SQL-code niet wordt uitgevoerd, ligt dan ergens anders aan.

Jeroen Ruijgers
02/05/06, 22:00
Zenta wrote:
> Bij deze code wordt steeds het eerste if-statement uitgevoerd, ook al
> is de ($_GET["plekje"])waarde niet overeenkomsitg :s .
>
> Dit is de code :
>
> ----------------------------------------------
> if (empty($_POST)){
> // eerst controleren of pagina wel is aangeroepen vanuit formulier
> echo("Vul eerst <a href=\"fromtoevoegenstanden.html\">gegevens
> voor de werknemer</a> in");
> exit();
> }else{
>
> if ($_GET["plekje"] ="één")
> {
> $stand =$_POST['fstand'];
> $datum =$_POST['fdatum'];
> $sql="INSERT INTO water3 (stand,datum)
> VALUES ('$stand','$datum')";
> mysql_query($sql) or die ("can't execute query.");
> $query = $_POST["fstand"] ."', '" ;
> $query .= $_POST["fdatum"] ."', '" ;
> }
> elseif ($_GET["plekje"] = "twee")
> {
> $stand =$_POST['fstand'];
> $datum =$_POST['fdatum'];
> $sql="INSERT INTO water2 (stand,datum)
> VALUES ('$stand','$datum')";
> mysql_query($sql) or die ("can't execute query.");
> $query = $_POST["fstand"] ."', '" ;
> $query .= $_POST["fdatum"] ."', '" ;
> }
> elseif ($_GET['plekje'] = "drie")
> {
> $stand =$_POST['fstand'];
> $datum =$_POST['fdatum'];
> $sql="INSERT INTO water1 (stand,datum)
> VALUES ('$stand','$datum')";
> mysql_query($sql) or die ("can't execute query.");
> $query = $_POST["fstand"] ."', '" ;
> $query .= $_POST["fdatum"] ."', '" ;
> }
> }
> ------------------------------------------------------------------------------
>
> Dus wanneer de ($_GET['plekje']) waarde gelijk is aan drie, wordt toch
> de eerste if-statement uitgevoerd.
>
wat me opvalt aan je code stukje is dat jde $_GET en $_POST door elkaar
gebruikt. is dat wel de bedoeling?