Mettre plusieurs valeurs dans un seul champ

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 : Mettre plusieurs valeurs dans un seul champ

par Morkem » 30 août 2007, 15:49

C'est génial... Ca fonctionne super bien :) Merci

par Ryle » 30 août 2007, 14:49

Tu peux, mais c'est la notamment que tu vas te prendre la tête puisque pour savoir si la case doit être cochée il faut que tu vérfies si la chaine que tu as récupéré de ta base contient une sous chaine correspondant à la valeur de la case (et encore tu as de la chance, elles sont toutes différentes, tu peux donc tester facilement) ...

Tu peux faire ça avec un strpos(), un ereg() ou un preg_match() par exemple

par Morkem » 30 août 2007, 14:40

Bon effectivement après une petite correction ca fonctionne...

Mais si je fais une page modification, je ne peux pas réafficher les données dans les checkbox ??

par Ryle » 30 août 2007, 14:24

Pas d'erreur mysql ?
As-tu affiché la valeur de $piece ? de $_POST
ta table "materiel" n'a que deux champs ?
tes champs sont dans le même ordre que tes valeurs ?
t'es bien connecté à la base ?

par Morkem » 30 août 2007, 14:20

Non l'usage a été reflechi :) Le varchar va être de 50 peut importe... Ce qui me pose probleme c'est la manière d'envoyer les données :s

J'avais fait un truc comme ca :
<div id="label" for="piece">Pièces :</div>  <input type="checkbox" name="pieceveste" id="pieceveste" value="Veste" /> Veste 
											<input type="checkbox" name="piecesscuirasse" id="piecesscuirasse" value="Sous cuirasse" /> Sous cuirasse 
											<input type="checkbox" name="piecepantalon" id="piecepantalon" value="Pantalon" /> Pantalon 
											<input type="checkbox" name="piecemasque" id="piecemasque" value="Masque" /> Masque <br /> 
$piece = ($_POST['pieceveste'] . $_POST['piecesscuirasse'] . $_POST['piecepantalon'] . $_POST['piecemasque']);

mysql_query("INSERT INTO materiel VALUES('', '".$piece."' ) ") or die(mysql_error());
Mais rien ne s'enregistre... Ou est mon erreur ?

par Ryle » 30 août 2007, 14:15

Bah tu fais comme tu veux... 4 valeurs dans 4 chmaps c'est juste plus facile à retrouver et à modifier ... Maintenant rien ne t'empêche de concaténer les valeurs reçues dans une seule variable et de la stocker dans ton varchar...

Le seul soucis que tu aurais dans le cas présent, c'est que si l'utilisateur coche les 4 cases, les 4 valeurs mises bout à bout ("VesteSous cuirassePantalonMasque") tiendront jamais dans un champ de 20 caractères ;)

Maintenant à mon avis, mieux vaut une table avec 100 champs utiles, que l'on peut indexer, mettre à jour et interroger facilement, qu'une table avec 20 champs pour des raisons de "beaucoup de champs" qu'il faudra parser, comparer, exploser et remplacer dès qu'on voudra en faire quelque chose :)
La question est donc de savoir l'usage que tu as de l'info et l'évolution possible de celle-ci.. parce qu'on peut aussi envisager une table avec ta liste de pieces et des id, et une table de liaison pour lier le gars à ses pièces...

Mettre plusieurs valeurs dans un seul champ

par Morkem » 30 août 2007, 14:02

Bonjour,

Je voudrais savoir si il fallait obligatoirement 4 champs dans une table sql pour 4 proposition dans le formulaire.

Voici mon formulaire :
<div id="label" for="piece">Pièces :</div>  <input type="checkbox" name="piece" id="piece" value="Veste" /> Veste 
											<input type="checkbox" name="piece" id="piece" value="Sous cuirasse" /> Sous cuirasse 
											<input type="checkbox" name="piece" id="piece" value="Pantalon" /> Pantalon 
											<input type="checkbox" name="piece" id="piece" value="Masque" /> Masque <br /> 
Donc en fait je coche ce que le client loue. Mais je voudrais le renvoyer uniquement là :

Code : Tout sélectionner

`piece` varchar(20) collate latin1_general_ci NOT NULL,
Parceque j'ai déjà beaucoups de champs... Est ce possible ??

Si oui comment ?

Si non, je vais devoir créer dans champs supplémentaires pour chacune des pièces ??

Mici