enregistrement choix multiple dans mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : enregistrement choix multiple dans mysql

par Truc » 01 nov. 2006, 19:37

Pour des raisons de normalisation et facilité de manipulation des données.

Si tu recherches un élément précis tu aura beaucoup de mal à le retrouver.

Laisse tomber l'idée "Enum" 8-[
dans ton cas c'est plus un type SET (pour pouvoir enregistrer plusieurs choix, même s'il y a plusieurs valeur dans un même champ la manipulation est plus simple)

Petit lien pour plus d'explications

merci pour la solution, mais plus de détails svp

par turtle » 01 nov. 2006, 11:42

j'ai utilisé un implode et cela fonctionne sans souci.
Pourqui ce n'est pas une bonne idée de mettre autant de valeurs dans un seul champs?
quel est l'avantage de enum par rapport à varchar ?

par Truc » 27 oct. 2006, 22:45

Salut,

Tu n'oublirais pas une concaténation pour reprendre les choix d'avant ?
$pdj=$pdj . $cle.' : '.$valeur.' - ';
ou
$pdj .= $cle.' : '.$valeur.' - '; // le point juste avant = 
Sinon tu peux passer tout le tableau dans implode() pour former une chaine
$variable = implode("-",$ton_tableau);
Ceci dit ce n'est pas vraiement la bonne manière pour enregistrer des données.... tout dans un même champ :?

Les "$cle" ne sont pas utiles !
Et tu pourrais passer ton type de champ en "enum" (au lieu de varchar certainement)

enregistrement choix multiple dans mysql

par turtle » 27 oct. 2006, 11:48

[quote]pb: j'ai des 3 champs à choix multiple (checkbox). Lorsque je les enregistre dans la base sql, un seul choix apparait, précédé de "0:" ou "1:" ou "2:"

