Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

probleme IF.... AND


Messages recommandés

Invité Schineau
Posté(e)

bonjour,

 

je débute en PHP et j'ai beau chercher, je ne trouve pas ou j'ai fait une erreur dans mon code

 

<?php

$X_dep = $_POST['X_dep'];
$X_arr = $_POST['X_arr'];
$Y_dep = $_POST['Y_dep'];
$Y_arr = $_POST['Y_arr'];

if ($X_dep == $Y_dep AND $X_arr == $Y_arr)
{
header("Location: cible1.php");
exit;
}
else
{
header("Location: cible.php");
exit;
}
?>

 

ce code me renvoie tout le temps sur cible.php même si la condition est remplie.

 

ou ai-je fait une erreur ?

 

Merci pour vos réponses.

Posté(e)
ce code me renvoie tout le temps sur cible.php même si la condition est remplie.

ou ai-je fait une erreur ?

L'erreur vient du fait que tu assumes que la condition est remplie alors que vraisemblablement si ton programme choisit toujours l'option 2 c'est que la condition n'est pas remplie.

 

Questions :

- avec quel jeu de valeurs as-tu testé ce programme ?

- de quelle manière envoies-tu ces valeurs à ton programme ?

- au lieu de faire un header("Location: ..."); pourquoi ne pas faire afficher les valeurs reçues à ton programme ?

- que t'affiche-t-il pour les différentes valeurs de ton jeu de test ?

Question subsidiaire : pourquoi avoir choisi l'opérateur "AND" et pas "&&" ?

Posté(e)
if ( ($X_dep == $Y_dep) AND ($X_arr == $Y_arr) )

Quand j'ai des doutes, je mets des parenthèses logiques. Si elles sont inutiles, elles ne font jamais de mal :P

j'ai essayé les parenthèses, le résultat est le même.

 

L'erreur vient du fait que tu assumes que la condition est remplie alors que vraisemblablement si ton programme choisit toujours l'option 2 c'est que la condition n'est pas remplie.

 

Questions :

- avec quel jeu de valeurs as-tu testé ce programme ?

- de quelle manière envoies-tu ces valeurs à ton programme ?

- au lieu de faire un header("Location: ..."); pourquoi ne pas faire afficher les valeurs reçues à ton programme ?

- que t'affiche-t-il pour les différentes valeurs de ton jeu de test ?

Question subsidiaire : pourquoi avoir choisi l'opérateur "AND" et pas "&&" ?

- de quelle manière envoies-tu ces valeurs à ton programme ?

voila le code source des valeurs

<body>
<form action="ile.php" method="post">
<p>Dans un premier temps, entrez les coordonnées des ville de départ et d'arrivée</p>
<p> <table width="14%" border="0">
 <tr>
<td width="45%">ville de départ :</td>
<td width="55%"><input name="X_dep" type="text" size="1"  maxlength=2 width="20"/> : <input name="Y_dep" type="text" size="1" maxlength=2 width="20"/></td>
</tr>
 <tr>
<td>ville d'arrivée : </td>
<td><input name="X_arr" type="text" size="1" maxlength=2 width="20"/> : <input name="Y_arr" type="text" size="1" maxlength=2 width="20"/></td>
</tr>
</table>
<p><input type="submit" value="Valider" /></p>

</form>
</body>

 

- avec quel jeu de valeurs as-tu testé ce programme ?

toutes valeurs comprise entre 0 et 99

 

- au lieu de faire un header("Location: ..."); pourquoi ne pas faire afficher les valeurs reçues à ton programme ?

pas bête, je n'y avais pas penser.

j'ai modifier le else pour qu'il m'affiche les valeurs reçues et le résultat est le même, il m'affiche les valeurs qu'elles soient identiques ou différentes.

 

Question subsidiaire : pourquoi avoir choisi l'opérateur "AND" et pas "&&" ?

j'ai essayer les deux, aucun ne fonctionne.

Posté(e)

J'ai testé ton code avec les valeurs suivantes, et j'obtiens le bon comportement :

$X_dep = 32
$Y_dep = 32
$X_arr = 12
$Y_arr = 12

$X_dep = 12
$Y_dep = 32
$X_arr = 12
$Y_arr = 32

Dans le premier cas j'obtiens une redirection vers cible1.php, et dans le second j'obtiens une redirection vers cible.php.

J'ignore pourquoi de ton côté en testant "toutes les valeurs entre 0 et 99" soit cent millions de combinaisons tu n'as jamais réussi à obtenir ce résultat...

Posté(e) (modifié)

OK, je viens de comprendre......

 

au lieu de

if ($X_dep == $Y_dep AND $X_arr == $Y_arr)

 

je cherchais a faire

if ($X_dep == $X_arr AND $Y_dep == $Y_arr)

 

je suis un gros boulet :P

Modifié par Schineau

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...