INSERT INTO avec AUTO_INCREMENT sur phpmyadmin

Résolu
Bonjour,

J'ai cette requête INSERT mais rien ne se passe dans la base de donnée:
$req="INSERT INTO client (nom, prenom, adresse, cp, ville, mail, tel) VALUES('".$_POST['nom']."','".$_POST['prenom']."','".$_POST['adresse']."','".$_POST['cp']."','".$_POST['ville']."','".$_POST['mail']."','".$_POST['tel']."')";

J'ai le champ num en AUTO_INCREMENT, c'est pour cela que je l'ai pas mis, mais ma requête ne passe pas, pouvez vous m'aider? :)

7 réponses

  1. Salut !

    Peux tu donné tout ton code ? Avec l'objet utilisé pour la PDO (mysql_connect, pdo, mysqli, etc...)
    Et également ton formulaire HTML :)

    Mais à première vue c'est une problème de cote / double cote !

    Jérémy
    0
    1. <!DOCTYPE HTML>
      <html>
      <head><title>Ajouter un nouveau client</title></head>
      <meta charset="UTF-8"/>
      <body>
      <?php
      if($_GET)
      {
      ?>
      <form name="frm" action="ajoutClient.php" method="POST">
      Num: <input type="text" name="num" size="5" value="<?php echo $_GET["num"]; ?>" readonly /><br />
      <br>Nom: <input type="text" name="nom" size="20" value="<?php echo $_GET["name"]; ?>" /><br />
      <br>Prénom: <input type="text" name="prenom" size="20" value="<?php echo $_GET["prenom"]; ?>"/><br />
      <br>Adresse: <input type="text" name="adresse" size="35" value="<?php echo $_GET["adresse"]; ?>" /><br />
      <br>Code Postale: <input type="text" name="cp" size="5" value="<?php echo $_GET["cp"]; ?>"/><br />
      <br>Ville: <input type="text" name="ville" size="20" value="<?php echo $_GET["city"]; ?>"/><br />
      <br>Adresse mail: <input type="text" name="mail" size="30" value="<?php echo $_GET["mail"]; ?>"/><br />
      <br>Téléphone <input type="text" name="tel" size="20" value="<?php echo $_GET["tel"]; ?>"/><br />
      <br>       <input type="submit" name="Bt_ajouter" value="Ajouter"/>
         <input type="reset" name="Bt_Annuler" value="Annuler"/><br />
      </form>

      <?php
      }
      else
      {
      $connexion=mysql_connect("localhost", "root", "")
      or die("Impossible de se connecter : " . mysql_error());
      mysql_select_db("base");

      if($connexion)
      {
      $req="INSERT INTO client (nom, prenom, adresse, cp, ville, mail, tel) VALUES('".$_POST['nom']."','".$_POST['prenom']."','".$_POST['adresse']."','".$_POST['cp']."','".$_POST['ville']."','".$_POST['mail']."','".$_POST['tel']."')";
      mysql_query($req);
      if ($req)
      {
      echo "<h1>Ajout effectué avec succès<h1>";
      echo "<a href='Client.php'>[Retour à l'affichage des Clients]</a>";

      }
      }
      mysql_close($connexion);
      }
      ?>

      </body>
      </html>

      Voilà le code ^^
      Oui, y a moyen, j'm'y retrouve plus trop avec toutes ses quotes! ^^'
      0
      1. A en croire ta requete, tous les champs de ta table s'attendent à recevoir des chaine de caractère du style 'abcd' est-ce correcte à ce niveau là?

        rajoute des '' à client (alt+7 puis espace de ton clavier)
        0
        1. Oui, c'est tous des varchar sauf le telephone et le code postale qui sont en char
          0
          1. essai : $toto=$_POST['toto'];

            $req="INSERT INTO 'client' (toto) VALUES('".$toto."')";
            0
        2. C'était bien un problème de quotes!
          J'ai inversé toutes les quotes avec les doubles quotes et vice-versa, désormais ça marche.
          Merci de votre aide :)
          0
          1. Fais voir un print_r($_POST) pour voir si ya bien quelque chose en post
            Ensuite met plutot mysql_query($req) or die("Erreur lors de la requete");
            pour voir si c'est la requete qui n'a pas marché.

            Et pour finir c'est mieux d'utiliser if(isset($_GET)) plutot que if($_GET)
            Et ton if ($req) ne sert pas à grand chose, car $req est un string et non le résultat de ta requete. Pour faire cela il faut mettre le mysql_query($req) dans le if.

            Dernier conseil : Dirige toi vers l'objet PDO, car mysql_connect n'est plus d'actualité :)

            EDIT : Le temps de faire la réponse et c'est résolu ! Donc tant mieux ! Mais prend quand même en compte mes petits conseils :)

            Jérémy
            0
            1. Ouaip, merci pour les conseils ;-)
              0