Pas d'enregistrement dans base sql

Résolu
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:
<?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:

5 réponses

rhiannon30 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   1
 
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.
0
nico7382 Messages postés 279 Date d'inscription   Statut Membre Dernière intervention   50
 
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
0
irem Messages postés 164 Date d'inscription   Statut Membre Dernière intervention   99
 
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
0
Aldebaran
 
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!!)
0
Dr Zoidberg Messages postés 529 Date d'inscription   Statut Membre Dernière intervention   100
 
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' ...)
0
Aldebaran
 
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')
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Aldebaran
 
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ù.
0