[PHP SQL] Insert into [Résolu/Fermé]

Messages postés
651
Date d'inscription
jeudi 4 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2019
- - Dernière réponse : arthezius
Messages postés
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
- 9 déc. 2009 à 16:07
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
Afficher la suite 

12 réponses

Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
866
0
Merci
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
Messages postés
651
Date d'inscription
jeudi 4 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2019
35
0
Merci
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
Messages postés
651
Date d'inscription
jeudi 4 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2019
35
0
Merci
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
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
866
0
Merci
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."')"; 
Messages postés
651
Date d'inscription
jeudi 4 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2019
35
0
Merci
ben j'ai essayé avec un id et sans id mais ça ne change rien le pb est toujours la.
merci de ton aide
Messages postés
651
Date d'inscription
jeudi 4 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2019
35
0
Merci
up?
Messages postés
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
425
0
Merci
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.'")';
Messages postés
651
Date d'inscription
jeudi 4 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2019
35
0
Merci
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
Messages postés
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
425
0
Merci
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.
Messages postés
651
Date d'inscription
jeudi 4 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2019
35
0
Merci
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
Messages postés
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
425
0
Merci
Logique.

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

L'explication est là.

Passe la colonne de INT à BIGINT.

Messages postés
651
Date d'inscription
jeudi 4 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2019
35
0
Merci
OLLALALALALALALALALALALAL
quelle merde
enfin en tout cas
MERCI MERCI MERCI
j'aurais jamais trouvé
MERCI BCP

bonne journée
arthezius
Messages postés
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
425 -
Je me suis souvenu que INT était limité en taille sinon j'aurai pas trouvé non plus. :p