Rechercher : dans
Par :

Pas d'enregistrement dans base sql

Dernière réponse le 12 mai 2009 à 15:13:51 Aldebaran, le 12 mai 2009 à 11:58:10 
 Signaler ce message aux modérateurs

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:

<?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à...)
Configuration: Windows XP
Firefox 3.0.10

Meilleures réponses pour « Pas d'enregistrement dans base sql » dans :
Télécharger MS SQL Migrate VoirPour des raisons pratique ou quasiment professionnel, il est nécessaire de convertir des bases de données entre différents formats. Le principal, c’est qu’il n’y ait aucune perte de donnée lors de la conversion. MS SQL Migrate est...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...

1

rhiannon30, le 12 mai 2009 à 12:03:25

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.

Répondre à rhiannon30

2

nico7382, le 12 mai 2009 à 12:05:42

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

<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

Répondre à nico7382

3

irem, le 12 mai 2009 à 12:05:51

Bonjour

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

Répondre à irem

4

Aldebaran, le 12 mai 2009 à 13:37:19

J'ai iremplacé ma query avec le $foo et effectivement il me donne une description d'erreur:

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!!)

Répondre à Aldebaran

5

Dr Zoidberg, le 12 mai 2009 à 13:58:13

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

INSERT INTO archive(doc,titre,auteur ...) VALUES ('doc','titre','auteur' ...)

Répondre à Dr Zoidberg

6

Aldebaran, le 12 mai 2009 à 14:06:48

J'ai fait le test, mais en enlevant la valeur correspondant à l'id, j'ai toujours un message d'erreur:

Column count doesn't match value count at row 1 --> INSERT INTO `archive` VALUES ('photographie', 'fdsq', 'sfd', 'jhfg', '', 'fgvds', 'bgfd', '', 'nhgd')

Répondre à Aldebaran

7

 Aldebaran, le 12 mai 2009 à 15:13:51

Résolu en installant la version 2.01 d'easyphp... Je pense que l'erreur venait de quelque part dans le code sql mais je ne sais toujours pas où.

Répondre à Aldebaran
Collection CommentÇaMarche.net