Bonsoir,
J'ai une requête insert pour une table de ma BDD.
Trois variables sont récupérées via $_POST; Une est en dur (un seul chiffre ID_LANG) et une est récupérée via un select sur une autre table (ID_PLAT) et s'affiche bien avec un "echo". Voici ma requête actuelle :
Quoi que je fasse, quelle que soit la syntaxe, avec points ou sans, avec guillemets, grands, petits, anti et autres et même sans rien du tout cette valeur n'arrive pas en place. J'ai, à un moment, essayé de mettre $monid = (int)monid; et... j'ai enfin enregistré ma requête dans la base mais ce n'est pas l'identifiant attendu qui est passé mais un... 0 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 // J'appelle l'ID_PLAT de la table PLATS $sql_id_plat = $DB_connect->query("SELECT nom_plat, id_plat FROM plats where nom_plat = '".$_POST['nom_plat_FR']."'"); while ($donnees = $sql_id_plat->fetch_array()) { echo $donnees['id_plat']; } $essai = $donnees['id_plat'] ; echo $essai; echo '<br>'; // $essai = (int)$essai; // echo $essai; echo '<br>'; //Requete INSERT dans PLAT_LANG. ID_PLAT vient de la requête précédante et ID_LANG est en dur dans cette requête... $sql_plats_lang = "INSERT INTO plat_lang (id_plat, id_lang, nom_plat, alt_plat, descr_plat) VALUES ( '".$essai."', 0, '".$_POST['nom_plat_FR']."', '".$_POST['nom_plat_FR']."', '".$_POST['descr_plat_FR']."') " ; if (!$result = $mysqli->query($sql_plats_lang)) { // Si la requête échoue. echo "Désolé, Le site a quelques problèmes."; echo "Erreur: Le traitement a failli, voici pourquoi : \n"; echo "Requête : " . $sql_plats_lang . "\n"; echo "Err. no : " . $mysqli->errno . "\n"; echo "Type d'erreur : " . $mysqli->error . "\n"; }
La plus part du temps j'ai un message d'erreur :
Et puis l'autre valeur qui ne passe pas est le 0 (id de la langue française). Alors j'ai changé pour mettre un "1" mais la aussi j'ai une erreur de syntaxe annoncée... Pourtant ce n'est qu'un caractère mais non je n'arrive pas à trouver la voie !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 "Requête : INSERT INTO plat_lang (id_plat, id_lang, nom_plat, alt_plat, descr_plat) VALUES ( '', 0, 'Poulet au curry', 'Poulet au curry', 'Un bon poulet avec un curry pas mal épicé') Err. no : 1366 Type d'erreur : Incorrect integer value: '' for column 'id_plat' at row 1"
Je me demande si ce n'est pas plutôt ma BDD qui est mal configurée et donc allergique aux chiffres ?!
J'ai enlevé les "unsigned zero fill", croyant que ce pouvait être les zéros en début de mes ID (qui proviennent d'autres tables pour les quelles elles sont définies en clefs primaires)...
Pourriez-vous me donner un coup de pouce SVP ? Merci d'avance et bonne soirée à tous.
Partager