[PHP SQL] Insert into

Résolu
Bonjour alors ça c'est un problème incroyable :
je fait un insert into dans ma page et je l'affiche, ça m'affiche ceci:
insert into Impression values('20091201046','1','0','0')

et lorsque je vais dans ma table fenetre j'ai ceci:
('2147483647','1','0','0')

donc c'est de ja pas le bon numéro et du coup lorsque j'insére quelque chose d'autre, il me dit que la cles est dupliqué car il veut toujours mettre ce numéro.

Voici le code

$numbon=$_POST['numbon'];

$insert="insert into Impression values('".$numbon."','".$edition."','".$cb."','".$autre."')";
echo "insert : ".$insert."<br>";
mysql_query($insert) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

On est d'accord c'est impossible mon histoire....
Merci de votre aide
Configuration: Windows XP
Firefox 3.0.15

12 réponses

  1. OLLALALALALALALALALALALAL
    quelle merde
    enfin en tout cas
    MERCI MERCI MERCI
    j'aurais jamais trouvé
    MERCI BCP

    bonne journée
    1. Je me suis souvenu que INT était limité en taille sinon j'aurai pas trouvé non plus. :p
  2. Logique.

    int (accepte des nombres de -2147483648 à +2147483647)

    L'explication est là.

    Passe la colonne de INT à BIGINT.

    1. Ok ok toujours la même chose

      <? session_start();
      include('../fonction/connect.php');

      $numerocommnade='20091201001';
      $edition='0';
      $cb='0';
      $autre='0';
      $insertion='INSERT INTO Impression VALUES("", "'.$numerocommnade.'", "'.$edition.'", "'.$cb.'", "'.$autre.'")';
      echo $insertion;
      mysql_query($insertion) or die('Erreur SQL'.mysql_error());
      ?>

      echo $insertion affiche :
      INSERT INTO Impression VALUES("", "20091201001", "0", "0", "0")

      mais dans ma base il y a
      (2, 2147483647, 0, 0, 0);

      c'est un truc impossible
      si par exemple je met
      $numerocommnade='2009120100'; //j'enlève un chiffre ou plus
      => la ça fonctionne le nombre inscrit est bien le nombre qui va aller dans ma bdd
      mais si je met
      $numerocommnade='20091201005';// avec un autre chiffre à la fin ou en ajoutant
      =>le nombre inscrit n'ira pas dans la bdd, mais c'est ce nombre 2147483647 qui ira pourtant dans le insert into c'est bien le chiffre de $numerocommnade qui apparait

      Je te dit c'est incomprehensible

      enfin merci bcp de ton aide
      1. Remplace:
        $requete=mysql_query($insertion) or die('Erreur SQL'.mysql_error());

        par:
        mysql_query($insertion) or die('Erreur SQL'.mysql_error()); 


        Mais sinon quelle est la nature du problème ?
        J'ai pas tout suivi et il faudrait que tu précises au passage ce que change ou non les changements qu'on te fait faire.
        Hésite pas à rajouter un
        echo $insertion;

        pour voir comment réagit ta requête et ce qui est traité par le serveur.
        1. Merci bcp de votre aide mais le probleme est toujours le même
          voici mon code

          <? session_start();
          include('../fonction/connect.php');

          $numerocommnade='20091201001';
          $edition='0';
          $cb='0';
          $autre='0';
          $insertion='INSERT INTO Impression VALUES("", "'.$numerocommnade.'", "'.$edition.'", "'.$cb.'", "'.$autre.'")';
          $requete=mysql_query($insertion) or die('Erreur SQL'.mysql_error());
          ?>

          voici ma table:
          CREATE TABLE IF NOT EXISTS `Impression` (
          `idImpression` int(10) NOT NULL auto_increment,
          `NumCmd` int(100) NOT NULL,
          `Edition` int(2) NOT NULL,
          `CB` int(2) NOT NULL,
          `Autres` int(2) NOT NULL,
          PRIMARY KEY (`idImpression`)
          ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

          et le contenu de ma table
          (1, 2147483647, 0, 0, 0)

          je ne comprend pas....
          Merci
          1. Première chose: les requêtes s'écrivent en majuscule.
            Donc:
            $numerocommnade='2009120100';
            $insertionbss="INSERT INTO Impression VALUES('".$numerocommnade."','".$edition."','".$cb."','".$autre."')"; 

            Ensuite, mais je ne sais pas si dans la finalité ça change grand chose, je met toujours les guillements à l'inverse de toi:
            $numerocommnade='2009120100';
            $insertionbss='INSERT INTO Impression VALUES("'.$numerocommnade.'","'.$edition.'","'.$cb.'","'.$autre.'")';

            Pour finir, si tu met un colonne id en premier avec un auto_increment, il faut le rajouter avec un champ vide dans ta requête et donc:
            $numerocommnade='2009120100';
            $insertionbss='INSERT INTO Impression VALUES("", "'.$numerocommnade.'", "'.$edition.'", "'.$cb.'", "'.$autre.'")';
            1. ben j'ai essayé avec un id et sans id mais ça ne change rien le pb est toujours la.
              merci de ton aide
              1. si je fait
                $numerocommnade='2009120100';
                $insertionbss="insert into Impression values('".$numerocommnade."','".$edition."','".$cb."','".$autre."')";


                il est passé ou ton premier champp dans Values(... ?

                insertionbss="insert into Impression values('','".$numerocommnade."','".$edition."','".$cb."','".$autre."')"; 
                1. je ne comprend rien
                  si je fait
                  $numerocommnade='2009120100';
                  $insertionbss="insert into Impression values('".$numerocommnade."','".$edition."','".$cb."','".$autre."')";
                  echo $insertionbss;
                  $requete=mysql_query($insertionbss) or die('Erreur SQL'.mysql_error());

                  il m'insére bien 2009120100 dans premiere colonne bdd

                  mais si je fait

                  $numerocommnade='20091201001';
                  $insertionbss="insert into Impression values('".$numerocommnade."','".$edition."','".$cb."','".$autre."')";
                  echo $insertionbss;
                  $requete=mysql_query($insertionbss) or die('Erreur SQL'.mysql_error());

                  il m'insére 2147483647 dans la première colone de ma bdd
                  Enfaite si $numerocommnade à un nombre de caractère < 10 c'est ok
                  et si $numerocommnade à un nombre de caractère > 10 il insére 2147483647

                  Alors j'ai vérifié ma table ma colone numCommande dans Impression est un int(100) donc ça ne vient pas de la
                  Autre idées???
                  Merci bcp
                  1. ok merci j'ai recréer un champs idImpression qui s'increment et qui est ma clés.
                    Mais le pb est toujours le même
                    insert into Impression values('','20091201001','1','1','1')
                    et dans ma base
                    4 ,2147483647,1,1,1

                    voici le code
                    $numerocommnade=$_GET['cmd'];
                    echo $numerocommnade."<br>";

                    $insertionbss="insert into Impression values('','".$numerocommnade."','1','1','1')";
                    echo $insertionbss;
                    $requete=mysql_query($insertionbss) or die('Erreur SQL'.mysql_error());

                    mais je fait par exemple :
                    $numerocommnade=2;
                    la ça fonctionne correctement
                    je ne comprend rien
                    merci de ton aide
                    1. as tu mis une cle primaire a ta table

                      perso je mets toujours le premier champ

                      id (ou num) en INT cle primaire autoincrement

                      rajoutes les en plus de tes autres champs

                      et ta requette devient donc:

                      $insert="insert into Impression values('','".$numbon."','".$edition."','".$cb."','".$autre."')"; 


                      premiere valeur vide, mysql se charge de l'incrementer