OR - tolker som AND

Tags:    php

<html>

<head>

<link rel="stylesheet" type="text/css" href="style.css">

<?php

require("indstillinger.php");

?>
</head>

<body>

<?php

# connect til mysqldatabasen "tagwall"

mysql_c("localhost", "root", "", "tagwall");

if (!$_POST['ok']) {
echo "nope :)";
}
else
{

if (($_POST['navn'] !== "") || ($_POST['emne'] !== "") || ($_POST['msg'] !== "")) {

# indsæt de indtastede oplysninger i tabellen "tgw_db"

mysql_query("INSERT INTO tgw_db(navn, emne, email, hjemmeside, besked, ip, dato) VALUES ('".htmlentities($_POST['navn'])."', '".htmlentities($_POST['emne'])."', '".htmlentities($_POST['email'])."', '".htmlentities($_POST['url'])."', '".htmlentities($_POST['msg'])."', '".$_SERVER['REMOTE_ADDR']."', now())");

} else

{
echo "<table class=\\"msg\\"><tr><td class=\\"msg_head\\">Fejl i indtastning!</td></tr></table>";
}
}

# luk mysqlforbindelsen


mysql_close();

?>

</body>

</html>


Det er if-sætningen der ikke virker.. den reagerer som om der står "AND" istedet for "OR"... altså hvis man lader alle 3 felter stå tomt, meddeler den fejl - hvis man indtaster noget i bare det ene af dem, sender den indlægget...

helfen Sie, bitte!



3 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
<html>

<head>

<link rel="stylesheet" type="text/css" href="style.css">

<?php

require("indstillinger.php");

?>
</head>

<body>

<?php

# connect til mysqldatabasen "tagwall"

mysql_c("localhost", "root", "", "tagwall");

if (!$_POST['ok']) {
echo "nope :)";
}
else
{

if (($_POST['navn'] !== "") || ($_POST['emne'] !== "") || ($_POST['msg'] !== "")) {

# indsæt de indtastede oplysninger i tabellen "tgw_db"

mysql_query("INSERT INTO tgw_db(navn, emne, email, hjemmeside, besked, ip, dato) VALUES ('".htmlentities($_POST['navn'])."', '".htmlentities($_POST['emne'])."', '".htmlentities($_POST['email'])."', '".htmlentities($_POST['url'])."', '".htmlentities($_POST['msg'])."', '".$_SERVER['REMOTE_ADDR']."', now())");

} else

{
echo "<table class=\\"msg\\"><tr><td class=\\"msg_head\\">Fejl i indtastning!</td></tr></table>";
}
}

# luk mysqlforbindelsen


mysql_close();

?>

</body>

</html>


Det er if-sætningen der ikke virker.. den reagerer som om der står "AND" istedet for "OR"... altså hvis man lader alle 3 felter stå tomt, meddeler den fejl - hvis man indtaster noget i bare det ene af dem, sender den indlægget...

helfen Sie, bitte!


Nemlig, og det er jo egentlig også det du har bedt den om. Hvis du nu skriver noget i "navn", så tænker den, "fedt" navn er ikke lig "", vi indsætter noget data.
Mvh
Kaare



<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<?php
require("indstillinger.php");
?>
</head>
<body>
<?php
# connect til mysqldatabasen "tagwall"
mysql_c("localhost", "root", "", "tagwall");
if (!$_POST['ok']) {
echo "nope :)";
}
else
{
if (($_POST['navn'] !== "") || ($_POST['emne'] !== "") || ($_POST['msg'] !== "")) {
# indsæt de indtastede oplysninger i tabellen "tgw_db"
mysql_query("INSERT INTO tgw_db(navn, emne, email, hjemmeside, besked, ip, dato) VALUES ('".htmlentities($_POST['navn'])."', '".htmlentities($_POST['emne'])."', '".htmlentities($_POST['email'])."', '".htmlentities($_POST['url'])."', '".htmlentities($_POST['msg'])."', '".$_SERVER['REMOTE_ADDR']."', now())");
} else
{
echo "<table class=\\"msg\\"><tr><td class=\\"msg_head\\">Fejl i indtastning!</td></tr></table>";
}
}
# luk mysqlforbindelsen
mysql_close();
?>
</body>
</html>
Det er if-sætningen der ikke virker.. den reagerer som om der står "AND" istedet for "OR"... altså hvis man lader alle 3 felter stå tomt, meddeler den fejl - hvis man indtaster noget i bare det ene af dem, sender den indlægget...

helfen Sie, bitte!


Du skal bruge != i stedet for!== i din if sætning.

Men vil du ikke kun opdatere hvis alle værdierne er sat??
Hvis det er tilfældet så brug:

Fold kodeboks ind/udKode 


Michael.



<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<?php
require("indstillinger.php");
?>
</head>
<body>
<?php
# connect til mysqldatabasen "tagwall"
mysql_c("localhost", "root", "", "tagwall");
if (!$_POST['ok']) {
echo "nope :)";
}
else
{
if (($_POST['navn'] !== "") || ($_POST['emne'] !== "") || ($_POST['msg'] !== "")) {
# indsæt de indtastede oplysninger i tabellen "tgw_db"
mysql_query("INSERT INTO tgw_db(navn, emne, email, hjemmeside, besked, ip, dato) VALUES ('".htmlentities($_POST['navn'])."', '".htmlentities($_POST['emne'])."', '".htmlentities($_POST['email'])."', '".htmlentities($_POST['url'])."', '".htmlentities($_POST['msg'])."', '".$_SERVER['REMOTE_ADDR']."', now())");
} else
{
echo "<table class=\\"msg\\"><tr><td class=\\"msg_head\\">Fejl i indtastning!</td></tr></table>";
}
}
# luk mysqlforbindelsen
mysql_close();
?>
</body>
</html>
Det er if-sætningen der ikke virker.. den reagerer som om der står "AND" istedet for "OR"... altså hvis man lader alle 3 felter stå tomt, meddeler den fejl - hvis man indtaster noget i bare det ene af dem, sender den indlægget...

helfen Sie, bitte!

Du skal bruge != i stedet for!== i din if sætning.

Men vil du ikke kun opdatere hvis alle værdierne er sat??
Hvis det er tilfældet så brug:

Fold kodeboks ind/udKode 


Michael.

Det er faktisk ikke helt korrekt. Det er rigtigt at han skal bruge && ja, men han kan sagtens bruge !==.
Mvh
Kaare



t