PHP : Problème avec le contenu d'une variable

Kaldorei -  
 manolo -
Bonjour,

J'ai un problème avec l'utilisation du contenu d'une de mes variables ; J'explique :

Au début de mon script, je récupère une variable obtenue gràce a un formulaire sur la page précédente :
-> $CodeTypeProduit = $_POST['ChoixProduit'];

Je vais ensuite récupérer les codes de différents produits dans ma base de données a l'aide d'une requète, que je stocke un à un (boucle) dans la variable : $IDSousProduit

Dans cette mème boucle, je compare la valeur de mes deux variables précédentes, et si le code correspond j'affiche un formulaire avec le libelle etc.. :

if ($IDSousProduit == $CodeTypeProduit)
{
echo '<tr>';
echo '<td>';
echo '<INPUT TYPE=CHECKBOX VALUE="'.$IDSousProduit.'">'.$LibelleSousProduit.' ';
echo '</td>';
echo '<td>';
echo '<INPUT TYPE=TEXT Value="Quantite">';
echo '</td>';
echo '</tr>';
}

Mon problème, c'est qu'il ne rentre jamais dans la boucle.
Hors, il y a des codes correspondants.
Pour le vérifier, j'affiche le contenu des deux variables avec un echo :
-> echo $CodeTypeProduit .' - '. $IDSousProduit;

Dans le test-exemple que je présente, $CodeTypeProduit contient la valeur "30".
Hors, parmi tous les $IDSousProduit, il y en a bien qui ont la valeur "30", comme $CodeTypeProduit.
Cependant, le programme n'est jamais rentré dans la boucle (j'ai fais des test).

J'ai alors eu l'idée d'essayer de réaffecter manuellement le contenu de ma variable $CodeTypeProduit juste avant la boucle, après l'affichage des valeurs que je viens de faire :
-> $CodeTypeProduit = 30;

Et là, miracle !
Le programme passe bien dans ma boucle quand les deux variables correspondent, et m'affiche le résultat attendu.
Cependant, comme mon $CodeTypeProduit varie en fonctions des résultats du formulaire précédent, il ne sera pas toujours égal à "30".. donc je ne sais pas comment faire.
Quand j'affiche la valeurs, elle est bonne, mais le "if" ne passe pas, alors que quand je remet la mème valeur "à la main" dans la variable, le "if" passe comme il faut.

J'ai fouillé pendant un bon momment mais je n'ai trouvé aucune solution à mon problème.. si quelqu'un aurait un conseil ou une hypothèse a m'apporter, il est le bienvenu ! ^_^

Merci d'avance.

Kaldorei
A voir également:

12 réponses

Sasa93 Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   20
 
Bonjour ta essaye de mettre un seul = au lieu de deux dans ton if ?
0
Ozimandias Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   46
 
Oula attention,

if ($toto = $tata) ça affecte la valeur de tata à toto

alors que

if ($toto == $tata) ça vérifie que toto est égal à tata

C'est pas du tout pareil.
0
Ozimandias Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   46
 
[cite]Je vais ensuite récupérer les codes de différents produits dans ma base de données a l'aide d'une requète, que je stocke un à un (boucle) dans la variable : $IDSousProduit [cite]

ta variable $IDSousProduit serait-elle un tableau (array)?

Si c'est le cas, if ($IDSousProduit == $CodeTypeProduit) ne peut pas fonctionner car un array ne peut être égal à une valeur.
0
Kaldorei
 
Le problème, c'est que quand j'affecte la valeur "30" à ma variable $CodeTypeProduit "Manuellement", la comparaison d'égalité avec le "if" marche correctement, donc mes deux variables ne sont pas incompatibles :-(
0
Ozimandias Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   46 > Kaldorei
 
Effectivement, mais en PHP les variables peuvent changer de type suivant ce qu'on leur gave ; quand tu fais:

$CodeTypeProduit = 50;
$CodeTypeProduit = '50';


Ta variable est tour à tour, un INT puis un STRING.

Donc quand tu affectes manuellement une valeur à ta variable, c'est sur c'est 30. Mais dans le cas de ta boucle il se pourrait que ce soit un tableau.

Pour le savoir c'est simple, fait : echo $CodeTypeProduit à la sortie de ta boucle et sans lui affecter une valeur autre. S'il t'écris array c'est que c'est un tableau.
0
Kaldorei > Ozimandias Messages postés 505 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai dejà fait un echo $CodeTypeProduit après son affectation pour vérifier, et la valeur s'affiche.

$CodeTypeProduit est une variable que je récupère d'un formulaire précédent grace à $CodeTypeProduit = $_POST['ChoixProduit'];

J'ai essayé de mettre directement $_POST['ChoixProduit'] a la place de $CodeTypeProduit dans mon "if", mais j'obtiens le mème résultat :-/
0
Sasa93 Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   20
 
Il a pas tort ^^
0
Sasa93 Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   20
 
@Ozimandias : ok autant pour moi alors j'ai confondus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ozimandias Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   46
 
Aucun soucis, c'est le genre d'erreur que tout le monde fait et qui t'entraine dans une nuit blanche où tu passes ton temps à t'arracher les cheveux pour un = oublié...

0
Kaldorei
 
Un petit up' pour mon topic.. j'ai toujours pas trouvé de solution :-|
0
le père
 
Bonjour

Essaye de faire
echo '**',$IDSousProduit,'**',$CodeTypeProduit,'**';
JUSTE AVANT le if
Pour voir si les valeurs sont bien égales au moment de la comparaison, ou s'il n'y a pas un espace qui se glisse sournoisement quelque part
0
Kaldorei
 
Je viens faire ce que tu m'as et j'ai remarqué qu'un espace se glissait a chaque fois a la fin de ma variable $IDSousProduit.

J'avais pensé a vérifier ça pour $CodeTypeProduit, mais pas pour $IDSousProduit.

Je vais essayer de régler ça quand je récupère ma chaine ^^

Merci ! :-)
0
le père
 
C'est probablement toi qui ajoutes cet espace au moment d'insérer ta donnée dans la base. Regarde bien ta requête d'insertion ou de mise à jour.
0
Kaldorei
 
En fait, je travaille sur une base de données déjà existante, et (relativement) très mal faite, certainement la récupération des données d'un ancien logiciel.
Donc je nage un peu pour essayer de comprendre la logique du bazar ..

Enfin bref, merci pour ton aide! :-)
0
Utilisateur anonyme
 
kaldorei d'ivalice??
0
manolo
 
si tu veux enlever les blancs au début ou à la fin du post que tu récupère ecris :
$mavar1=ltrim($_POST['mavar']);
$mavar=rtrim($mavar1);

tu peux ajouter si tu veux :
$mavar=HTMLENTITIES($mavar2,ENT_QUOTES);
mais dans le code au dessus $mavar devient $mavar2
0