Enregistrer plusieurs checbox ensemble dans une BD
Résolu/Fermé
Busima
Messages postés
55
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
-
Modifié le 31 mars 2020 à 22:45
Busima - 10 avril 2020 à 23:18
Busima - 10 avril 2020 à 23:18
A voir également:
- Enregistrer plusieurs checbox ensemble dans une BD
- Audacity enregistrer son pc - Guide
- Comment enregistrer une video youtube - Guide
- Enregistrer son ecran - Guide
- Enregistrer en pdf - Guide
- Comment enregistrer une musique sur youtube en mp3 - Guide
5 réponses
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
31 mars 2020 à 23:00
31 mars 2020 à 23:00
Bonjour,
Deux possibilités :
Tu veux absolument garder cette structure de base de données... (donc un seul champ pour stocker tes "type_agent"
et dans ce cas, tu peux serializer l'array
ou sinon tu convertis au format json
Dans les deux cas, ça transformera l'array en chaine de text..
Mais, le problème en enregistrant les données comme ça dans un seul champ.. c'est si tu as besoin de faire ensuite des recherches dans la bdd....
Ce qui nous amène au second choix.
Revoir la structure de tes tables.
Ta Bdd devrait ressembler à ça :
Deux possibilités :
Tu veux absolument garder cette structure de base de données... (donc un seul champ pour stocker tes "type_agent"
et dans ce cas, tu peux serializer l'array
$type_agent = !empty($_POST["type_agent"]) ? serialize($_POST["type_agent"]) : "";
ou sinon tu convertis au format json
$type_agent = !empty($_POST["type_agent"]) ? json_encode($_POST["type_agent"]) : "";
Dans les deux cas, ça transformera l'array en chaine de text..
Mais, le problème en enregistrant les données comme ça dans un seul champ.. c'est si tu as besoin de faire ensuite des recherches dans la bdd....
Ce qui nous amène au second choix.
Revoir la structure de tes tables.
Ta Bdd devrait ressembler à ça :
Busima
Messages postés
55
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
1 avril 2020 à 23:58
1 avril 2020 à 23:58
Merci beaucoup pour ta réponse Jordane. Une fois de plus encore tu me sauves.
Cependant je te sollicite afin que tu traduises ton code en un code plus simple comme le mien avec des if (isset...) comme je la'i fait là, si possible:
Cela me facilitera la compréhension et l'implémentation.
Encore merci et excuse moi si je demande trop.
Cependant je te sollicite afin que tu traduises ton code en un code plus simple comme le mien avec des if (isset...) comme je la'i fait là, si possible:
if((!empty($_POST['nom_prospect']) AND !empty($_POST['email_prospect']) AND !empty($_POST['telephone_prospect']) AND isset($_POST['envoyer']))) { $nom_prospect = $_POST["nom_prospect"]; $prenom_prospect = $_POST["prenom_prospect"]; ... $demande_particuliere = $_POST["demande_particuliere"]; /*DEBUT DE l'ERREUR*/ foreach($_POST["type_agent"] as $type_agent) { $type_agent=$_POST["type_agent"]; } foreach($_POST["espace_a_securiser"] as $espace_a_securiser) { $espace_a_securiser=$_POST["espace_a_securiser"]; } /*FIN DE l'ERREUR*/ $req = $bdd->prepare('INSERT INTO demande_de_devis (nom_prospect, prenom_prospect, fonction_prospect, service_prospect, email_prospect, telephone_prospect, type_agent, espace_a_securiser, nbre_agent, delai, demande_particuliere) VALUES (:nom_prospect, :prenom_prospect, :fonction_prospect, :service_prospect, :email_prospect, :telephone_prospect, :type_agent, :espace_a_securiser, :nbre_agent, :delai, :demande_particuliere)'); $req->execute(array(':nom_prospect'=>$nom_prospect, ':prenom_prospect'=>$prenom_prospect, ':fonction_prospect'=>$fonction_prospect, ':service_prospect'=>$service_prospect,':email_prospect'=>$email_prospect,':telephone_prospect'=>$telephone_prospect, ':type_agent'=>$type_agent, ':espace_a_securiser'=>$espace_a_securiser, ':nbre_agent'=>$nbre_agent, ':delai'=>$delai, ':demande_particuliere'=>$demande_particuliere)) or die (print_r($req->errorInfo())); $req->closeCursor();
Cela me facilitera la compréhension et l'implémentation.
Encore merci et excuse moi si je demande trop.
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
2 avril 2020 à 07:37
2 avril 2020 à 07:37
Ca dépend.
Tu pars sur quelle méthode parmi celles que j'ai proposé ?
Tu pars sur quelle méthode parmi celles que j'ai proposé ?
Busima
Messages postés
55
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
2 avril 2020 à 14:49
2 avril 2020 à 14:49
Je vais faire les 2 méthodes mais je vais commencer par la 1ére méthode, c'est à dire garder cette structure de base de données et serializer l'array comme tu le dis ici:
pour transformer l'array en chaine de text...
Après cela, je vais passer au second choix en revoyant la structure de mes tables comme tu me l'as proposé également.
Pour l'instant il faut me montrer comment traduire tes codes suivants comme moi je code là:
Merci
$type_agent = !empty($_POST["type_agent"]) ? serialize($_POST["type_agent"]) : ""; ou sinon tu convertis au format json $type_agent = !empty($_POST["type_agent"]) ? json_encode($_POST["type_agent"]) : "";
pour transformer l'array en chaine de text...
Après cela, je vais passer au second choix en revoyant la structure de mes tables comme tu me l'as proposé également.
Pour l'instant il faut me montrer comment traduire tes codes suivants comme moi je code là:
$type_agent = !empty($_POST["type_agent"]) ? serialize($_POST["type_agent"]) : ""; ou sinon tu convertis au format json $type_agent = !empty($_POST["type_agent"]) ? json_encode($_POST["type_agent"]) : "";en utilisant le if (isset...).
Merci
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
2 avril 2020 à 15:04
2 avril 2020 à 15:04
il n'y a pas 2 ... mais 3 méthodes proposées
- Serializer
- Transformer en JSON
- Changer la structure de la bdd (ce qui serait largement plus propre et efficace).
Pour les deux premières méthodes, j'ai utilisé l'écriture TERNAIRE.
En gros.. c'est un IF ELSE mais qui s'écrit en une seule ligne.
Converti à l'ancienne ça donne
Je t'invite également à lire ET à appliquer les conseils donnés dans ces deux liens :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
- Serializer
- Transformer en JSON
- Changer la structure de la bdd (ce qui serait largement plus propre et efficace).
Pour les deux premières méthodes, j'ai utilisé l'écriture TERNAIRE.
En gros.. c'est un IF ELSE mais qui s'écrit en une seule ligne.
Converti à l'ancienne ça donne
if( !empty($_POST["type_agent"]) ){ $type_agent = json_encode($_POST["type_agent"]) ; } else { $type_agent = ""; }
Je t'invite également à lire ET à appliquer les conseils donnés dans ces deux liens :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Busima
Messages postés
55
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
2 avril 2020 à 17:13
2 avril 2020 à 17:13
J'ai choisi la 1ère méthode de serialization pour le champ "type-agent" et voici ce qu'il m'affiche dans le champ comme enregistrement que je n'arrive pas lire. j'ai pourtant changé son format "varchar" en format "text" et l'encodage "utf8_general_ci" en "utf8_unicode_ci":
["Agent de s\u00e9curit\u00e9","Maitre chien","Agent de s\u00e9curit\u00e9 incendie"]
Et voici la 2ème méthode avec le "json_encode" pour le champ "espace_a_securiser" et voici ce que m'affiche aussi le champ comme enregistrement que je n'arrive pas lire également:
a:3:{i:0;s:6:"Bureau";i:1;s:22:"Café/Hotel/Restaurant";i:2;s:7:"Parking";}
Comment rendre lisibles les enregistrements de ces 2 champs?
["Agent de s\u00e9curit\u00e9","Maitre chien","Agent de s\u00e9curit\u00e9 incendie"]
Et voici la 2ème méthode avec le "json_encode" pour le champ "espace_a_securiser" et voici ce que m'affiche aussi le champ comme enregistrement que je n'arrive pas lire également:
a:3:{i:0;s:6:"Bureau";i:1;s:22:"Café/Hotel/Restaurant";i:2;s:7:"Parking";}
Comment rendre lisibles les enregistrements de ces 2 champs?
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
2 avril 2020 à 17:23
2 avril 2020 à 17:23
Tu ne peux pas les rendre "lisible" directement dans ta bdd....
Par conte, si tu dois les utiliser dans un code php, il suffira de faire du json_decode ou du unserialize (en fonction de la méthode d'encodage choisi ).
Sinon, tu peux aussi juste les stocker en "valeurs" séparées par des virgules
Par exemple
Par conte, si tu dois les utiliser dans un code php, il suffira de faire du json_decode ou du unserialize (en fonction de la méthode d'encodage choisi ).
Sinon, tu peux aussi juste les stocker en "valeurs" séparées par des virgules
Par exemple
if( !empty($_POST["type_agent"]) && is_array($_POST["type_agent") ){ $type_agent =join(",", $_POST["type_agent"]) ; } else { $type_agent = ""; }
Busima
Messages postés
55
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
1
>
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
Modifié le 2 avril 2020 à 18:06
Modifié le 2 avril 2020 à 18:06
Ok merci Jordane. Cela marche très bien.
Je vais continuer le projet et je vous ferai un retour au cas ou je décide de faire la 3ème méthode en révisant la BD.
Cependant, je veux mettre la question en "résolue", mais avant de le faire, je veux que tu me dises comment "unserializer" et comment "json_decoder" pour la récupération des données?
Est-ce que c'est:
1- SELECT * FROM demande_de_devis AND (unserialize(type_agent));
ou
2- SELECT (unserialize(type_agent));?
Et pourle js_decode aussi?
Je vais continuer le projet et je vous ferai un retour au cas ou je décide de faire la 3ème méthode en révisant la BD.
Cependant, je veux mettre la question en "résolue", mais avant de le faire, je veux que tu me dises comment "unserializer" et comment "json_decoder" pour la récupération des données?
Est-ce que c'est:
1- SELECT * FROM demande_de_devis AND (unserialize(type_agent));
ou
2- SELECT (unserialize(type_agent));?
Et pourle js_decode aussi?
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
>
Busima
Messages postés
55
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
29 janvier 2021
8 avril 2020 à 21:05
8 avril 2020 à 21:05
Ces instructions se font en PHP uniquement
D'une part tu fais ta requête SELECT,
Puis, une fois le résultat stocké dans une variable PHP tu peux appliquer le unserialze ou le json_decode
D'une part tu fais ta requête SELECT,
Puis, une fois le résultat stocké dans une variable PHP tu peux appliquer le unserialze ou le json_decode
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question