Cases à cocher + enregistrement clés étrangères
Résolu/Fermé
A voir également:
- Cases à cocher + enregistrement clés étrangères
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
- Case à cocher outlook - Forum Outlook
- Cases à cocher - Guide
- Comment cocher une case sans souris ✓ - Forum Windows
- Cles windows 8 - Guide
7 réponses
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
Ambassadeur
1 557
4 mai 2020 à 12:53
4 mai 2020 à 12:53
bonjour, tu n'as pas expliqué les relations entre solutions, articles et thèmes.
ni décrit la structure de tes tables.
ni décrit la structure de tes tables.
Bonjour,
Voici le complément d'informations.
Il y'a un onglet article. Un onglet vidéo et un onglet solution.
Parmi les articles et vidéos présents dans les 2 premiers onglets, solution permet d'en sélectionner quelques un et de les regrouper par thème.
articles :
- id > int
- titre > text
- chapeau > text
- url_image > varchar
- type > varchar (si vidéo ou article)
- url_article > varchar
- en ligne > int
theme
- id
- theme > varchar
article_theme
- id
- article_id
- theme_id
Voici le complément d'informations.
Il y'a un onglet article. Un onglet vidéo et un onglet solution.
Parmi les articles et vidéos présents dans les 2 premiers onglets, solution permet d'en sélectionner quelques un et de les regrouper par thème.
articles :
- id > int
- titre > text
- chapeau > text
- url_image > varchar
- type > varchar (si vidéo ou article)
- url_article > varchar
- en ligne > int
theme
- id
- theme > varchar
article_theme
- id
- article_id
- theme_id
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
4 mai 2020 à 14:01
4 mai 2020 à 14:01
Bonjour,
Déjà, il te faut, soit un name différent pour chaque input, soit utiliser un name de type array
par exemple
Si tu coches des cases et que tu fais un print_r($_POST) tu verras comment se présentent les réponses.
Déjà, il te faut, soit un name différent pour chaque input, soit utiliser un name de type array
par exemple
<?php foreach ($rows_theme as $row_theme) { ?> <div class="form-check"> <input class="form-check-input" type="radio" name="exampleRadios[<?= $row_theme["id"] ?>]" id="theme<?= $row_theme["id"] ?>" value="option2"> <label class="form-check-label label_theme" for="theme<?= $row_theme["id"] ?>"> <?= $row_theme["theme"] ?> </label> </div> <?php } ?>
Si tu coches des cases et que tu fais un print_r($_POST) tu verras comment se présentent les réponses.
Merci pour ta réponse.
Je viens de mettre les name :
Je voulais savoir quel était la différence entre value et label?
La value apparait dans la base de donnée ?
Le print_r($_POST) m'affiche : Array ( ) 1
J'ai vue dans un autre post qu'il fallait faire un foreach sur le $_POST mais comment enregistrer ligne par ligne dans la base de donnée ?
Merci pour ton aide
Je viens de mettre les name :
<div class="marge_theme"> <?php foreach ($rows_article as $row_article) { ?> <div class="form-check"> <input class="form-check-input" type="checkbox" name="article<?= $row_theme["id"] ?>" value="" id="article<?= $row_theme["id"] ?>"> <label class="label_theme" for="article<?= $row_theme["id"] ?>"> <?= $row_article["titre"] ?> (<?= $row_article["type"] ?>) </label> </div> <?php } ?> </div>
Je voulais savoir quel était la différence entre value et label?
La value apparait dans la base de donnée ?
Le print_r($_POST) m'affiche : Array ( ) 1
J'ai vue dans un autre post qu'il fallait faire un foreach sur le $_POST mais comment enregistrer ligne par ligne dans la base de donnée ?
Merci pour ton aide
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
4 mai 2020 à 19:33
4 mai 2020 à 19:33
Je viens de mettre les name :
Pour ton besoin.. tu aurais mieux fait de laisser le name tel que je l'avais mis....(en mettant article à la place de exempe..;)
<input class="form-check-input" type="radio" name="article[<?= $row_theme["id"] ?>]" id="theme<?= $row_theme["id"] ?>" value="<?= $row_theme["id"] ?>">
De cette façon, lorsque tu vas cocher des cases puis "submit" ton formulaire, tu verras que le $_POST contiendra un array de toutes les cases cochées.
De là, il te faudra, en effet, faire une boucle dessus (via un foreach par exemple) pour les traiter.
$articles = !empty($_POST['article']) ? $_POST['article'] : NULL; if(!empty($articles)) { foreach($articles as $key => $value ){ // ici le traitement.... // par exemple echo $key . " : " . $value . "<br>"; } }
Je t'invite au passage à lire et à appliquer les conseils donnés ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Je voulais dans un premier tant remercier le formum et toi, Jordan45 pour le temps accordé.
J'avais déjà posé quelques questions et on m'a bien aidé.
Je viens de faire ta solution et je dois dire que cela avance.
Je récupère bien mes valeur des cases à cocher de manière séparé.
Maintenant, sauriez-vous svp, comment faire pour les enregistrer individuellement dans ma base de donnée ?
Je veux enregistrer chaque article séparément. Ils auront qu'un seul thème grâce au bouton radio.
En attendant voici ce que j'ai fais grâce à vous
1- définir le thème grâce aux boutons radios
a- je stocke ma valeur dans un tableau
b- je récupère mon tableau grâce à un foreach
2- sélectionner les cases à cocher
a- je stocke ma valeur dans un tableau
b- je récupère mon tableau grâce à un foreach
Je voulais dans un premier tant remercier le formum et toi, Jordan45 pour le temps accordé.
J'avais déjà posé quelques questions et on m'a bien aidé.
Je viens de faire ta solution et je dois dire que cela avance.
Je récupère bien mes valeur des cases à cocher de manière séparé.
Maintenant, sauriez-vous svp, comment faire pour les enregistrer individuellement dans ma base de donnée ?
Je veux enregistrer chaque article séparément. Ils auront qu'un seul thème grâce au bouton radio.
En attendant voici ce que j'ai fais grâce à vous
1- définir le thème grâce aux boutons radios
a- je stocke ma valeur dans un tableau
<input class="form-check-input" type="radio" name="theme[<?= $row_theme["id"]?>]" id="theme<?= $row_theme["id"] ?>" value="<?= $row_theme["id"] ?>"> <label class="form-check-label label_theme" for="theme[<?= $row_theme["id"]?>]"> <?= $row_theme["theme"] ?> </label>
b- je récupère mon tableau grâce à un foreach
$theme = !empty($_POST['theme']) ? $_POST['theme'] : NULL; if(!empty($theme)) { foreach($theme as $keyTheme => $valueTheme ){ echo $keyTheme . " : " . $valueTheme ; } }
2- sélectionner les cases à cocher
a- je stocke ma valeur dans un tableau
<input class="form-check-input" type="checkbox" name="article[<?= $row_article["id"]?>]" value="<?= $row_article["id"]?>"> <label class="label_theme" for="article[<?= $row_article["id"]?>]?>"> <?= $row_article["titre"] ?> (<?= $row_article["type"] ?>) </label>
b- je récupère mon tableau grâce à un foreach
$article = !empty($_POST['article']) ? $_POST['article'] : NULL; if(!empty($article)) { foreach($article as $keyArticle => $valueArticle ){ // ici le traitement.... // par exemple echo $keyArticle . " : " . $valueArticle . "<br>"; } }
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
11 mai 2020 à 10:43
11 mai 2020 à 10:43
Comme tu peux le lire dans le code que je t'ai donné
Hors... à par le echo que je t'avais mis ( comme exemple....) je ne vois rien d'autre....
Qu'as tu essayé ??
En plus, que signifie exactement :
Enregistrer QUOI ? dans quelle(s) table(s) ?
Il serait intéressant (et même utile..) que tu nous montres un exemple concret de ce que contient ton $_POST et que tu nous précises ( via ces données d'exemple) quoi doit aller où....
// ici le traitement.... // par exemple
Hors... à par le echo que je t'avais mis ( comme exemple....) je ne vois rien d'autre....
Qu'as tu essayé ??
En plus, que signifie exactement :
enregistrer individuellement dans ma base de donnée
Enregistrer QUOI ? dans quelle(s) table(s) ?
Il serait intéressant (et même utile..) que tu nous montres un exemple concret de ce que contient ton $_POST et que tu nous précises ( via ces données d'exemple) quoi doit aller où....
Merci pour ta réponse.
Je vais essayé d'être plus clair.
Prenons un exemple de chaussures
Il va y avoir un onglet articles sur des chaussures en vrac :
- baskets
- chaussures de villes
- chaussures de randonnées
Il va y avoir un onglet vidéo en vrac avec des exemple de chaussures
Pour les deux onglets j'ai fait une table article
- id
- titre
- chapeau
- url image
- type (article ou vidéo)
- url article
- en ligne
Et il va y avoir un onglet solutions qui va regrouper les chaussures par thématique.
Ex : chaussures de randonnée débutant avec une sélection des articles et des vidéos présents dans les deux premiers onglets.
J'ai fait une table thème
- id
- theme
Puis une table article_theme avec des clés étrangères
- id
-article_id
-theme_id
article_theme va me permettre de gérer les solutions par thématiques.
Je li mon thème à mes articles (vidéo ou articles) déjà créés.
J'essaye en ce moment de créer une nouvelle solution.
Les boutons radios permettent de sélectionner le thème existant dans la base de donnée.
Les cases à cocher permettre de sélectionner mes articles présents dans la base de donnée.
Je souhaite donc lier le thème et les articles.
Ce que j'entend par enregistrer ligne par ligne dans ma base de donnée c'est que je veux qu'il y'ai qu'un enregistrement à la fois. 1bouton radio avec 1 case à cocher dans la table article_theme. J'ai fait des cases à cocher car c'est plus rapi
J'ai enlevé
car je ne savais pas quoi mettre à part mes requêtes sql.
Je ne sais pas si je suis plus clair :)
Je vais essayé d'être plus clair.
Prenons un exemple de chaussures
Il va y avoir un onglet articles sur des chaussures en vrac :
- baskets
- chaussures de villes
- chaussures de randonnées
Il va y avoir un onglet vidéo en vrac avec des exemple de chaussures
Pour les deux onglets j'ai fait une table article
- id
- titre
- chapeau
- url image
- type (article ou vidéo)
- url article
- en ligne
Et il va y avoir un onglet solutions qui va regrouper les chaussures par thématique.
Ex : chaussures de randonnée débutant avec une sélection des articles et des vidéos présents dans les deux premiers onglets.
J'ai fait une table thème
- id
- theme
Puis une table article_theme avec des clés étrangères
- id
-article_id
-theme_id
article_theme va me permettre de gérer les solutions par thématiques.
Je li mon thème à mes articles (vidéo ou articles) déjà créés.
J'essaye en ce moment de créer une nouvelle solution.
Les boutons radios permettent de sélectionner le thème existant dans la base de donnée.
Les cases à cocher permettre de sélectionner mes articles présents dans la base de donnée.
Je souhaite donc lier le thème et les articles.
Ce que j'entend par enregistrer ligne par ligne dans ma base de donnée c'est que je veux qu'il y'ai qu'un enregistrement à la fois. 1bouton radio avec 1 case à cocher dans la table article_theme. J'ai fait des cases à cocher car c'est plus rapi
J'ai enlevé
// ici le traitement.... // par exemple
car je ne savais pas quoi mettre à part mes requêtes sql.
Je ne sais pas si je suis plus clair :)
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
11 mai 2020 à 11:40
11 mai 2020 à 11:40
Il faudrait surtout que tu répondes aux questions qu'on te pose
par exemple
En gros.. tu coches tes cases ... puis tu valides ( bien entendu, tu auras ajouté un print_r($_POST); dans ton code )
Ainsi, tu auras le contenu de ta variable affiché sur ta page.
(contenu que tu nous partageras ici sur le forum).
Ben oui.. c'est bien ça.
Il faut y mettre tes requêtes SQL.
Donc.. qu'as tu essayé ? Qu'est-ce qui ne marche pas ?
par exemple
Il serait intéressant (et même utile..) que tu nous montres un exemple concret de ce que contient ton $_POST et que tu nous précises ( via ces données d'exemple) quoi doit aller où....
En gros.. tu coches tes cases ... puis tu valides ( bien entendu, tu auras ajouté un print_r($_POST); dans ton code )
Ainsi, tu auras le contenu de ta variable affiché sur ta page.
(contenu que tu nous partageras ici sur le forum).
ne savais pas quoi mettre à part mes requêtes sql.
Ben oui.. c'est bien ça.
Il faut y mettre tes requêtes SQL.
Donc.. qu'as tu essayé ? Qu'est-ce qui ne marche pas ?
Merci pour ton aide,
J'avais juste un peu peur de mettre mes requêtes dans un foreach, je sais c'est bête.
Voici ce que j'ai mis et cela fonctionne. Je vais mettre comme résolu après ça.
Merci pour votre aide.
J'avais juste un peu peur de mettre mes requêtes dans un foreach, je sais c'est bête.
Voici ce que j'ai mis et cela fonctionne. Je vais mettre comme résolu après ça.
Merci pour votre aide.
if ($_POST['btn_theme']) { $article = !empty($_POST['article']) ? $_POST['article'] : NULL; if(!empty($article)) { foreach($article as $keyArticle => $valueArticle ){ // ici le traitement.... // par exemple $sql_nouvelle_solution = "INSERT INTO article_theme (article_id, theme_id) VALUE (?,?)"; $nouvelle_solution = $pdo->prepare($sql_nouvelle_solution)->execute([$valueArticle,$_POST['theme']]); } } }