Pourquoi je peux pas enregistrer un nombre de 12 chiffres [Résolu]

Signaler
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
-
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
-
Bonjour,
je veux enregistrer des nombres de 12 chiffres dans ma base de donnée .
j'en voie 1 000 000 000 et je vois 2147483647 dans la base de donnée au lieu de 1 000 000 000 .
dans la base de données aussi, impossible de changer en 1 000 000 000 .
quelqu'un pourrait me dire pourquoi ??

merci d'avance

8 réponses

Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Bonjour,

L'explication de ton souci est.... comment dire... un peu flou.......

Enfin bon.. si j'ai bien compris :
Tu inserts dans un champ de ta BDD la valeur : 1 000 000 000
Et lorsque tu regarde ce champ (après l'insertion).. toi tu vois : 2147483647

Donc.. déjà.... Pourrais tu nous donner la structure de ta table et surtout, le TYPE de ton champ ??

Ensuite... l'insertion... tu la fais manuellement... ou bien c'est un script qui la fait ?
Si c'est un script... montre nous le code !!

NB : Pour poster du code sur le forum, n'oublie pas d'utiliser les balises de code !
Pour utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code




Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
1. structure e ma table :


-- Structure de la table 'produits'
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Et... c'est QUEL champ qui est concerné par ton souci ??

Et .. c'est quel BOUT de code exactement qui y enregistre quelque chose ???

Tu pourrais peut être essayer de faire un petit effort de rédaction... cela faciliterait grandement nos échanges et augmenterait sensiblement ta chance d'obtenir une réponse à tes questions... !
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
le champ ref
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
$sql="INSERT INTO produits(id,article,pa,pv,ref,id_pros) VALUES('','".$nom_pros."','".$pa."','".$pv."','".$ref."','".$id_pros."')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
... Bon... vu que tu nous as donné la structure de la talbe...produits
je suppose que le code PHP qui y insère les données est donc celui là :
$sql="INSERT INTO produits(id,article,pa,pv,ref,id_pros) 
VALUES('','".$nom_pros."','".$pa."','".$pv."','".$ref."','".$id_pros."')";


As tu fais un ECHO de ta variable SQL pour savoir si les valeurs qui s'y trouvent sont bonnes ??
$sql="INSERT INTO produits(id,article,pa,pv,ref,id_pros) 
VALUES('','".$nom_pros."','".$pa."','".$pv."','".$ref."','".$id_pros."')";

echo "<br><b> La requête est :</b> <br>".$sql."<br>";


...ça donne quoi ??

NB : Bien entendu... le nombre " 1 000 000 000" que tu essaies d'insérer dans la BDD... tu l'y met.. SANS les espaces.. ??!!
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Autre question....
As tu testé ta requête en DIRECT dans ta BDD ??

Par exemple...si tu y fais :
INSERT INTO produits ('id', 'article', 'pa', 'pv', 'ref', 'date', 'id_pros') VALUES
(16, 'DISK DUR', 500, 250, '100000000000', '', 1); 

Qu'est ce que ça donne ???
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
echo "<br><b> La requête est :</b> <br>".$sql."<br>";
donne:
INSERT INTO produits(id,article,pa,pv,ref,id_pros) VALUES('','CLEF USB','8000','50','100000000000','2')

mais dans la base de données j'ai plutot :
2147483647 au lieu de 100000000000
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
voici l'erreur que je reçois de la BDD:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''produits' ('id', 'article', 'pa', 'pv', 'ref', 'date', 'id_pros') VALUES (16, '' at line 1
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Tu obtiens ce message d'erreur quand ?
Avec quelle requête ?

=> Avec celle générée par ton code php ??
INSERT INTO produits(id,article,pa,pv,ref,id_pros) VALUES('','CLEF USB','8000','50','100000000000','2') 


Ou celle issue de ton DUMP :
INSERT INTO produits ('id', 'article', 'pa', 'pv', 'ref', 'date', 'id_pros') VALUES
(16, 'DISK DUR', 500, 250, '100000000000', '', 1);
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Et.... je te le répète encore une fois .....

TU AS UN ID AUTOINCREMENTE.... POURQUOI VEUX TU TOUJOURS LE RENSEIGNER LES DE TES INSERT.... alors que c'est ta BDD qui gère ça toute seule comme une grande ...??????

Donc.. ta requête (dans ton code PHP) devrait être :
INSERT INTO produits(article,pa,pv,ref,id_pros)
 VALUES('CLEF USB','8000','50','100000000000','2')


Et au passage.... tu as 7 Champs dans ta Table...(en comptant l' ID )... et je n'en voie que 5 dans ta requête .....
Sachant que TOUS tes champs sont en : NOT NULL, .....

Donc... il t'en manque un .. non ?
Je pense que c'est LA DATE .. qui manque...

INSERT INTO produits ('article', 'pa', 'pv', 'ref', 'date', 'id_pros')
 VALUES('CLEF USB','8000','50','100000000000','LA DATE','2')


Au passage.... une date dans une BDD... c'est un type DATE ou DATETIME ou TIMESTAMP... ce n'est pas un VARCHAR...
Il vaut mieux que tu modifies cela... car sinon tu risque d'avoir des soucis si tu souhaites faire des requêtes sur ces dates.....
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
1. avec :
INSERT INTO produits(id,article,pa,pv,ref,id_pros) VALUES('','CLEF USB','8000','50','100000000000','2')

il y a insertion


mais avec :
INSERT INTO produits ('id', 'article', 'pa', 'pv', 'ref', 'date', 'id_pros') VALUES
(16, 'DISK DUR', 500, 250, '100000000000', '', 1);
erreur
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Je pense avoir compris....

Il semble que tu ais DEJA un ID ... et donc finalement... tu ne veux pas AJOUTER une ligne... tu veux la MODIFIER .. non ???

Le souci vient du fait que l'ID ( qui est normalement auto-incrémenté) existe surement déjà... hors... une PRIMARY KEY ne peut exister en double...

Dans ce cas.. si c'est une Mise à jour que tu veux faire... ce n'est pas un INSERT que tu dois faire ... mais un UPDATE.
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
non ce n'est pas une mise a jour que je veux faire. je veux que chaque article ai une reference(ref) qui sera un nombre de 12 chiffre commençant par 100 000 000 000
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Donc... ne METS PAS l'id dans ta requête !
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
est ce que le probleme se trouve au niveau du champs ID ?? puisceque refne represente pas le champ ID
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Je reprend....

Tu fais des requêtes du genre :
INSERT INTO produits ('id', 'article', 'pa', 'pv', 'ref', 'date', 'id_pros') 

... ID ... est un champ AUTO INCREMENTE .... donc... tu n'as PAS à y toucher !

Il vaut donc mieux écrire :
INSERT INTO produits ( 'article', 'pa', 'pv', 'ref', 'date', 'id_pros') 


Et bien entendu... mettre les VALUES en fonction des champs dans lesquels tu fais l' INSERT
VALUES
( 'DISK DUR', 500, 250, '100000000000', '', 1);

En considérant que là...
Article = DISK DUR
pa = 500
pv = 250
ref = "100000000000"
date = ''
et id_pros = 1


NB : Comme je te l'ai souligné auparavant... pense qu'une date ne doit pas être de type VARCHAR dans ta BDD mais qu'il existe des types exprès ( DATE, DATETIME, TIMESTAMP)... Donc... pense à modifier ta BDD pour les utiliser.... !
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
OK MERCI JE VAIS TESTER