Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recuperation des donnees de cases a cocher avec php

1 réponse
Avatar
lino
Hello! ,

Je travaille avec php et mysql sous dreamweaver mx.
J'utilise un formulaire contenant des cases à cocher de type:

Nom:
Prenom:
Activites: foot
nage
escalade
plongee
kayak

Le code est à peu pres celui la
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO fichier_inscr (nom, prenom, activites)
VALUES (%s, %s, %s )",
GetSQLValueString($_POST['nom'], "text"),
GetSQLValueString($_POST['prenom'], "text"),
GetSQLValueString($_POST['activites'], "text"));

mysql_select_db($db_connex_asso, $connex_asso);
....}

<tr valign="baseline">
<td nowrap align="right">activites</td>
<td><p>

<input <?php if
(!(strcmp($row_Recordset1['activites'],"foot"))) {echo "checked";} ?>
name="activites" type="checkbox" id="activites" value="foot" > foot
<input <?php if
(!(strcmp($row_Recordset1['activites'],"nage"))) {echo "checked";} ?>
name="activites" type="checkbox" id="activites" value="nage" > nage
<input <?php if
(!(strcmp($row_Recordset1['activites'],"escalade"))) {echo "checked";} ?>
name="activites" type="checkbox" id="activites" value="escalade" >
escalade

.......</td>
</tr>

....

Comment récuperer dans la base de données, les valeurs multiples de la
variable activites qui pour l'instant ne prend qu'une seule valeur cochée.
Sans doute qu'il faut introduire une ligne avec implode ou une boucle
foreach mais à quel niveau, quelle syntaxe?
Merci beaucoup pour votre aide!

1 réponse

Avatar
Florian Sinatra
*lino* @ 08/08/2006 23:40 :
Hello! ,


Bonsoir,

$insertSQL = sprintf("INSERT INTO fichier_inscr (nom, prenom,
activites)

VALUES (%s, %s, %s )",
GetSQLValueString($_POST['nom'], "text"),
GetSQLValueString($_POST['prenom'], "text"),
GetSQLValueString($_POST['activites'], text"));


Donc tu crois que $_POST['activites'] est une chaîne qui contiendrait
comme par magie les valeurs de *toutes* tes checkboxes ?

<input <?php if
(!(strcmp($row_Recordset1['activites'],"foot"))) {echo "checked";} ?>
name="activites" type="checkbox" id="activites" value="foot" > foot
<input <?php if
(!(strcmp($row_Recordset1['activites'],"nage"))) {echo "checked";} ?>
name="activites" type="checkbox" id="activites" value="nage" > nage
<input <?php if
(!(strcmp($row_Recordset1['activites'],"escalade"))) {echo "checked";} ?>
name="activites" type="checkbox" id="activites" value="escalade" >
escalade


Tu as trois fois le même id. C'est mal. Un id est unique :
<http://www.la-grange.net/w3c/html4.01/struct/global.html#adef-id>
(Et tu pourrais utiliser un label avec :
<http://www.la-grange.net/w3c/html4.01/interact/forms.html#edef-LABEL>.)

Comment récuperer dans la base de données, les valeurs multiples de la
variable activites qui pour l'instant ne prend qu'une seule valeur cochée.
Sans doute qu'il faut introduire une ligne avec implode ou une boucle
foreach mais à quel niveau, quelle syntaxe?
Merci beaucoup pour votre aide!


Avant de vouloir tout imploser tu ferais mieux de vérifier (print_r est
ton ami) si tes données ont bien été *toutes* envoyées... en
l'occurrence la seule envoyée sera la dernière cochée : elle écrase les
valeurs précédentes pour la variable scalaire "activites".
Il suffit de rajouter des crochets : name="activites[]" pour la
transformer en tableau :
<http://ch2.php.net/manual/fr/faq.html.php#faq.html.arrays>
Maintenant tu peux imploser ton tableau.

Bonne nuit :-)

PS : Est-tu sûr d'utiliser les <table> à bon escient ?
<http://openweb.eu.org/articles/problemes_tableaux/>