Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2011, 16h18   #1
Invité régulier
 
Inscription : mars 2011
Messages : 138
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 138
Points : 5
Points : 5
Par défaut choix multiple du checkbox

Salut à tous

je suis debutant en php.

j'ai un probleme au niveau de la recuperation des resultats des checkbox via un formulaire dans ma base de donnée.

mon probleme consiste: seulement la valeur du dernier checkbox est recuperée.

voila le code

index.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
 
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
 
mysql_select_db("produits", $con);
 
$sql="SELECT * FROM prodchoisi  ";
 
$resultatsRequete = mysql_query($sql,$con);
 
 
 
/* affichage des noms des champs, selon le résultat renvoyé par MySQL + les vrai
// noms des en-têtes */
    $nombreDeChamps = mysql_num_fields($resultatsRequete);
    for ($i = 1; $i < $nombreDeChamps; $i++) {
        $nom_colonne = mysql_field_name($resultatsRequete, $i);
        if (!empty($champsVeritables)) { // si on a fait une jointure
            $nom_colonne .= "<br />({$champsVeritables[$i][0]})";
            /* emphase de la table : décommentez la ligne suivante */
			//$nom_colonne = preg_replace("[([\w]+)\.]", "<em title=\"nom de la table dont
// le champ fait partie\">$1</em>.", $nom_colonne);
 
/* autre mise en relief : que la partie différente du nom du champ (après le
// préfixe comprenant un underscore) 
            /* marche pour dotclear et wordpress, entres autres systèmes */
            $nom_colonne = preg_replace("[(.+)_(.+)\.([\w]+)]", 
"$1_<em>$2</em>.$3", $nom_colonne);
        }
		?>
 
        <table align="center"   border="0">
		<tr><td><input type="checkbox" name="choix[]" value="<?php echo $nom_colonne ?>" ></td><td><th scope=\"col\"><?php echo $nom_colonne ?></th></td></tr></table>
 
 
 
		<?php
 
    } 
    echo "\t</tr>\n";
    // FIN affichage des intitulés de champs			
 
			mysql_close($con);
?>
 
 
 
 
 
 
 
 
 
  <table align="center"   border="0">
  <tr>
    <td colspan="2" align="center"><input type="submit" value="Sauvegarder"></td>
  </tr>
 
?>



insert.php


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
$con1 = mysql_connect("localhost","root","",true);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
 
mysql_select_db("produits", $con1);
 
 
 
for($i = 0, $c = count($_POST["choix"]); $i < $c; $i++) { 
 
if(isset($_POST["choix"][$i]))
 global $prenom;
  $prenom=$_POST["choix"][$i];
 
$sql1="INSERT INTO prodchoisi ($prenom) VALUES ('oui') ";
 
 
 
 echo $prenom;
}
if (!mysql_query($sql1,$con1))
  {
  die('Error: ' . mysql_error());
  }
echo "le choix est ajouté à la table prodchoisi";
 
 
 
 
 
 
mysql_close($con1)
 
?>
j'explique encore: je veux cocher plusieurs checkbox à la fois,j'aime envoyer la chaine "oui" à la base en cas ou la case est coché,mais le probleme est qu'il ne prend en consideration que la derniere case .


merci de m'aider
bennour.mohamed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 17h00   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Utilise cette forme pour que plusieurs champs de formulaires ayant le même nom soient envoyés:
Code :
1
2
3
<input type="checkbox" name="ck[]" value="1" />
<input type="checkbox" name="ck[]" value="2" />
<input type="checkbox" name="ck[]" value="3" />
Coté PHP, $_POST['ck'] sera un tableau.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 18h41   #3
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Citation:
Envoyé par Benjamin Delespierre Voir le message
...
Coté PHP, $_POST['ck'] sera un tableau.
J'ajoute simplement ceci pour parcourrir $_POST['ck']
Code :
1
2
3
4
 
foreach($_POST['ck'] as $value){
echo $value .'<br />';
}
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h53.


 
 
 
 
Partenaires

Hébergement Web