Problème avec chekbox

Résolu
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007 - 10 sept. 2005 à 12:04
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007 - 10 sept. 2005 à 13:04
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

aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
10 sept. 2005 à 12:28
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)
3
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
10 sept. 2005 à 12:38
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 . '
';


}



...
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
10 sept. 2005 à 12:48
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
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
10 sept. 2005 à 12:52
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
10 sept. 2005 à 13:04
merci cela marche à merveille.
0
Rejoignez-nous