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

Nolwenn
Invité n'ayant pas de compte PHPfrance

07 nov. 2005, 18:49

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:

VaN
Mammouth du PHP | 1107 Messages

07 nov. 2005, 19:08

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
Modifié en dernier par VaN le 07 nov. 2005, 19:12, modifié 2 fois.

ViPHP
ViPHP | 656 Messages

07 nov. 2005, 19:09

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.

Nolwenn
Invité n'ayant pas de compte PHPfrance

07 nov. 2005, 19:15

Bon bah ca fonctionne merci beaucoup pour le coup de main Franchement sympa de votre part

Nolwenn
Invité n'ayant pas de compte PHPfrance

07 nov. 2005, 19:46

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

07 nov. 2005, 19:55

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 ;)

Nolwenn
Invité n'ayant pas de compte PHPfrance

08 nov. 2005, 00:13

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 !!!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

08 nov. 2005, 00:56

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 ;)

Mammouth du PHP | 19672 Messages

08 nov. 2005, 09:36

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()
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: