Page 1 sur 1

Insertion dans une table

Posté : 02 juin 2008, 20:15
par nasbe
Bonjour,

J'ai réalisé ce code en PHP pour ajouter des données dans ma table. Le problème est le suivant :

Lorsque je renseigne mes champs et que j'appuie sur le bouton ajouter, rien ne se passe. Aucune insertion dans ma table, je n'ai pas de message d'erreur non plus. Si quelqu'un aurait une idée, je le remercie d'avance.

Code : Tout sélectionner

<?PHP extract($_GET); extract($_POST); $hostddb = "localhost"; $loginddb = "root"; $passddb = ""; $baseddb = "escobar"; $mysql_connect=mysql_connect($hostddb,$loginddb,$passddb); mysql_select_db($baseddb, $mysql_connect); // Ajout d'une soirée en cas d'appui sur le bouton Ajouter if (isset ($_REQUEST['AjouterSoiree'])){ // Connexion à la base de donnée $table = 'soiree'; // Si le l'authentification est incorrecte on affiche un message if ($lien == FALSE){ echo "connexion impossible à la base $bd"; } else { // Récupération des données rentrées par l'utilisateur $NomSoiree = $_REQUEST['NomSoiree']; $Date = $_REQUEST['Date']; $HeureDebut = $_REQUEST['HeureDebut']; $HeureFin = $_REQUEST['HeureFin']; $Musique = $_REQUEST['StyleMusical']; $NomDj = $_REQUEST['NomDj']; $Flyers = $_REQUEST['Flyers']; // Sinon on exécute la requête d'insertion $RequeteInsertionSoiree = "INSERT INTO $table VALUES ( '".addslashes($NomSoiree)."', '".addslashes($Date)."', '".addslashes($HeureDebut)."', '".addslashes($HeureFin)."', '".addslashes($Musique)."', '".addslashes($NomDJ)."', '".addslashes($Flyers); $result = mysql_query($RequeteInsertionSoiree); if($result) echo "Bravo, l'enregistrement est effectue"; else echo "une erreur est survenue, merci de réessayer plus tard."; } // Fermeture de la base mysql_close(); } ?> <?PHP // Ajout d'une manifestation en cas d'appui sur le bouton Ajouter if (isset ($_REQUEST['AjouterManif'])){ // Connexion à la base de donnée $bd ="escobar"; $lien = mysql_pconnect ("localhost", "root", ""); mysql_select_db($bd); $table = 'manifestation'; // Si le l'authentification est incorrecte on affiche un message if ($lien == FALSE){ echo "connexion impossible à la base $bd"; } else { // Récupération des données rentrées par l'utilisateur $NomManif = $_REQUEST['NomManif']; $DescriptionManif = $_REQUEST['DescriptionManif']; $HeureManif = $_REQUEST['HeureManif']; $Date = $_REQUEST['DateManif']; // Sinon on exécute la requête d'insertion $RequeteInsertionManif = "INSERT INTO $table VALUES('','$NomManif','$DescriptionManif','$HeureManif','$DateManif')"; mysql_query($RequeteInsertionManif); } // Fermeture de la base mysql_close(); } ?>

Posté : 02 juin 2008, 23:49
par Ryle
Test le résultat de tes mysql_query() et en cas d'erreur affiche la valeur de mysql_error().

En effet, php se contente juste de transmettre une chaine de caractère à ta base mysql. Si une erreur survient lors de l'exécution de la requête (problème de syntaxe, nom de colonne ambigu, nombre de paramètres erronné, etc) php n'en sait rien et c'est à toi de gérer les problèmes éventuels, le mieux pour cela étant d'avoir le message d'erreur retourné par ta base de données :)

En l'occurence, c'est une erreur de syntaxe dans ta requête. Tu peux également afficher la requête générée et vérifier directement (ou en la jouant dans MySQL ou phpMyAdmin) si elle n'est pas erronée, genre s'il ne manque pas une apostrophe ou une parenthèse quelque part... ;)

Posté : 03 juin 2008, 14:18
par nasbe
J'ai suivi tes conseils mais apparrement aucun changement, je commence a ne plus rien y comprendre, j'ai essayé beaucoup de chose différente. Voilà si jamais ma table soiree dans MySQL

NomSoirre (varchar100), Primary Key
Date (date)
HeureDebut (time)
HeureFin (time)
Musique (varchar 50)
NomDJ (varchar 20)
Flyers (BLOB)

Code : Tout sélectionner

