Page 1 sur 1

Fonction if != et exit ?

Posté : 01 févr. 2007, 11:12
par Invité
Bonjour,

Je débute dans le php et j'ai besoin de votre aide sur ce code :
if ($jours!=3 && $credit!=0) { exit(); }
mysql_query("UPDATE membres SET credit=1 WHERE pseudo='$pseudo'") or die ('Erreur : '.mysql_error());
Donc,si la variable $jours est différente de 3 et $credit est différente de 0,l'update ne sera pas éxécuter ? mettre le " exit() " a coté est une bonne chose pour garantir la non exécution de l'update ?

Et pour finir, si $jour est = a 3 et $credit est = a 0, l'update sera éxécuter, c'est bien ca ?

merci beaucoup

Posté : 01 févr. 2007, 12:28
par Ryle
Si la confition contenue dans ton IF est vraie, alors l'instruction qui le suit sera exécuté (en l'occurence le contenu de l'accolade)

Cette instruction est vraie SI $jours est différent de 3 ET $credit différent de 0.
Elle est donc fausse SI $jours est égale à 3 OU si $credit est égal à 0 (et l'update sera joué :))

Le exit() va interrompre l'exécution du code de manière brutale, ferme et définitive. Si tu as des instructions a passer après ce bout de code, elles ne seront donc pas jouées si tu fais appel au exit (c'est peut être ce que tu souhaites ?)

Pour ne pas interrompre le script, et garder ton test, il te suffit de modifier ton if :
if ($jours!=3 && $credit!=0) { // si le test est vrai
  // on ne fait rien
} 
else { // dans le cas contraire, on joue le update
  mysql_query("UPDATE ... ");
}
Ce que l'on peut également écrire en inversant la condition :
if ($jours==3 || $credit==0) { // si $jours est égale à 3 ou si $credit est égal à 0
  mysql_query("UPDATE ... ");
}
Ainsi le script n'est pas interrompu, et l'update n'est joué que si la condition est respectée :)

Posté : 01 févr. 2007, 12:45
par mcorgnet
if ($jours==3 || $credit==0) { // si $jours est égale à 3 ou si $credit est égal à 0
  mysql_query("UPDATE ... ");
}
Hum, je suis pas sûr de moi mais ça serait pas plutôt ça :
if ($jours==3 && $credit==0) { // si $jours est égale à 3 ET si $credit est égal à 0
  mysql_query("UPDATE ... ");
}
mais j'ai la tête au fond du ... aujourd'hui.

Posté : 01 févr. 2007, 12:54
par jojolapine
non non non Ryle à raison...
L'inverse du ET logique est le OU

Posté : 01 févr. 2007, 13:01
par Ryle
Pareil que jojo, (A et B) n'est qu'un cas particulier de (A ou B), et n'est pas son contraire :)

Le contraire de (A ou B), c'est à dire !(A ou B) est bien (!A et !B) :
Le contraire de " l'un ou l'autre " est " ni l'un, ni l'autre " :)

Posté : 01 févr. 2007, 13:03
par mcorgnet
voui c'est vrai ...

en meme temps, j'avais prévenu : j'ai la tête au fond du ...