Page 1 sur 1

Mettre un id automatiquement

Posté : 28 sept. 2005, 16:20
par castelli
Bonjour tout le monde , j'ai un petit probleme.

Je m'explique . Dans on formulaire d'inscrition , lorsqun membre s'inscrit je lui attribut automatiquement un id . Pour ce faire je me base sur le id le plus important et je l'incremente.
Hors j'ais un probleme que je ne trouve pas a ce niveau la .
Je fais donc appels a vous a default d'y arriver par moi meme

voici mon code
host = '********';
$user = '**********';
$pass = '************';
$db = '*********';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$maxid = "SELECT max(id) FROM util ";
$maxid = mysql_query($maxid,$link) or die ('Erreur : '.mysql_error() );
while($row=mysql_fetch_row($maxid))
{
    $rowid=$row[0];
}
$rowid++;


$query="INSERT INTO util (pseudo,code,email,id) VALUES ('".$pseudo."', '".$code."',  '".$email."',  '".$id."');";
mysql_query($query) or die (mysql_error);
                        
Mon probleme c'est qu'aucune id ne s'ajoute dans ma bdd

Merci de m'aider ;)

ps : si quelqun a une methode plus simple je suis preneur :)

Posté : 28 sept. 2005, 16:24
par heddicmi
Ce n'est pas une question de méthode, mais de logique... Tu remarqueras surement quand dans le code que tu montres, $id n'est jamais dénifis...

Posté : 28 sept. 2005, 16:26
par Tonio 76
Bonjour castelli,
Tu t'embête pour pas grand chose :
Si tu as une interface phpmyadmin, il te suffit, dans le champs ID de mettre les attributs suivants :
extra = autoincrement et cocher la case index.
Grace à cette petite maneuvre, l'ID s'autoincrementera de 1 a chaque nouvelle entrée ! :wink:

Posté : 28 sept. 2005, 16:28
par castelli
Euh .. a vi.. c pas bete cette petite remarque lol

a ton avis en passant par un champ caché (avec post ) sa devrai fonctionner?

Posté : 28 sept. 2005, 16:30
par krummy
Tu n'as plus besoin de t'occuper de ton id si il est en auto_increment :wink:

Posté : 28 sept. 2005, 16:30
par castelli
J'ai essailler en passant par l'autoincrenement de phpmyadmin mais le truc c'est que je comprend pas comment je dois me debrouiller dans le formulaire pour que cela fonctionne..

Faut il que je mette une valeur basique a l'id (genre 1 ) et phpmyadmin la changera automatiquement lors de lecriture de la valeur dans la base de donnéS?

Posté : 28 sept. 2005, 16:31
par krummy
Tu n'as plus besoin de t'occuper de ton id si il est en auto_increment :wink:
host = '********';
$user = '**********';
$pass = '************';
$db = '*********';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());


$query="INSERT INTO util (pseudo,code,email) VALUES ('".$pseudo."', '".$code."', '".$email."')";
mysql_query($query) or die (mysql_error);
Essaie avec ça

Posté : 28 sept. 2005, 16:32
par iclo
Si tu utilises la méthode préconisé par Tonio 76 il te suffit d'insérer les données dans la table, sans spécifier de valeur pour le champ id pour que la base de donnée se charge d'attribué un id qui sera unique (par les autres technique, tu risque touojours d'avoir des doublons et autres problêmes)
J'ai donc un peu de mal à comprendre ce que tu demandes concernant le champ caché

Posté : 28 sept. 2005, 16:38
par castelli
Arghh les gars suis desolé de vous embetez mais j'ai une erreur quand je me met en autoincrenement

la struture de mon champ id est varchar 4 not null autoincrennement

et l'erreur qu'il me dise est :

requête SQL:

ALTER TABLE `util` CHANGE `id` `id` VARCHAR( 4 ) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL AUTO_INCREMENT
MySQL a répondu:

#1063 - Incorrect column specifier for column 'id'


encore desolé de vous embetez.. mais vous savez pourquoi je peut avoir cet erreur ?

sa vient pitte du type du champ?

Posté : 28 sept. 2005, 16:41
par krummy
Ton type de champ doit être "INT" pour que ça marche...

Après je sais pas si un ID doit être le PREMIER champ de ta table ou pas, c'est peut-être ça qui pose probème aussi

Posté : 28 sept. 2005, 16:41
par iclo
un id est une valeur numérique, utilise donc un type int ou bigint(en fonction du nombre de donnée que pourra contenir la table)

[EDIT]Grillé par Krummy, mais petite précision, un int est limité à 127 en positif, donc un bigint est souvent plus conseillé

Posté : 28 sept. 2005, 16:48
par castelli
Merci les gars j'ai compris comment sa fonctionnait l'autoincrenement

sa focntionne nikel ;)

encore merci