[PHP SQL] Insert into

Résolu
widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   -  
arthezius Messages postés 3756 Statut Membre -
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. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
    0
  2. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    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
    0
  3. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    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
    0
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    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."')"; 
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    ben j'ai essayé avec un id et sans id mais ça ne change rien le pb est toujours la.
    merci de ton aide
    0
  7. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    up?
    0
  8. arthezius Messages postés 3756 Statut Membre 475
     
    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.'")';
    0
  9. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    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
    0
  10. arthezius Messages postés 3756 Statut Membre 475
     
    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.
    0
  11. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    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
    0
  12. arthezius Messages postés 3756 Statut Membre 475
     
    Logique.

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

    L'explication est là.

    Passe la colonne de INT à BIGINT.

    0
  13. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    OLLALALALALALALALALALALAL
    quelle merde
    enfin en tout cas
    MERCI MERCI MERCI
    j'aurais jamais trouvé
    MERCI BCP

    bonne journée
    0
    1. arthezius Messages postés 3756 Statut Membre 475
       
      Je me suis souvenu que INT était limité en taille sinon j'aurai pas trouvé non plus. :p
      0