Manque une case ! checked -php mysql strpos
Résolu
Sunseeker
-
Sunseeker -
Sunseeker -
Bonjour,
Soit mes checkbox dans cet ordre : Chenille, Papillon, Fleur, Oiseau, Soleil, Planète...
Je coche "Chenille, Papillon, Fleur, Oiseau" et insère dans mysql.
echo $data['options'] me renvoit 'chenille,papillon,fleur,oiseau'. OK.
<input type="checkbox" value="oiseau" <?php if(strpos($data['options'],'oiseau')) echo 'checked="checked"'; ?> name="options[]" />
Lors de l'affichage from mysql des choix de l'utilisateur, les cases sont bien cochées sauf chenille, la première de la liste de $data['options'];
Si je décoche 'chenille' et insert into mysql, le echo $data['options'] me renvoit toute la liste cochée (soit: 'papillon,fleur,oiseau'), mais parmi les checkbox sensées être checked, la première option de la liste reste décochée( ici papillon). Pourquoi?
Merci pour vos lumières !
Soit mes checkbox dans cet ordre : Chenille, Papillon, Fleur, Oiseau, Soleil, Planète...
Je coche "Chenille, Papillon, Fleur, Oiseau" et insère dans mysql.
echo $data['options'] me renvoit 'chenille,papillon,fleur,oiseau'. OK.
<input type="checkbox" value="oiseau" <?php if(strpos($data['options'],'oiseau')) echo 'checked="checked"'; ?> name="options[]" />
Lors de l'affichage from mysql des choix de l'utilisateur, les cases sont bien cochées sauf chenille, la première de la liste de $data['options'];
Si je décoche 'chenille' et insert into mysql, le echo $data['options'] me renvoit toute la liste cochée (soit: 'papillon,fleur,oiseau'), mais parmi les checkbox sensées être checked, la première option de la liste reste décochée( ici papillon). Pourquoi?
Merci pour vos lumières !
A voir également:
- Manque une case ! checked -php mysql strpos
- Easy php - Télécharger - Divers Web & Internet
- Aller à la ligne dans une case excel - Guide
- Mysql community server - Télécharger - Bases de données
- Mysql error in file: /engine/classes/mysql.php at line 53 ✓ - Forum Réseaux sociaux
- Excel case choix multiple - Guide
3 réponses
Bonjour
Tu as une case de vide ? ^^
C'est parce que strpos te rend 0 quand la chaîne recherchée est dès le début, et que pour PHP, 0 c'est false.
Il faut donc tester avec !== :
qui teste que le résultat et son type.
Ce (petit) problème est très clairement mentionné dans la doc de strpos :
https://www.php.net/manual/fr/function.strpos.php
Tu as une case de vide ? ^^
C'est parce que strpos te rend 0 quand la chaîne recherchée est dès le début, et que pour PHP, 0 c'est false.
Il faut donc tester avec !== :
if(strpos($data['options'],'oiseau')!==false)
qui teste que le résultat et son type.
Ce (petit) problème est très clairement mentionné dans la doc de strpos :
https://www.php.net/manual/fr/function.strpos.php
Salut,
La fonction strpos retourne la position numérique de la première occurrence dans la chaine.
Si $data['options'] vaut 'chenille,papillon,fleur,oiseau', alors l'instruction
retourne la valeur 0 (la position dans la chaîne commence à 0, et non pas à 1).
La valeur 0 convertie en booléen correspond à FALSE.
Donc la condition
est fausse si $data['options'] vaut 'chenille,papillon,fleur,oiseau'. CQFD
Il faut donc vérifier que la fonction strpos te retourne bien une valeur différente de FALSE (indiquant que la chaine recherchée n'est pas trouvé) et pas une valeur correspondant à FALSE une fois convertie (tel que l'entier 0), soit :
Bonne journée
La fonction strpos retourne la position numérique de la première occurrence dans la chaine.
Si $data['options'] vaut 'chenille,papillon,fleur,oiseau', alors l'instruction
strpos($data['options'],'chenille')
retourne la valeur 0 (la position dans la chaîne commence à 0, et non pas à 1).
La valeur 0 convertie en booléen correspond à FALSE.
Donc la condition
if (strpos($data['options'],'chenille'))
est fausse si $data['options'] vaut 'chenille,papillon,fleur,oiseau'. CQFD
Il faut donc vérifier que la fonction strpos te retourne bien une valeur différente de FALSE (indiquant que la chaine recherchée n'est pas trouvé) et pas une valeur correspondant à FALSE une fois convertie (tel que l'entier 0), soit :
if(strpos($data['options'],'chenille') !== FALSE)
Bonne journée
Merci merci !
Ok, je croyais pouvoir prendre un raccourci, mais c'est raté !!
Au fait, tant que t'es là :D, saurais-tu répondre à ma question d'hier (sur la page en cours / Sunseeker - Dernière réponse le 22 juin 2014 à 19:13) intitulée : "PHP - else non pris en compte" ?
Ca me dépasse et vu que dans l'heure il me manquait une case... :))
Merci si tu as une idée ainsi que pour la case retrouvée!
Ok, je croyais pouvoir prendre un raccourci, mais c'est raté !!
Au fait, tant que t'es là :D, saurais-tu répondre à ma question d'hier (sur la page en cours / Sunseeker - Dernière réponse le 22 juin 2014 à 19:13) intitulée : "PHP - else non pris en compte" ?
Ca me dépasse et vu que dans l'heure il me manquait une case... :))
Merci si tu as une idée ainsi que pour la case retrouvée!