Page 1 sur 1

Requête INSERT INTO avec variables

Posté : 04 avr. 2011, 22:36
par Muta
Bonjour à tous!

Voilà, j'ai fais ce code, qui a pour but de simplement faire une insertion dans une BDD.
Les données saisies par l'utilisateur sont correctement transmises depuis le formulaire, mais impossible de les transmettre dans la requête.

Voilà mon code:

<?php
//Initialisation des principales variables
$Bdd="norvegien";
$Password="Cu9buXnMAYzc6CVs";
$User="root";
$Connect="";
$Requetenum="SELECT * FROM theorie";
$Requete="INSERT INTO theorie (id ,theme,regle ,exemple ,lecon) VALUES ('".$Id."', '".$Theme."', '".$Regle."', '".$Exemple."', '".$Lecon."');";

//Ouverture de la BDD
$Connect=mysqli_connect("", "$User", "$Password", "$Bdd") or die ("Impossible de se connecter &agrave; la Bdd. <br>");

//Récupération des données
If($_POST[theme] != "") {$Theme=$_POST[theme];} Else {die("Le champs \"Titre\" est vide");};
If ($_POST[regle] != "") {$Regle=$_POST[regle];} Else {die("Le champs \"R&egrave;gle\" est vide");};
If ($_POST[exemple] != "") {$Exemple=$_POST[exemple];} ELSE {$Exemple=NULL;};
If ($_POST[lecon] != "") {$Lecon=$_POST[lecon];} ELSE {$Lecon=NULL;};


//Détermination du numéros à attribuer à l'ID
$Ok=mysqli_query($Connect, $Requetenum) or die ("Erreur dans l'envoi de la requ&ecirc;te de d&eacute;termination du nombre &agrave; attribuer &agrave; l'ID.<br>");
If (mysqli_num_rows($Ok))
	{$Num=mysqli_num_rows($Ok) or die ("Erreur dans la d&ecute;termination du nombre de lignes retourn&ecute;es! <br>");
	}
Else ($Num=0);
$Id=$Num+1;

//Affichage du tableau récapitulatif des données enregistrées
echo("<center>");
echo ("<table border=1>");
echo ("<tr><td><b>ID</b></td><td><b>Titre</b></td><td><b>R&egrave;gle</b></td><td><b>Exemple</b></td><td><b>Le&ccedil;on</b></td></tr>");
echo ("<tr><td>".$Id."</td><td>".$Theme."</td><td>".$Regle."</td><td>".$Exemple."</td><td>".$Lecon."</td></tr>");
echo ("</table></center>");

//Affichage de la requête
echo ("".$Requete."<br>");

//Préparation de la requête préparée
$Ok=mysqli_query($Connect, $Requete) or die ("Impossible d'ex&eacute;cuter la requ&ecirc;te d'insertion.<br>");
//Récupération du nombre de ligne créées.
$Num=mysqli_stmt_affected_rows($Init) or die ("Erreur dans la r&eacute;cup&eacute;ration du nombre de lignes affect&eacute;es.<br>");

//Affichage du nombre de ligne créées.
Echo("<br>L'insertion a g&eacute;n&eacute;r&eacute; {$Num} ligne(s).<br>");

//Fermeture de la BDD
$Ok=mysql_close($Connect);

?>
Et voilà le résultat, qui affiche le contenu des variables et la requête juste avant qu'elle soit transmise à la bdd.
ID Titre Règle Exemple Leçon
3 title contenue voilà l\'exemple 12
INSERT INTO theorie (id ,theme,regle ,exemple ,lecon) VALUES ('', '', '', '', '');
Impossible d'exécuter la requête d'insertion.
Je ne comprend pas pourquoi je n'arrive pas à faire passer le contenue des variables à la requête? Pourriez vous m'aider?

Re: Requête INSERT INTO avec variables

Posté : 05 avr. 2011, 08:00
par xTG
Rien ne me choque, essayes de rajouter ceci pour le debug : mysqli_error()

Re: Requête INSERT INTO avec variables

Posté : 05 avr. 2011, 09:24
par macgawel
Bonjour.

Comme affiché, la requête n'est pas correcte :

Code : Tout sélectionner

INSERT INTO theorie (id ,theme,regle ,exemple ,lecon) VALUES ('', '', '', '', '');
En même temps, c'est un peu logique... Ton code :
// Tu créés la chaine $requete avec les valeurs actuelles de $id etc.
$Requete="INSERT INTO theorie (id ,theme,regle ,exemple ,lecon) VALUES ('".$Id."', '".$Theme."', '".$Regle."', '".$Exemple."', '".$Lecon."');";
//Récupération des données $id etc.
If($_POST[theme] != "") {$Theme=$_POST[theme];} Else {die("Le champs \"Titre\" est vide");};
Sinon, tu pourrais améliorer ta table, en lui indiquant que le ID est un champ auto-incrémenté. Du coup, c'est la BDD qui va gérer la numérotation. C'est plus sympa comme ça, non ? 8-)

Re: Requête INSERT INTO avec variables

Posté : 05 avr. 2011, 09:33
par moogli
Salut,

j'ajouterais un peu de lecture sur le sujet qui te pose soucis Les variables auto déclarées pourquoi c'est mal (vu la requete je dirais que ton register globals est à off, c'est vérifiable dans un phpinfo()).
dernière chose, pour la correction => Comment récupérer les valeurs d'un formulaire et pour compléter Comment valider un formulaire complexe avec php

bonne lecture ;)

@+

Re: Requête INSERT INTO avec variables

Posté : 05 avr. 2011, 22:27
par Muta
Merci pour vos réponses et pour la lecture!
Tout marche bien!
Merci!

Bonne continuation...