code formulaire html :

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Régime Alimentaire</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css"> <!-- body { background-color: #D9E8E5; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 90%; color: #333333; } p { text-align: center; } legend { font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; font-size: 110%; color: #414B56; } .fleft { float: left; width: 200px; } .largeur { width: 200px; } --> </style> </head> <body> <p>Régime Alimentaire Célien</p> <form method="post" name="form1" action="traitement.php"> <fieldset> <legend>&nbsp;Global&nbsp;&nbsp;</legend><br /> <label>Date :&nbsp;<input name="date" type="text" size="12" maxlength="10" />&nbsp;(ex: 10/10/2006)</label><br/> <div>&nbsp;</div> <label>Qualité du sommeil :&nbsp;<input name="nuit" type="radio" value="bonne" />Bonne<input name="nuit" type="radio" value="moyenne" />Moyenne<input name="nuit" type="radio" value="mauvaise" />Mauvaise</label> <div>&nbsp;</div> <div>Oui/Non</div> <label><input name="wc" type="radio" value="oui" /></label> <label><input name="wc" type="radio" value="non" />WC</label><br/> <label><input name="sport" type="radio" value="oui" /></label> <label><input name="sport" type="radio" value="non" />Sport</label><br/> <label><input name="gluten" type="radio" value="oui" /></label> <label><input name="gluten" type="radio" value="non" />Gluten</label><br/> <label><input name="caseine" type="radio" value="oui" /></label> <label><input name="caseine" type="radio" value="non" />Caseine</label><br/> <label><input name="soja" type="radio" value="oui" /></label> <label><input name="soja" type="radio" value="non" />Soja</label><br/> <label><input name="crise" type="radio" value="oui" /></label> <label><input name="crise" type="radio" value="non" />Crise</label><br/> </fieldset> <fieldset> <legend>&nbsp;Petit Déjeuner&nbsp;&nbsp;</legend><br /> <div class="fleft"> <label><input type="checkbox" name="pdj[]" value="Rien" />Rien</label><br/> <label><input type="checkbox" name="pdj[]" value="yaourt" />Yaourt</label><br/> <label><input type="checkbox" name="pdj[]" value="Yaourt soja" />Yaourt soja</label><br/> <label><input type="checkbox" name="pdj[]" value="Crepes nutella" />Crepes nutella</label><br/> </div> <div class="fleft"> <label><input type="checkbox" name="pdj[]" value="Viennoiserie" />Viennoiserie</label><br/> <label><input type="checkbox" name="pdj[]" value="Compotes" />Compotes</label><br/> <label><input type="checkbox" name="pdj[]" value="Fruit" />Fruit</label><br/> <label><input type="checkbox" name="pdj[]" value="Pain" />Pain</label><br/> </div> </fieldset> <br /> <fieldset> <legend>&nbsp;Déjeuner&nbsp;&nbsp;</legend><br /> <div class="fleft"> <label><input type="checkbox" name="dj[]" value="Rien" />Rien</label><br/> <label><input type="checkbox" name="dj[]" value="Légumes" />Légumes</label><br/> <label><input type="checkbox" name="dj[]" value="Pates" />Pates</label><br/> <label><input type="checkbox" name="dj[]" value="Riz" />Riz</label><br/> </div> <div class="fleft"> <label><input type="checkbox" name="dj[]" value="Pommes de terre" />Pommes de terre</label><br/> <label><input type="checkbox" name="dj[]" value="Féculent sans gluten" />Féculent sans gluten</label><br/> <label><input type="checkbox" name="dj[]" value="Viande rouge" />Viande rouge</label><br/> <label><input type="checkbox" name="dj[]" value="Viande blanche" />Viande blanche</label><br/> </div> <div class="fleft"> <label><input type="checkbox" name="dj[]" value="Poisson" />Poisson</label><br/> <label><input type="checkbox" name="dj[]" value="yaourt" />Yaourt</label><br/> <label><input type="checkbox" name="dj[]" value="Yaourt soja" />Yaourt soja</label><br/> <label><input type="checkbox" name="dj[]" value="Crepes nutella" />Crepes nutella</label><br/> </div> <div class="fleft"> <label><input type="checkbox" name="dj[]" value="Viennoiserie" />Viennoiserie</label><br/> <label><input type="checkbox" name="dj[]" value="Compotes" />Compotes</label><br/> <label><input type="checkbox" name="dj[]" value="Fruit" />Fruit</label><br/> <label><input type="checkbox" name="dj[]" value="Pain" />Pain</label><br/> </div> </fieldset> <br /> <fieldset> <legend>&nbsp;Gouter&nbsp;&nbsp;</legend><br /> <div class="fleft"> <label><input type="checkbox" name="gouter[]" value="Rien" />Rien</label><br/> <label><input type="checkbox" name="gouter[]" value="yaourt" />Yaourt</label><br/> <label><input type="checkbox" name="gouter[]" value="Yaourt soja" />Yaourt soja</label><br/> <label><input type="checkbox" name="gouter[]" value="Crepes nutella" />Crepes nutella</label><br/> </div> <div class="fleft"> <label><input type="checkbox" name="gouter[]" value="Viennoiserie" />Viennoiserie</label><br/> <label><input type="checkbox" name="gouter[]" value="Compotes" />Compotes</label><br/> <label><input type="checkbox" name="gouter[]" value="Fruit" />Fruit</label><br/> <label><input type="checkbox" name="gouter[]" value="Pain" />Pain</label><br/> </div> </fieldset> <br /> <fieldset> <legend>&nbsp;Dîner&nbsp;&nbsp;</legend><br /> <div class="fleft"> <label><input type="checkbox" name="diner[]" value="Rien" />Rien</label><br/> <label><input type="checkbox" name="diner[]" value="Légumes" />Légumes</label><br/> <label><input type="checkbox" name="diner[]" value="Pates" />Pates</label><br/> <label><input type="checkbox" name="diner[]" value="Riz" />Riz</label><br/> </div> <div class="fleft"> <label><input type="checkbox" name="diner[]" value="Pommes de terre" />Pommes de terre</label><br/> <label><input type="checkbox" name="diner[]" value="Féculent sans gluten" />Féculent sans gluten</label><br/> <label><input type="checkbox" name="diner[]" value="Viande rouge" />Viande rouge</label><br/> <label><input type="checkbox" name="diner[]" value="Viande blanche" />Viande blanche</label><br/> </div> <div class="fleft"> <label><input type="checkbox" name="diner[]" value="Poisson" />Poisson</label><br/> <label><input type="checkbox" name="diner[]" value="yaourt" />Yaourt</label><br/> <label><input type="checkbox" name="diner[]" value="Yaourt soja" />Yaourt soja</label><br/> <label><input type="checkbox" name="diner[]" value="Crepes nutella" />Crepes nutella</label><br/> </div> <div class="fleft"> <label><input type="checkbox" name="diner[]" value="Viennoiserie" />Viennoiserie</label><br/> <label><input type="checkbox" name="diner[]" value="Compotes" />Compotes</label><br/> <label><input type="checkbox" name="diner[]" value="Fruit" />Fruit</label><br/> <label><input type="checkbox" name="diner[]" value="Pain" />Pain</label><br/> </div> </fieldset> <br /> <input type="submit" value="Envoyer" /> <input type="reset" value="Rétablir" /> </form> </body> </html>
code de la page traitement php

Code : Tout sélectionner

<?php $date=$_POST['date']; $nuit=$_POST['nuit']; $wc=$_POST['wc']; $sport=$_POST['sport']; $gluten=$_POST['gluten']; $caseine=$_POST['caseine']; $soja=$_POST['soja']; $crise=$_POST['crise']; $pdj = $_POST['pdj']; $dj = $_POST['dj']; $gouter = $_POST['gouter']; $diner = $_POST['diner']; foreach($pdj as $cle => $valeur) { $pdj=$cle.' : '.$valeur.' - '; } foreach($dj as $cle => $valeur) { $dj=$cle.' : '.$valeur.' - '; } foreach($gouter as $cle => $valeur) { $gouter=$cle.' : '.$valeur.' - '; } foreach($diner as $cle => $valeur) { $diner=$cle.' : '.$valeur.' - '; } // connexion à la base $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error()); // sélection de la base mysql_select_db('food',$db) or die('Erreur de selection '.mysql_error()); // on écrit la requête sql $sql = "INSERT INTO ingredients(date, nuit, wc, sport, gluten, caseine, soja, crise, pdj, dj, gouter, diner) VALUES('$date','$nuit','$wc','$sport','$gluten','$caseine','$soja','$crise','$pdj','$dj','$gouter','$diner')"; // on insère les informations du formulaire dans la table mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); // on affiche le résultat pour le visiteur echo 'Vos infos on été ajoutées.'; mysql_close(); // on ferme la connexion ?>
exemple de résultat dans la base de données

Code : Tout sélectionner

2006-08-08 mauvaise oui oui oui oui non non 0 : Viennoiserie - 1 : Poisson - 0 : Crepes nutella - 2 : Pain -