Problème avec chekbox

[Résolu]
Signaler
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007
-
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007
-
salut à tous,

Un problème avec mes checkbox envoyés dans ma table. Un seul choix apparait dans ma table de plus je n'arrive pas à afficher les loisirs cochés.
loisirs de type set ("football","natation","internet","Tennis", "lecture")

Bout de code de mon formulaire en html

<tr>


<td> Loisirs</td>


<td>


Football


Natation


Tennis


Lecture


Internet


</td>


</tr>

script d'insertion dans la table


$requete = "INSERT INTO Table (num,pseudo ,motdepasse,loisirs, description )


VALUES ('','". $pseudo ."', '".$motdepasse."','".$loisirs."','".$description."')";



Affichage d'une fiche

$select = "SELECT * FROM table WHERE pseudo='$pseudo'";


$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );


$total = mysql_num_rows($result);




if($total) {


while ($row = mysql_fetch_array($result)) {




echo '<table border="0" bgcolor="">'."\n";




echo '<tr>';


echo '<td>'.$row["pseudo"].'</td>';


echo '</tr>';


echo '<tr>';


echo '<td>.$row["loisirs"].'</td>';


echo '<td></td>';


echo '</tr>';


.
.
.

5 réponses

Messages postés
181
Date d'inscription
jeudi 27 février 2003
Statut
Membre
Dernière intervention
2 mars 2009

salut,

les loisirs sont bien récupérés, mais sous forme de tableau donc par
exemple tu auras dans $_POST['loisirs'] :
Array([0]=>'Football',[1]=>'Internet')

ma solution serait de passer ton tableau sous forme de chaine pour que la requête mysql soit valide :

if(isset($_POST['loisirs']))

{

$loisirs = $_POST['loisirs'];

$str_loisirs = '';



if(count($loisirs)>0)

{

foreach ($loisirs as $un_loisir)

{

$str_loisirs .= $un_loisir . ',';

}



/* on enleve la derniere virgule */

$str_loisirs = substr($str_loisirs,0,strlen($str_loisirs)-1);

}

}

et donc dans ta requete tu remplaces $loisirs par $str_loisirs...



ça devrait marcher

puisque pour insérer dans une colonne de type set, les valeurs doivent
être séparées par des virgules
(http://dev.mysql.com/doc/mysql/en/set.html)
Messages postés
181
Date d'inscription
jeudi 27 février 2003
Statut
Membre
Dernière intervention
2 mars 2009

Re,

Pour la récupération tu as donc dans $row['loisirs'] les loisirs sous forme loisir1,loisir2,...

Une des solutions consiste à utiliser explode :

$tableau_loisirs = explode($row['loisirs'],',');



et ensuite :

- soit tes valeurs sont fixes donc tu as toujours le même formulaire (ici tes 5 choix)

et donc pour chaque tu fais :

echo 'Football
';




- soit tu veux afficher uniquement les choix cochés (pas vraiment
l'utilité car sinon tu peux les laisser en texte) et dans ce cas tu
pourrais faire :

foreach($tableau_loisirs as $un_loisir)

{

echo 'checked="checked" />' . $un_loisir . '
';


}



...
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

Voici ce que j'aimerai afficher

Loisirs: fooball, tennis, internet

qui sont les cases cochées par l'utilisateur. car je ne pige pas encore et ne sais pas ou je dois faire les modifs c'est dans le script de insertion ou le script qui affiche les données
Messages postés
181
Date d'inscription
jeudi 27 février 2003
Statut
Membre
Dernière intervention
2 mars 2009

Donc si tu veux n'afficher que ça dans ta fiche tu as juste à afficher ton $row['loisirs'];

et pour l'insertion normalement la solution que je t'ai fournie doit te permettre de faire l'insertion correctement
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

merci cela marche à merveille.