Page 1 sur 1

boucle if ne fonctionne pas

Posté : 04 déc. 2011, 23:30
par mirlipi
Bonjour, j'ai besoin d'aide car mon if ne fonctionne pas, j'ai mis plusieurs balises echo pour tester les valeurs des variables de mon if. Le problème est que même quand les 2 valeurs sont égales tout passe dans le else merci de votre aide.
<?php
if(isset($_POST['listexercice']))
{
$exe_code=$_POST['listexercice'];
echo 'form';
echo $exe_code;
}
else
{
echo 'vide';
$exe_code=0;
echo $exe_code;
}
?>

<td>
<label for="listexercice">exercice : </label>
</td>
<td>
<select name="listexercice" id="listexercice">
<?php



$reponselistexe = $bdd->query('SELECT * FROM exercice order by exe_nom');

/*recuperation de toutes les valeurs de la table exercice*/
while ($donneeslistexe = $reponselistexe->fetch())
{
?>
<option value=" <?php echo $donneeslistexe['exe_id']; ?> "
<?php

if ($donneeslistexe['exe_id'] == $exe_code)
{
echo " 'selected' ";
echo $donneeslistexe['exe_id'];
echo "ok";
echo $exe_code;
}
else
{
echo $donneeslistexe['exe_id'];
echo "tst";
echo $exe_code;
}

?>
>
<?php echo $donneeslistexe['exe_nom']; ?> </option>
<?php } ?>
</select>
</td>

Re: boucle if ne fonctionne pas

Posté : 04 déc. 2011, 23:37
par xTG
Et avec strlen() les deux variables ont-elles la même longueur ?

Re: boucle if ne fonctionne pas

Posté : 04 déc. 2011, 23:48
par mirlipi
Merci pour la réponse rapide, je viens de tester les 2 variables renvoient la même valeur avec strlen. Mais il y a une chose bizarre strlen renvoie bien la taille de la variable non? car strlen renvoie 3 alors que mes variables contiennent le chiffre 2

Re: boucle if ne fonctionne pas

Posté : 05 déc. 2011, 07:26
par xTG
Hum pas malin de ma part de t'avoir proposé ça alors que tu fixes à 0 manuellement dans un cas.
Regardes plutôt avec var_dump(), cela te donnera le type de variable et si c'est un string la longueur.
Parce qu'à priori il y a peut être des caractères non imprimables qui sont là en trop.

Re: boucle if ne fonctionne pas

Posté : 05 déc. 2011, 12:22
par liens_geeks
Bonjour,
Pour simplifier ton debuggage, je commenterais le 1er if() {}else{}.
Au moins tu écartes le fait de modifier la valeur de ta variable $exe_code.

J'ai rajouté à ton code qqes lignes de debuggage, ça renvoie quoi dans ton navigateur?

Code : Tout sélectionner

<td> <label for="listexercice">exercice : </label> </td> <td> <select name="listexercice" id="listexercice"> <?php $reponselistexe = $bdd->query('SELECT * FROM exercice order by exe_nom'); /*recuperation de toutes les valeurs de la table exercice*/ while ($donneeslistexe = $reponselistexe->fetch()) { ?> <option value=" <?php echo $donneeslistexe['exe_id']; ?> " <?php [b]//DEBUT DEBUGGAGE echo '$donneeslistexe[\'exe_id\'] vaut : [.'$donneeslistexe['exe_id'].']<br />'; echo '$_POST[\'listexercice\'] vaut : [.'$_POST['listexercice'].']<br />'; echo '<pre>'; var_dump($donneeslistexe['exe_id']); var_dump($_POST['listexercice']); echo '</pre>' //FIN DEBUGGAGE[/b] if ($donneeslistexe['exe_id'] == $exe_code) { echo " 'selected' "; echo $donneeslistexe['exe_id']; echo "ok"; echo $exe_code; } else { echo $donneeslistexe['exe_id']; echo "tst"; echo $exe_code; } ?> > <?php echo $donneeslistexe['exe_nom']; ?> </option> <?php } ?> </select> </td>
PS : je n'ai pas testé le code rajouté, il y a peut être des fautes de syntaxe

Re: boucle if ne fonctionne pas

Posté : 06 déc. 2011, 00:06
par mirlipi
Merci pour vos contributions, je viens de tester les 2 méthodes

la méthode de Xtg renvoie la même chose:

string ' 1 ' (length=3)
string ' 1 ' (length=3)


la méthode de liens_geeks renvoie

string ' 1 ' (length=1)
string ' 1 ' (length=3)

J'en déduis donc que mes variables n'ont pas la même longueur, mais pourquoi? mystère... si je mets mon formulaire en méthode GET voilà ce qui s'affiche dans la barre d'adresse du navigateur .......&listexercice=+1+ la variable listeexercice est ma balise <select> passée en paramètre.

Re: boucle if ne fonctionne pas

Posté : 06 déc. 2011, 00:41
par sirakawa
une méthode bête:

print "==>$execode<====>$donneeslistexe['exe_id']<==";
Une suggestion pour éviter cet enchevêtrement de <?php..; ?>
c'est de :
$le_select = <select name='listexercice' id='listexercice'>";
while ($donneeslistexe = $reponselistexe->fetch())
{
   $exe_id = $donneeslistexe['exe_id'] ;
    $exe_nom = $donneeslistexe['exe_nom'];
   print "==>$execode<====>$exe_id<=="; // les <==> IMPORTENT
   $selected = ($exe_id == $execode) ? "selected= 'selected'": "";
    $le_select .= <option value='$exe_id'  $selected>$exe_nom </option>";
}
$le_select .= "</select>";

Re: boucle if ne fonctionne pas

Posté : 06 déc. 2011, 01:33
par mirlipi
Merci beaucoup, même si je n'ai pas tout compris au code je l'ai mis en place (un petit peu corrigé la syntaxe :wink: ) et cela fonctionne !!

Merci à tous les contributeurs et au temps passé sur mon problème, c'est la première fois que je poste, j'espère ne pas trop avoir besoin de posté.