Erreur !: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id_type_
Résolu
drenfa
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
5 réponses
-
Bonjour,
Commence par nous poster ton code correctement ( en utilisant les balises de code)
Explications ( à lire ENTIEREMENT... ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Donnes nous également le message d'erreur complet.
-
Le formulaire:
<form method="post" id="saisie" action="./?action=couter" onsubmit="return valider()"> <br/> <div class="form-group"> <label for="quotient"class="label">Cout</label> <input type="text" class="form-control" name="montant" id="montant" placeholder="0"> </br> <label for="">Tranches: </label> <select name="tranchesC" id="tranchesC"> <option value="">..Tranche..</option> <?php for ($i = 0; $i < count($getTranche); $i++) {?> <option value="<?= $i; ?>"> <?= $getTranche[$i]["id"];?> </option> <?php } ?> </select> <label for="">Type de Cours: </label> <select name="typeCour" id="typeCour"> <option value="">..Type de cour..</option> <?php for ($i = 0; $i < count($getTypeCour); $i++) {?> <option value="<?= $i; ?>"> <?=$getTypeCour[$i]["libelle"];?> </option> <?php } ?> </select> </div> <button name="bouton" id="bouton" type="submit" class="btn btn-primary">Envoyer</button> </form>
Les variables :$couter = $_POST['montant']; $tranche=$_POST['tranchesC']; $typeCour=$_POST['typeCour'];
Et la fonction qui permet de mettre les donnée dans la bdd:function InsertCouter($couter,$tranche,$typeCour){ try { $cnx = connexionPDO(); $req = $cnx->prepare("Insert into couter(montant,id_tranches,id_type_cour) Value(:montant,(Select id from tranches where id=:tranche),(Select id from type_cour where id=:typeCour))"); $req->bindValue(':montant', $couter, PDO::PARAM_INT); $req->bindValue(':tranche', $tranche, PDO::PARAM_INT); $req->bindValue(':typeCour', $typeCour, PDO::PARAM_INT); $resultat = $req->execute(); } catch (PDOException $e) { print "Erreur !: " . $e->getMessage(); die(); } -
Je remarque au passage quelques erreurs....
$req = $cnx->prepare("Insert into couter(montant,id_tranches,id_type_cour) Value(:montant,(Select id from tranches where id=:tranche),(Select id from type_cour where id=:typeCour))");
Sachant que tu fais :Select id from type_cour where id=:typeCour
.... id=:typeCour ..... donc pourquoi faire une sous-requête ??
Idem pour Tranche....
Où vas tu chercher ta requête ??
Il suffit de faire$sql = "Insert into couter(montant,id_tranches,id_type_cour) Value(:montant, :tranche, :typeCour )"; $req = $cnx->prepare($sql);
-
J'ai essayé de le faire mais sa me fait exactement la même erreur sur un autre formulaire, donc j'ai due faire une sous requête vu comme c'est sur une table étrangère
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
La structure de la table
J'ai modifié comme tu me l'a dis mais sa met maintenant ça comme erreur: Erreur !: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`stage`.`couter`, CONSTRAINT `couter_type_cour_FK` FOREIGN KEY (`id_type_cour`) REFERENCES `type_cour` (`id`))-
-
-
Je ne t'ai pas demandé si la TABLE type_cour existe .... mais si elle contient des valeurs... et de surcroit.. l' ID que tu essaies d'utiliser dans ta variable $typeCour
Je ne t'ai, par ailleurs, pas demandé d'où venait la variable $typeCour ... mais quelle était sa valeur ( 1, 2 , 10 , 555 ???) que tu essaies d'insérer dans ta table . -
-
C'est marrant.... vu ton code... je pense que ça commence à 0 ..
<select name="typeCour" id="typeCour"> <option value="">..Type de cour..</option> <?php for ($i = 0; $i < count($getTypeCour); $i++) {?> <option value="<?= $i; ?>"> <?=$getTypeCour[$i]["libelle"];?> </option> <?php } ?> </select>
Il serait préférable de le modifier comme ceci<select name="typeCour" id="typeCour"> <option value="">..Type de cour..</option> <?php foreach($getTypeCour as $T ) { ?> <option value="<?php echo $T['id']; ?>"> <?php echo $T["libelle"]; ?> </option> <?php } ?> </select>
-