<?PHP // Ajout d'une soirée en cas d'appui sur le bouton Ajouter if (isset ($_REQUEST['Ajouter'])){ // Connexion à la base de donnée $bd ='escobar'; $lien = mysql_pconnect ('localhost', 'root', ''); mysql_select_db($bd); $table = 'soiree'; // Si le l'authentification est incorrecte on affiche un message if ($lien == FALSE){ echo "connexion impossible à la base $bd"; } else { // Récupération des données rentrées par l'utilisateur $NomSoiree = $_REQUEST['NomSoiree']; $Date = $_REQUEST['Date']; $HeureDebut = $_REQUEST['HeureDebut']; $HeureFin = $_REQUEST['HeureFin']; $Musique = $_REQUEST['StyleMusical']; $NomDj = $_REQUEST['NomDj']; $Flyers = $_REQUEST['Flyers']; // Test de vérification des champs, si l'un des deux est vide, on affiche un message if(empty($NomSoiree)){ echo "Le champ de nom de la soiree n'as pas ete renseigne"; } else if (empty($Date)){ echo ("la date n'a pas ete renseigne"); } else { // Sinon on exécute la requête d'insertion $RequeteInsertion = "INSERT INTO '.$table.' ('NomSoiree', 'Date', 'HeureDebut', 'HeureFin', 'Musique', 'NomDJ', 'Flyers') VALUES('$NomSoiree','$Date','$HeureDebut','$HeureFin','$Musique','$NomDj','$Flyers')"; mysql_query($RequeteInsertion); echo "$RequeteInsertion"; mysql_error(); } } // Fermeture de la base mysql_close(); } ?> <html> <body> <h3>Administration des soirées </h3> <form Method="POST" Action="<?echo $_SERVER["PHP_SELF"]?>"> <fieldset> <legend>Ajouter une soirée</legend> <table> <tr></tr> <tr> <td>Nom de la soirée</td> <td><input type="texte" name="NomSoiree" size="40"</td> </tr> <tr> <td>Date</td> <td><input type="texte" name="Date" size="40"</td> </tr> <tr> <td>Heure de début</td> <td><input type="texte" name="HeureDebut" size="40"</td> </tr> <tr> <td>Heure de fin</td> <td><input type="texte" name="HeureFin" size="40"</td> </tr> <tr> <td>Style musical</td> <td><input type="texte" name="StyleMusical" size="40"</td> </tr> <tr> <td>Nom du DJ</td> <td><input type="texte" name="NomDJ" size="40"</td> </tr> <tr> <td>Flyers</td> <td><input type="texte" name="Flyers" size="40"</td> </tr> <tr> <td></td> <td><input type ="submit" name = "Ajouter" value="Ajouter"></td> </tr> </table> </fieldset> </form> </body> </html>

Posté : 03 juin 2008, 14:43
par Ryle
Ce sont les valeurs des variables que l'on met entre apostrophes (varchar, date, text, ...) pas les noms des colonnes ;)
$RequeteInsertion = "INSERT INTO '.$table.' (NomSoiree, Date, HeureDebut, HeureFin, Musique, NomDJ, Flyers) VALUES('$NomSoiree','$Date','$HeureDebut','$HeureFin','$Musique','$NomDj','$Flyers')";

Posté : 03 juin 2008, 15:21
par nasbe
Ok, j'ai corriger, mais ce ne change pas mon problème, lorsque j'appuie sur le bouton ajouter, je suis rediriger vers ma page d'accueil et aucune nouvelle entree figure dans ma table.

Voilà si jamais le code de ma page index, le problème vient peut-etre de là.

Code : Tout sélectionner

<? // Recupere les données en GET ou POST lorsque le parametre du server RegisterGlobals est a Off session_start(); extract($_GET); extract($_POST); $hostddb = "localhost"; $loginddb = "root"; $passddb = ""; $baseddb = "escobar"; $mysql_connect=mysql_connect($hostddb,$loginddb,$passddb); mysql_select_db($baseddb, $mysql_connect); if(isset($pswd)) { if(mysql_num_rows(mysql_query("SELECT * FROM personne WHERE Pseudo='".addslashes($login)."' AND Password = '".addslashes($pswd)."'"))==1) { $_SESSION['seslogid'] = $login; header("Location: ".$_SERVER['HTTP_REFERER']); } else { $errorlogin = 1; } } if(isset($logoff)) { session_destroy(); $_SESSION = array(); header("Location: ".$_SERVER['HTTP_REFERER']); } ?>