Page 1 sur 1

Case a cocher? possible d'enregistrer é réponses dans le....

Posté : 07 nov. 2005, 18:49
par Nolwenn
Bonsoir,
Je viens de remettre les pieds dans la plats et déjà un soucis !!!
Dans un formulaire ou j'ai des cases a cocher (et qui offre donc la possibilité d'en cocher plusieurs) je voulais savoir s'il était possible que les par exemple deux réponses peuvent etre enregistrer dans le meme champs dans la base de données?!
Je m'arrache les cheveux, je vais continuer a chercher sur le forum mais si vous pouviez me donner un chtit coup de main merci d'avance. :lol:

Posté : 07 nov. 2005, 19:08
par VaN
est ce que tu arrive déjà à recuperer les deux valeurs ?

si oui, t'as juste à faire une concatenation des valeurs :
<?php
$all_checkbox = $checkbox1.";".$checkbox2;

$sql = "INSERT INTO table VALUES ('$all_checkbox');
?>
enfin un truc du genre quoi. Ici, tu sépare les valeurs par un ";", c'est donc facile de les récuperer ensuite.

Si c'est pour récuperer les valeurs, il mes semble avoir peiner tres longtemps afin d'y arriver, lors d'un travail précédent. Je te cherche ça attends, ça ira plus vite que si tu le cherche toi meme

[EDIT] hop la, voila le thread en question http://www.phpfrance.com/forums/voir_su ... texte-.php

Posté : 07 nov. 2005, 19:09
par Ultiny
Ba oui, par exemple tu en appel un 1 et l'autre 2

Ensuite dans la base de donnée tu insert la réponse (soit 1, soit 2 soit 12 soit vide).

Pour finir, il te suffira de faire un preg_match() pour savoir si l'option 1 ou l'option 2 existe.

Posté : 07 nov. 2005, 19:15
par Nolwenn
Bon bah ca fonctionne merci beaucoup pour le coup de main Franchement sympa de votre part

Oups !!!

Posté : 07 nov. 2005, 19:46
par Nolwenn
J'ai peut etre parlé un peu trop vite
Quand je coche les cases tout s'enregistre bien dans la base de données mais pour les cases non cochés ca me met le message d'erreur si dessous...

Notice: Undefined index: connaitre_bd2 in c:\essai\insert_pharmacie.php on line 12


Quand aux messages que tu m'as fourni je n'y ai pas compris grand chose je suis désolée :?
Enfin je ne veux pas vous saouler donc je vais continuer a m'arracher les cheveux et a potasser un peu dans mon bouquin avant de crier.
Merci

Posté : 07 nov. 2005, 19:55
par ouckileou
Salut,

pour récupérer la saisie de cases à cocher il y avait ce sujet dans la FAQ (à consulter avant de poser une question ;)) :
http://www.phpfrance.com/forums/voir_sujet-5220.php

Il faudrait voir ton code mais une case non cochée ne transmet pas de variable normalement... donc tu dois essayer d'en traiter une non-cochée, ce qui provoque l'erreur. Le traitement présenté dans l'exemple réglerait ce problème.

Et en passant, habituellement on enregistre pas 2 valeurs dans une même colonne d'une table, la conception de ta base pourrait peut-être profiter de quelques améliorations ;)

Posté : 08 nov. 2005, 00:13
par Nolwenn
Franchement ton code m'a bien avancé mais voila je n'arrive pas à l'enregistre dans la base il me faudrait un mix des deux réponses ce n'es pas fautes d'essayer. Mais après avoir lu ton code. J'ai bien les données qui s'affiche grace a la boucle mais comment faire pour récuperer toutes ses données qui sont passée dans cette boucle ?
Merci si tu me comprends !!!

Posté : 08 nov. 2005, 00:56
par ouckileou
VaN l'a dit, tu dois construire la requête dynamiquement. C'est à dire que si tu veux stocker plusieurs valeurs dans ta colonne, séparées par des point-virgules par exemple :
1 - tu boucles sur le tableau renvoyées par les cases à cocher
2 - tu concaténes chaque valeur entre elles avec un ; comme ils t'ont montré
3 - tu inclus cette concaténation dans du code SQL pour insérer dans la base

tu peux regarder ce sujet pour un exemple : http://www.phpfrance.com/forums/voir_su ... +requ%EAte

Bon courage ;)

Posté : 08 nov. 2005, 09:36
par Cyrano
Si j epeux faire une suggestion: l'idée qui me vient, c'est que les cases à cocher pourraient avoir toutes le même attribut name avec les [], donc on récupère les valeurs dans un tableau indexé. Pour enregistrer, au lieu de s'amuser à récupérr chaque valeur pour faire une concaténation, on sérialise avec serialize() et à la récupération, on remet tout ça dans un tableau avec unserialize()