PHP : Problème avec le contenu d'une variable
Kaldorei
-
manolo -
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
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:
- PHP : Problème avec le contenu d'une variable
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
12 réponses
[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.
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.
Effectivement, mais en PHP les variables peuvent changer de type suivant ce qu'on leur gave ; quand tu fais:
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.
$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.
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 :-/
$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 :-/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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é...
Bonjour
Essaye de faire
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
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
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 ! :-)
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 ! :-)
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.
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.