valeur ID dans MySql

Eléphant du PHP | 440 Messages

17 oct. 2007, 09:20

Bonjour,

j'ai un souci avec ma base MySql où, pour une raison que je ne comprends pas, les ID ne s'incrémentent plus et restent à 0.

Y a-t-il (sûrement !!) une fonction, qui permette, de repartir d'une valeur et d'ajouter 1 à chaque nouvel enregistrement ?

Merci pour votre aide.
Débutant complet en php/mysql. Merci pour votre aide.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

17 oct. 2007, 09:30

Poste le schéma de ta table sous la forme d'une instruction CREATE TABLE.

Eléphant du PHP | 440 Messages

17 oct. 2007, 10:03

Poste le schéma de ta table sous la forme d'une instruction CREATE TABLE.
clairement je dois faire quoi ?? :(
Débutant complet en php/mysql. Merci pour votre aide.

d0m
Mammouth du PHP | 1141 Messages

17 oct. 2007, 10:27

clairement je dois faire quoi ??
nous donner la structure de ta table.

Ton champ index id est bien en auto_increment?

Eléphant du PHP | 440 Messages

17 oct. 2007, 10:31

le champ id n'est pas en auto-incrément et je ne peux le mettre.

son type est mediumint
ses attributs : unsigned
Débutant complet en php/mysql. Merci pour votre aide.

d0m
Mammouth du PHP | 1141 Messages

17 oct. 2007, 10:38

l'auto-incrémentation est comme son nom l'indique justement fait pour "d'ajouter 1 à chaque nouvel enregistrement".

Si il n'est pas spécifié, la base ne va pas le faire tout seul quand tu insères un nouvel enregistrement.
Il va donc falloir le faire toi même c'est à dire lors de l'insertion lui préciser la valeur du champ id (sinon celui ci prendra la valeur par défaut qui est apparement 0 chez toi)

Il faut donc avant d'insérer faire une requête de type SELECT qui va obtenir le max de tes ids dans la table. Tu l'incrémente d'1 et tu insère ensuite ton enregistrement en précisant le champ id à cette nouvelle valeur.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 oct. 2007, 10:45

Poste le schéma de ta table sous la forme d'une instruction CREATE TABLE.
clairement je dois faire quoi ?? :(
Clairement, il te demande de poster le script de création de la table en question.

Le plus simple étant sous phpMyAdmin d'exporter la structure de la table, ce qui permet d'avoir toutes les infos sur les champs, les types, les tailles, les attributs, etc. :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

17 oct. 2007, 10:46

clairement je dois faire quoi ?? :(
Commencer par apprendre les bases :?: Commence par le manuel aux chapitres 11, 13 et 12. Ça te donnera 90% de ce dont tu as besoin, notamment SHOW CREATE TABLE.

Eléphant du PHP | 440 Messages

17 oct. 2007, 10:50

Voilà la structure de ma table :

Code : Tout sélectionner

Structure de la table 'sites_v234' -- CREATE TABLE sites_v234 ( id mediumint(8) unsigned NOT NULL default '0', id_cat mediumint(8) unsigned NOT NULL, titre varchar(100) NOT NULL, titre2 varchar(100) default NULL, titre3 varchar(100) default NULL, description varchar(255) NOT NULL, url varchar(150) NOT NULL, url_image varchar(150) default '', url_rss varchar(150) default NULL, nom_proprio varchar(50) NOT NULL, email_proprio varchar(75) NOT NULL, date_validation date NOT NULL, activation tinyint(1) NOT NULL default '1', niveau tinyint(1) unsigned NOT NULL default '5', nb_clics mediumint(8) unsigned NOT NULL default '0', moyenne_votes decimal(4,2) unsigned NOT NULL default '0.00', nb_votes mediumint(8) unsigned NOT NULL default '0', nb_com mediumint(8) unsigned NOT NULL default '0' ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Débutant complet en php/mysql. Merci pour votre aide.

ViPHP
ViPHP | 5924 Messages

17 oct. 2007, 11:02

Ton champ id doit être un champ de type entier, muni d'une clé primaire pour pouvoir être auto-incrémenté, soit par exemple :

Code : Tout sélectionner

id MEDIUMINT(8) UNSIGNED AUTO_INCREMENT PRIMARY
(ici les attributs NOT NULL et DEFAULT sont ignorés par le serveur)

Eléphant du PHP | 440 Messages

17 oct. 2007, 11:20

Quand je veux modifier la structure, j'obtiens ça :

Erreur
requête SQL:

ALTER TABLE `sites_v234` CHANGE `id` `id` MEDIUMINT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT

MySQL a répondu:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Débutant complet en php/mysql. Merci pour votre aide.

d0m
Mammouth du PHP | 1141 Messages

17 oct. 2007, 11:25

and it must be defined as a key
comme le dis l'erreur, ton champ doit être défini comme clé.

Eléphant du PHP | 440 Messages

17 oct. 2007, 11:35

j'ai finalement résolu mon problème.
IL y avait des doublons, donc pas de clé primaire, donc pas d'auto-incrément.

Merci à tous.
Débutant complet en php/mysql. Merci pour votre aide.