question avec PHP et MySql dans un formulaire

Eléphant du PHP | 92 Messages

10 févr. 2011, 15:29

Bonjour,
J’ai une question avec PHP et MySql...


Dans ma table de mySql, il y a 3 champs : bd_1a, bd_2b, bd_3c

Dans les champs, il peut avoir les valeurs [on] ou bien vides (il n'y a rien)...
En plus, dans les 3 champs ci-dessus, du même enregistrement (donc dans la même ligne) tous les champs seront vide, ou tous les ont la valeur "on" ou bien quelques-uns vide et les autres la valeur [on]


avec mon code ci-dessous, j'affiche mon checkBox [1a] sélectionné s'il y a [on] dans mon champ [bd_1a]

Code : Tout sélectionner

<?php //checkbox------------------------------------- $rep_checkbox= mysql_query("SELECT bd_1a, bd_2b, bd_3c FROM $table_db WHERE id=$var_id"); $var_1a= $ligne_liste_checkbox['bd_1a']; $option_1a = ($var_1a) ? 'checked="checked"' : null; $var_2b= $ligne_liste_checkbox['bd_2b']; $option_2b = ($var_2b) ? 'checked="checked"' : null; $var_3cb= $ligne_liste_checkbox['bd_3c']; $option_3c = ($var_3c) ? 'checked="checked"' : null; ?> <label> <input type="checkbox" name="1a" id="1a" <?php echo $option_1a; ?> /> </label> <label> <input type="checkbox" name="2b" id="2b" <?php echo $option_2b; ?> /> </label> <label> <input type="checkbox" name="3c" id="3c" <?php echo $option_3c; ?> /> </label>
Voici ma question :

Je vais supprimer 2 checkbox suivants : 2b et 3b
et je vais garder mon 1er checkbox 1a et je vais qu'il soit [checked] lorsqu'il y a la valeur [on] dans un de trois champs (bd_1a, bd_2b, bd_3c)
et s'il n'y a pas de valeur dans les trois champs, je veux que mon checkbox ne soit pas sélectionné...

À votre avis, comment je peux faire cela, est-ce que avez vous une idée ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 févr. 2011, 15:35

salut,

ce que tu a commencé est bon mise à part qu'il n'y a pas de condition. alors par le jeux des cats automatique de php peut être que ça fonctionne mais c'est super crade ;)

donc $option_1a = ($var_1a =='[on]) ? 'checked="checked"' : ' ';

ça doit fonctionner, si .................... tu ajoute un mysql_fetch_array pour exploiter la ressource mysql du mysql query :)
donc $ligne_liste_checkbox = mysql_fetch_array($rep_checkbox); après le mysql_query

je te conseil de :
- monter ton niveau d'erreur sur la plateform de dev (en général E_ALL | E_STRICT, dans le php.ini ou avec un ini_set, ou avec la fonction error_repporting())
- regarder (de nouveau ?) les tutos sur l'utilisation de mysql tu a des manque à ce niveau
- de regarder dans la doc de php les fonctions citées ci dessus ;) (http://www.php.net)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 672 Messages

10 févr. 2011, 15:41

Bonjour.

C'est de la logique, ça... (ne le prends pas mal, hein, je parle de logique mathématique)
En gros, SI (champ1 est à [on] OU champ2 est à [on] OU champ3 est à [on]) on check.

En php, on pourrait avoir (par exemple) :
$var_1a= $ligne_liste_checkbox['bd_1a'];
$var_2b= $ligne_liste_checkbox['bd_2b'];
$var_3cb= $ligne_liste_checkbox['bd_3c'];
$option = ($var_1a) && ($var_2b) && ($var_3c) ? 'checked="checked"' : null;

Eléphant du PHP | 92 Messages

10 févr. 2011, 16:14

Merci macgawel,

avec la logique ça marche...

mais comme tu dis il faut mettre la condition ou [||]...

alors j'ai corrigé les opérateurs dans ton code et ça marche....
$option = ($var_1a) || ($var_2b) || ($var_3c) ? 'checked="checked"' : null;
:D

merci et bonne journée

ViPHP
xTG
ViPHP | 7331 Messages

10 févr. 2011, 16:17

Comme je l'ai dit sur phpDebutant, la valeur null c'est moche pour une chaîne de caractères que tu affiches forcement. ;)

Eléphant du PHP | 92 Messages

10 févr. 2011, 16:22

oui je l'ai changé, merci encore

      $option_1a = ( $var_1a == "on" || $var_2b == "on" || $var_3c == "on" )? 'checked="checked" : "";