Comparaison

Fermé
MissLily95 Messages postés 7 Date d'inscription mercredi 25 novembre 2015 Statut Membre Dernière intervention 2 décembre 2015 - 2 déc. 2015 à 12:02
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 - 2 déc. 2015 à 14:14
Bonjour, j'ai un problème qui peut paraître simple mais je n'arrive pas à m'en sortir.
Je veux comparer deux chaînes de caractère, cependant avec == ou === il ne passe jamais dans la condition.

Voici un bout de mon code :
$parfum = $fruits.$chocolat.$nature.$autre; // Ces variables sont des chiffres (1,2,3,4)
if ($parfum == '1'){
$req ="SELECT NomRecette, DateRecette, Pseudo FROM recette WHERE IdTexture = $texture and IdParfum = 1 ORDER BY NomRecette ASC";
}

En gros je veux que si ma chaine de caractère stockée dans parfum ne comporte que le chiffre 1, le programme utilise cette requête.
J'ai essayé beaucoup de chose et en vérifiant bien que ma variable parfum est une chaîne de caractère (en l'affichant avec un echo) il ne passe jamais dans la condition.
Merci d'avance :)
A voir également:

2 réponses

Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
2 déc. 2015 à 12:23
Salut !
Je ne comprend pas trop la logique de concatener les chiffres 1 2 3 4 dans $parfum.

Pour quoi ne pas faire un
if($parfum==$fruits)
{
// ma requete
}
else
{
// sinon
}


En disant == tu vérifies si $parfum est égal à 1 et non pas si $parfum contient 1, ce qui est très différent.

Or ton echo $parfum ne doit pas te donner 1 et donc c'est normal que ça ne passe pas dans l'instruction if.
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
2 déc. 2015 à 12:31
Je vais proposer une autre solution plus adéquate peut-être.
Tu stockes tout les résultats possible dans un tableau :

$parfum=array(1=>$fruits, 2=>$chocolat, 3=>$nature, 4=>$autre);



A ce moment là tu peux vérifier avec in_array() si le numéro que tu cherches est bien dans le tableau ou non.
if(in_array($fruits,$parfum))
{
 // ma requete
}



La déjà on est plus sur la recherche de ce que la variable contient ou non.
0
MissLily95 Messages postés 7 Date d'inscription mercredi 25 novembre 2015 Statut Membre Dernière intervention 2 décembre 2015
Modifié par MissLily95 le 2/12/2015 à 12:50
Merci pour ta réponse :)
J'essaye comme tu me dis et je vois la solution !
Juste est-ce que je peux récupérer le nombre de case pas vide de mon array ? Avec quelle fonction ?
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
Modifié par Yuh12 le 2/12/2015 à 14:15
Hmm.. je crois qu'il n'y a pas de cases vide à proprement parler.
Il peut y avoir des variables qui sont égales à 0, mais les cases ne seront pas vide.
Alors il faut parcourir le tableau :
foreach ($tableau as $ligne)
{
 if($ligne!=0)
 {
 // alors
 }
}

Pour chaque ligne du tableau, on gère la ligne SEULEMENT si elle n'est pas égale à 0.

Je propose des pistes de recherches un peu au pif mais en vrai je comprend pas bien ce que tu veux faire.
Si tu donnes un peu plus de détails sur ton site/programme/énnoncé d'exos ou quoi ce serait plus facile d'aider.
0