Insérer des données dans une table intermédiaire
Fermé
Buk01
Messages postés
8
Date d'inscription
jeudi 13 septembre 2018
Statut
Membre
Dernière intervention
20 septembre 2018
-
13 sept. 2018 à 20:40
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 20 sept. 2018 à 15:34
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 20 sept. 2018 à 15:34
A voir également:
- Insérer des données dans une table intermédiaire
- Table ascii - Guide
- Table des matières word - Guide
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
5 réponses
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 550
13 sept. 2018 à 22:00
13 sept. 2018 à 22:00
bonjour,
que contient la ligne 53 de la page trait_paiement.php?
si tu veux comprendre la raison de la violation de la contrainte d'intégrité, tu dois commencer par déterminer les valeurs que tu essaies d'insérer dans la table. quelles sont ces valeurs?
que contient la ligne 53 de la page trait_paiement.php?
si tu veux comprendre la raison de la violation de la contrainte d'intégrité, tu dois commencer par déterminer les valeurs que tu essaies d'insérer dans la table. quelles sont ces valeurs?
lugdanum
Messages postés
116
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
4 novembre 2024
41
13 sept. 2018 à 22:40
13 sept. 2018 à 22:40
Hello
Après un bref coup d’œil, peut être une piste :
Sur ta page "faire_paiement.php" , ton
Ensuite sur ta page "trait_paiement.php" , tu le récupère de cette manière :
Du coup il est égale maintenant à Membre numero: XXXXXXXX
Dans ta table je pense que seul le numéro XXXXXXXX est stocké mais avec le Membre numero: avant il ne le retrouve plus....
Sois tu vire le Membre numero: avant la recherche en base de l'iD soit tu vire le texte du select...
Tiens moi au courant sinon pour que je regarde plus en détail.
2) Ensuite lorsque je fais mes insertions dans la table "cotisation", le champ "objet" de la table "cotisation" n'arrive pas à enregistrer la totalité des textes que j'insère, il pren une partie et
-> Essaye de donner une taille à ton input directement dans ton code et/ou dans phpmyadmin augmente sa valeur et/ou son type, par exemple au dessus de VARCHAR:
« VARCHAR » un texte cours de 0 à 65.535 caractères
« TEXT » pour du texte en grande quantité
« MEDIUMTEXT » un texte de 0 à 16.777.215 caractères
...
et pour le coup ne mets pas de "CHAR" ou "TINYTEXT"
(regarde ici : https://openclassrooms.com/fr/courses/1225826-choisir-les-bons-types-de-colonne-sql)
Pour ton numcni, sur ta page "ajout_membres.php" en fait tu ne le traite absolument pas.... Regarde tu ne l'ajoute pas dans ta base....
@+
Après un bref coup d’œil, peut être une piste :
Sur ta page "faire_paiement.php" , ton
<select name="id_membres">va avoir une valeur :
echo 'Membre numero: '.$donnees soit MEMBRE NUMERO: XXXXXXXX
Ensuite sur ta page "trait_paiement.php" , tu le récupère de cette manière :
$id_membres=htmlentities(trim($_POST['id_membres']));
Du coup il est égale maintenant à Membre numero: XXXXXXXX
Dans ta table je pense que seul le numéro XXXXXXXX est stocké mais avec le Membre numero: avant il ne le retrouve plus....
Sois tu vire le Membre numero: avant la recherche en base de l'iD soit tu vire le texte du select...
Tiens moi au courant sinon pour que je regarde plus en détail.
2) Ensuite lorsque je fais mes insertions dans la table "cotisation", le champ "objet" de la table "cotisation" n'arrive pas à enregistrer la totalité des textes que j'insère, il pren une partie et
-> Essaye de donner une taille à ton input directement dans ton code et/ou dans phpmyadmin augmente sa valeur et/ou son type, par exemple au dessus de VARCHAR:
« VARCHAR » un texte cours de 0 à 65.535 caractères
« TEXT » pour du texte en grande quantité
« MEDIUMTEXT » un texte de 0 à 16.777.215 caractères
...
et pour le coup ne mets pas de "CHAR" ou "TINYTEXT"
(regarde ici : https://openclassrooms.com/fr/courses/1225826-choisir-les-bons-types-de-colonne-sql)
Pour ton numcni, sur ta page "ajout_membres.php" en fait tu ne le traite absolument pas.... Regarde tu ne l'ajoute pas dans ta base....
@+
Buk01
Messages postés
8
Date d'inscription
jeudi 13 septembre 2018
Statut
Membre
Dernière intervention
20 septembre 2018
16 sept. 2018 à 15:19
16 sept. 2018 à 15:19
Merci lugdanum pour l'intervention. La dernière préoccupation a été résolue, merci. Pour tes 2 premières réponses:
1)Sur ta page "faire_paiement.php" , ton <select name="id_membres"> va avoir une valeur :
echo 'Membre numero: '.$donnees soit MEMBRE NUMERO: XXXXXXXX
2)Ensuite sur ta page "trait_paiement.php" , tu le récupère de cette manière :
$id_membres=htmlentities(trim($_POST['id_membres']));
J'ai dejà fait tout ça dans le code, tu peux bien jeter un vrai bon coup d’œil pour voir ce qui ne va pas vraiment.
De plus, pour les types de données que tu me conseilles, j'ai tout essayé et tout est pareil, sauf si je colle les différents mots qui composent le texte de mon champs "objet" de la table "cotisation" sans espace.
1)Sur ta page "faire_paiement.php" , ton <select name="id_membres"> va avoir une valeur :
echo 'Membre numero: '.$donnees soit MEMBRE NUMERO: XXXXXXXX
2)Ensuite sur ta page "trait_paiement.php" , tu le récupère de cette manière :
$id_membres=htmlentities(trim($_POST['id_membres']));
J'ai dejà fait tout ça dans le code, tu peux bien jeter un vrai bon coup d’œil pour voir ce qui ne va pas vraiment.
De plus, pour les types de données que tu me conseilles, j'ai tout essayé et tout est pareil, sauf si je colle les différents mots qui composent le texte de mon champs "objet" de la table "cotisation" sans espace.
Utilisateur anonyme
19 sept. 2018 à 21:12
19 sept. 2018 à 21:12
Bonjour
Tu peux très bien afficher "Membre numéro xxxx" sans que ceci perturbe la valeur de $_POST['id_menbres'], en utilisant l'attribut value de la balise OPTION
Sans attribut "value", le SELECT prend la valeur du texte complet de l'OPTION, sinon il prend la valeur donnée par value.
Au passage :
- le <br /> ne sert à rien sur une option.
- le name non plus, c'est celui du SELECT qui compte
- tu as mis la balise de fermeture </option> après l'accolade de fin du while, autrement dit tu as une seule </option> pour toutes tes <option>. déplace l'accolade de fin du while
Ensuite :
n'arrive pas à enregistrer la totalité des textes que j'insère
C'est parce que tu n'as pas mis de " " autour des value des champs "hidden" que tu récupères.
Regarde ce que tu as (mal) fait dans ta table cotisation :
et compare avec ce que tu as (bien) fait pour trai_ajout_membre :
Tu peux très bien afficher "Membre numéro xxxx" sans que ceci perturbe la valeur de $_POST['id_menbres'], en utilisant l'attribut value de la balise OPTION
Sans attribut "value", le SELECT prend la valeur du texte complet de l'OPTION, sinon il prend la valeur donnée par value.
<option value = '<?php echo $donnees['id_membres']; ?>'/> <?php echo 'Membre numero: '.$donnees['id_membres']; ?> </option>
Au passage :
- le <br /> ne sert à rien sur une option.
- le name non plus, c'est celui du SELECT qui compte
- tu as mis la balise de fermeture </option> après l'accolade de fin du while, autrement dit tu as une seule </option> pour toutes tes <option>. déplace l'accolade de fin du while
Ensuite :
n'arrive pas à enregistrer la totalité des textes que j'insère
C'est parce que tu n'as pas mis de " " autour des value des champs "hidden" que tu récupères.
Regarde ce que tu as (mal) fait dans ta table cotisation :
<input type="hidden" name="montant2" value='.$montant.' />
et compare avec ce que tu as (bien) fait pour trai_ajout_membre :
<input type="hidden" name="nom2" value="'.$nom.'">
Buk01
Messages postés
8
Date d'inscription
jeudi 13 septembre 2018
Statut
Membre
Dernière intervention
20 septembre 2018
20 sept. 2018 à 14:17
20 sept. 2018 à 14:17
Bonjour et merci bien à toi le père.
Pour la 1ère préoccupation concernant l'attribut "value" de <option>, j'avais eu la solution, mais tu viens de m'aider avec les " " autour des value des champs hidden. ça marche, merci.
Cependant peux-tu ma'aider à gérer les accents dans ma base de données? C'est à dire que lorsque j'enregistre un texte comportant des accents dans ma base de données, cela me donne une mauvaise lisibilité des données. Par exemple lorsque j'insère le texte "Mariage du père du Président, nommé Généviève" dans le champs "objet" de la table cotisation, cela me donne des erreurs d'encodages. Merci!
Pour la 1ère préoccupation concernant l'attribut "value" de <option>, j'avais eu la solution, mais tu viens de m'aider avec les " " autour des value des champs hidden. ça marche, merci.
Cependant peux-tu ma'aider à gérer les accents dans ma base de données? C'est à dire que lorsque j'enregistre un texte comportant des accents dans ma base de données, cela me donne une mauvaise lisibilité des données. Par exemple lorsque j'insère le texte "Mariage du père du Président, nommé Généviève" dans le champs "objet" de la table cotisation, cela me donne des erreurs d'encodages. Merci!
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
19 sept. 2018 à 21:50
19 sept. 2018 à 21:50
Bonjour,
rien à voir vraiment avec le souci actuel... mais j'en profite pour faire quelques rappels / recommandations.
- Les htmlentities, htmlspecialchar ... sont des fonctions qui ne doivent servir qu'à l'affichage et en aucun cas pour stocker les données dans la bdd.
- Voici comment faire correctement une connexion en PDO et écrire correctement ses requêtes (avec des blocs try/catch à CHAQUE REQUETE ... et non pas des DIE comme je peux le voir dans ce code ! )
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
- Et sans oublier quelques règles élémentaire de l'écriture d'un code propre et facilement maintenable :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
rien à voir vraiment avec le souci actuel... mais j'en profite pour faire quelques rappels / recommandations.
- Les htmlentities, htmlspecialchar ... sont des fonctions qui ne doivent servir qu'à l'affichage et en aucun cas pour stocker les données dans la bdd.
- Voici comment faire correctement une connexion en PDO et écrire correctement ses requêtes (avec des blocs try/catch à CHAQUE REQUETE ... et non pas des DIE comme je peux le voir dans ce code ! )
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
- Et sans oublier quelques règles élémentaire de l'écriture d'un code propre et facilement maintenable :
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
Utilisateur anonyme
20 sept. 2018 à 14:45
20 sept. 2018 à 14:45
Pour commencer, as-tu bien pris en compte les conseils de Jordane ?
En ce qui concerne les accents, puisque tu sembles travailler en utf8 d'après la description de ta base de données, il suffit de n'utiliser que de l'utf8 partout. En particulier :
- d'utiliser un éditeur de texte qui travaille en utf8 sans BOM. As-tu une idée de l'encodage que de ton éditeur de texte ?
- mettre une balise
- de préciser dans ta connexion à la base de données que tu travailles en utf-8 :
Au fait, pour déclarer un document html, c'est
En ce qui concerne les accents, puisque tu sembles travailler en utf8 d'après la description de ta base de données, il suffit de n'utiliser que de l'utf8 partout. En particulier :
- d'utiliser un éditeur de texte qui travaille en utf8 sans BOM. As-tu une idée de l'encodage que de ton éditeur de texte ?
- mettre une balise
<meta charset ="utf8"/>et non pas
<meta="utf8"/>dans le <head> de ta page
- de préciser dans ta connexion à la base de données que tu travailles en utf-8 :
$bdd = new PDO('mysql:host=localhost;dbname=assoc;charset=UTF8', 'root', '');
Au fait, pour déclarer un document html, c'est
<!DOCTYPE html>sans espace entre ! et DOCTYPE
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
20 sept. 2018 à 15:34
20 sept. 2018 à 15:34
Hello,
En complément de ta réponse :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
.
En complément de ta réponse :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
.
17 sept. 2018 à 15:22
les valeurs que j’essaie d'insérer sont les identifiants des tables "Membres" et "Cotisation", car leurs clés primaires sont des clés étrangères ici dans la table "Paiement" à cause de la règle:
un Membre effectue 1,n paiements pour une Cotisation donnée,
Une Cotisation peut être l'objet d'1,n Paiement d'un même Membre.
17 sept. 2018 à 16:31
17 sept. 2018 à 17:23
17 sept. 2018 à 17:56
17 sept. 2018 à 18:49
Warning: PDOStatement::execute(): SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`assoc`.`paiement`, CONSTRAINT `fk_Membres_Paiement` FOREIGN KEY (`id_membres`) REFERENCES `membres` (`id_membres`)) in C:\wamp\www\association\trait_paiement.php on line 53. Je remet le code en bas pour que tu visualise très bien, si possible teste chez toi pour voir si ça passe.