Pas d'enregistrement dans base sql
Résolu
Aldebaran
-
Aldebaran -
Aldebaran -
Bonjour,
Je précise tout de suite que je suis plus ou moins débutante en ce qui concerne le php. Je dois créer une base de données pour gérer des archives, et j'utilise easyPHP pour ce faire. Les données sont enregistrées sur la base depuis un formulaire php.
J'ai donc créé ma base et mon formulaire, et je pense que le code tient la route. Le souci c'est que ma table reste désepérément vide... J'ai vérifié à plusieurs les paramètres de connexion à la base, (à savoir localhost, root, pas de mdp et le nom de ma base). J'ai aussi bien vérifié mes variables de récupérations de données, et je n'ai pas l'impression non plus que ça vient de là.
En plus, quand j'envoie des données via mon formulaire, je ne reçois aucun message d'erreur. c'est comme si les données s'enregistraient dans le vide... Du coup j'en viens à me demander si j'ai mal créé ma base au départ? J'ai fait tous les sites pour débutants en php pour trouver une réponse (le site du zéro, noshade.net, etc.), en vain...
Connexion à la base:
Le formulaire
Le fichier php qui va avec
Merci d'avance!! (je suis un peu désespérée là...)
Je précise tout de suite que je suis plus ou moins débutante en ce qui concerne le php. Je dois créer une base de données pour gérer des archives, et j'utilise easyPHP pour ce faire. Les données sont enregistrées sur la base depuis un formulaire php.
J'ai donc créé ma base et mon formulaire, et je pense que le code tient la route. Le souci c'est que ma table reste désepérément vide... J'ai vérifié à plusieurs les paramètres de connexion à la base, (à savoir localhost, root, pas de mdp et le nom de ma base). J'ai aussi bien vérifié mes variables de récupérations de données, et je n'ai pas l'impression non plus que ça vient de là.
En plus, quand j'envoie des données via mon formulaire, je ne reçois aucun message d'erreur. c'est comme si les données s'enregistraient dans le vide... Du coup j'en viens à me demander si j'ai mal créé ma base au départ? J'ai fait tous les sites pour débutants en php pour trouver une réponse (le site du zéro, noshade.net, etc.), en vain...
Connexion à la base:
<?php $hote = 'localhost'; $login = 'root'; $pass = ''; $base = 'bdd'; mysql_connect($hote, $login, $pass); mysql_select_db($base); ?>
Le formulaire
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Nouvelle notice</title> <style type="text/css"> <!-- .Style1 {font-family: Arial, Helvetica, sans-serif} --> </style> </head> <body> <form action="nouvelle_notice_post.php" method="post" name="nouvelle_notice" id="nouvelle_notice" methode="post"> <h2 align="center"><span class="Style1">Nouvelle notice</span></h2> <p> <select name="doc" size="1" id="doc"> <option>périodique</option> <option>lettre</option> <option>corresponce</option> <option>procès verbal</option> <option>photographie</option> <option>image</option> <option>dactylographié</option> <option>texte manuscrit</option> <option>carbone</option> <option>texte imprimé</option> <option>ronéotypé</option> <option>sténographié</option> </select> </p> <p><strong><span class="Style1">Titre</span><br /> <input name="titre" type="text" id="titre" maxlength="150" /></strong></p> <p><span class="Style1"><strong>Auteur</strong><br /> <input name="auteur" type="text" id="auteur" maxlength="150" /> </span></p> <p class="Style1"><strong>Date</strong><br /> <input name="date" type="text" id="date" maxlength="150" /> </p> <p class="Style1"><strong>Lieu</strong><br /> <input name="lieu" type="text" id="lieu" maxlength="150" /> </p> <p class="Style1"><strong>Editeur</strong><br /> <input name="editeur" type="text" id="editeur" maxlength="150" /></p> <p class="Style1"><strong>Notes</strong><br /> <textarea name="notes" id="notes" cols="55" rows="5"></textarea></p> <p class="Style1"><strong>Mots clés</strong><br /> <input name="mot" type="text" id="mot" maxlength="300" /></p> <p><span class="Style1"><strong>Côte</strong></span><br /> <input name="cote" type="text" id="cote" maxlength="55" /></p> <p> <input type="" name="button" id="button" value="Annuler" /> <input type="" name="button2" id="button2" value="Enregistrer" /> </p> </form> </body> </html>
Le fichier php qui va avec
<?php include('connexion.inc.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Notices - Enregistrement </title> <style type="text/css"> <!-- .Style1 {font-family: Arial, Helvetica, sans-serif} --> </style></head> <body> <h1><span class="Style1">Notice enregistrée</span></h1> <?php $doc = addslashes($_POST['doc']); $titre = addslashes($_POST['titre']); $auteur = addslashes($_POST['auteur']); $date = addslashes($_POST['date']); $lieu = addslashes($_POST['lieu']); $editeur = addslashes($_POST['editeur']); $notes = addslashes($_POST['notes']); $mot = addslashes($_POST['mot']); $cote = addslashes($_POST['cote']); mysql_query("INSERT INTO `archive` VALUES ('', '" . $doc . "', '" . $titre . "', '" . $auteur . "', '" . $date . "', '" . $lieu . "', '" . $editeur . "', '" . $notes . "', '" . $mot . "', '" . $cote . "')"); echo '<center><p>Le document a bien été ajouté à la base!</p> <p><a href="nouvelle_notice.php">Créer une nouvelle notice</a></p>'; } else { echo 'Aucune notice ajoutée'; } ?> </body> </html> <?php mysql_close(); ?>
Merci d'avance!! (je suis un peu désespérée là...)
A voir également:
- Pas d'enregistrement dans base sql
- Base de registre - Guide
- Enregistrement mp3 gratuit - Télécharger - Streaming audio
- Formules mathématiques de base - Télécharger - Études & Formations
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
- Enregistrement - Guide
5 réponses
rajoute un : or die("probleme de connection") avant le ; de mysql_connect
et un autre or die("probleme requete") avant le ; de mysql_query.
Tu pourras déja voir si ça plante à ces niveaux.
et un autre or die("probleme requete") avant le ; de mysql_query.
Tu pourras déja voir si ça plante à ces niveaux.
j'ai lu qu'en diagonal, mais dans ton formulaire,
tu fait une liste, du nom de doc, mais tu lui attribue pas de valeur
du coup si tu as mis le champ "doc" NOt null en base, la requete plante.
pour tester la requete:
autre possibilité, que j'utilise plus souvent c'est de faire ainsi :
ainsi tu as la requete et tu vois ce qui ne vas pas
tu fait une liste, du nom de doc, mais tu lui attribue pas de valeur
<select name="doc"><otpion value="1">valeur 1</option></select>
du coup si tu as mis le champ "doc" NOt null en base, la requete plante.
pour tester la requete:
if (mysql_query("INSERT INTO `archive` VALUES ('', '" . $doc . "', '" . $titre . "', '" . $auteur . "', '" . $date . "', '" . $lieu . "', '" . $editeur . "', '" . $notes . "', '" . $mot . "', '" . $cote . "')") ) echo "la requete est bonne"; else echo "la requete n'est aps bonne";
autre possibilité, que j'utilise plus souvent c'est de faire ainsi :
$sql='INSERT INTO `archive` VALUES ('', '" . $doc . "', '" . $titre . "', '" . $auteur . "', '" . $date . "', '" . $lieu . "', '" . $editeur . "', '" . $notes . "', '" . $mot . "', '" . $cote . "')'; echo $sql; mysql_query($sql);
ainsi tu as la requete et tu vois ce qui ne vas pas
Bonjour
Commencer par mettre à la fin de la query plutôt que :
Rajouter
Ce qui donnera la description de l'erreur !!
Cordialement
Irem
Commencer par mettre à la fin de la query plutôt que :
mysql_query("INSERT INTO `archive` VALUES ('', '" . $doc . "', '" . $titre . "', '" . $auteur . "', '" . $date . "', '" . $lieu . "', '" . $editeur . "', '" . $notes . "', '" . $mot . "', '" . $cote . "')");
Rajouter
$foo=mysql_query("INSERT INTO `archive` VALUES ('', '" . $doc . "', '" . $titre . "', '" . $auteur . "', '" . $date . "', '" . $lieu . "', '" . $editeur . "', '" . $notes . "', '" . $mot . "', '" . $cote . "')") or die (mysql_error()." --> "."INSERT INTO `archive` VALUES ('', '" . $doc . "', '" . $titre . "', '" . $auteur . "', '" . $date . "', '" . $lieu . "', '" . $editeur . "', '" . $notes . "', '" . $mot . "', '" . $cote . "')");
Ce qui donnera la description de l'erreur !!
Cordialement
Irem
J'ai iremplacé ma query avec le $foo et effectivement il me donne une description d'erreur:
C'est donc la colonne id qui pose problème dans la base... je l'ai pourtant mise en auto incrément et en primaire...
Code sql de la base:
Quel est donc le problème?
(Merci pour votre aide à tous, je commence à voir plus clair!!)
Incorrect integer value: '' for column 'id' at row 1 --> INSERT INTO `archive` VALUES ('', 'photographie', 'fdsq', 'sfd', 'jhfg', '', 'fgvds', 'bgfd', '', 'nhgd')
C'est donc la colonne id qui pose problème dans la base... je l'ai pourtant mise en auto incrément et en primaire...
Code sql de la base:
CREATE TABLE `bdd`.`archive` ( `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `doc` VARCHAR( 50 ) NOT NULL , `titre` VARCHAR( 250 ) NOT NULL , `auteur` VARCHAR( 250 ) NOT NULL , `date` INT( 50 ) NOT NULL , `lieu` VARCHAR( 250 ) NOT NULL , `editeur` VARCHAR( 250 ) NOT NULL , `notes` TEXT NOT NULL , `mot` VARCHAR( 250 ) NOT NULL , `cote` VARCHAR( 50 ) NOT NULL ) ENGINE = InnoDB
Quel est donc le problème?
(Merci pour votre aide à tous, je commence à voir plus clair!!)
Salut,
Il ne faut pas passer de valeur pour l'id ('' est une valeur, une chaine vide).
La requête doit ressembler à quelques chose comme
Il ne faut pas passer de valeur pour l'id ('' est une valeur, une chaine vide).
La requête doit ressembler à quelques chose comme
INSERT INTO archive(doc,titre,auteur ...) VALUES ('doc','titre','auteur' ...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question