Se connecter / S'enregistrer
Votre question

Incrémentation mysql

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
14 Avril 2009 00:49:30

Bonjour à tous,

Je requiers votre aide pour 2 choses que j'ai du mal à résoudre, je m'explique :

J'ai une petite application php/mysql pour gérer une liste de contacts avec envoi de mails bref tout marche,
j'aimerai juste faire un nouveau champ (id_contact par ex) dans ma table avec une incrémentation pour chaque nouveau contact.
Facile sauf que j'ai déjà 500 contacts; alors comment puis-je faire pour créer un nouveau champ sql auto-increment qui prendrai en compte les contacts déjà présents (j'ai essayé une fois ca m'a tout remis à 0)??

Et puis 2ème truc c'est au niveau du php, comment je dois faire pour que lorsqu'on clique sur lien nouveau contact, ca m'ajoute automatiquement dans un champ texte le numéro suivant de mon champ id_contact de ma table sql? C'est-à-dire que si j'ai 500 contact dans ma base sql, en cliquant sur nouveau contact cela affichera 501 dans un champ texte.

Merci pour votre aide,

++

Autres pages sur : incrementation mysql

14 Avril 2009 13:39:20

Knagan a dit :
Bonjour à tous,

Je requiers votre aide pour 2 choses que j'ai du mal à résoudre, je m'explique :

J'ai une petite application php/mysql pour gérer une liste de contacts avec envoi de mails bref tout marche,
j'aimerai juste faire un nouveau champ (id_contact par ex) dans ma table avec une incrémentation pour chaque nouveau contact.
Facile sauf que j'ai déjà 500 contacts; alors comment puis-je faire pour créer un nouveau champ sql auto-increment qui prendrai en compte les contacts déjà présents (j'ai essayé une fois ca m'a tout remis à 0)??

Et puis 2ème truc c'est au niveau du php, comment je dois faire pour que lorsqu'on clique sur lien nouveau contact, ca m'ajoute automatiquement dans un champ texte le numéro suivant de mon champ id_contact de ma table sql? C'est-à-dire que si j'ai 500 contact dans ma base sql, en cliquant sur nouveau contact cela affichera 501 dans un champ texte.

Merci pour votre aide,

++


Salut,
Il est simple de créer une nouvelle table avec les mêmes champs + 1 champ auto-incrément .
Puis, par programme (php) ou directement en SQL, par un jeu de select (dans la vieille table) suivi d'un insert (dans la nouvelle ==> qui fera l'autoincrement) , tu rempli la nouvelle table. Une fois fini, tu fais un dump complet de tes 2 tables dans un fichier, et tu drop les 2 tables APRES avoir vérifié le dump!!
Tu édites ton fichier de dump , et tu vires l'ancienne table, tu renommes la nouvelle (qui devient l'ancienne) et tu réinjecte dans ta bdd.

Tant que ton dump ne fait pas 4go ... ca va vite :) 




Si tu n'y comprends rien, tu gère toi même l'auto-incrément dans la fonction d'insertion d'un nouveau contact .
14 Avril 2009 22:20:31

Salut,

Je comprend pas bien ton 1er problème vu que, par PhpMyAdmin, la création d'un nouveau champ auto incrément fonctionne bien et se remplit tout seul.
Fais une sauvegarde de ta table et teste ça :
  1. ALTER TABLE `Ma_table` ADD `id_contact` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST

... à moins que tu ais une vieille version de MySQL ?

Pour le 2ème pb, je pense que tu fais une confusion. L'id n'est pas là pour compter les contacts (en supprimant des contacts, ça fera des "trous" dans la numérotation sans tout renuméroter).
Pour compter :
  1. SELECT COUNT(*) FROM Ma_Table

Pour avoir le dernier id (juste après avoir fait un INSERT) :
  1. SELECT LAST_INSERT_ID();

Si tu te préoccupes d'obtenir à l'avance l'id du futur enregistrement pour pré-renseigner la case, par exemple, tu peux tenter :
  1. SELECT MAX(id)+1 FROM Ma_Table ;

... mais sans garantie (ça marchera pas si plusieurs utilisation simultanée du formulaire : tous auront le même chiffre)
AMHA mieux vaut ne rien afficher : l'utilisateur s'en tape, en général, des "id"... :kaola: 

Maintenant, à toi de mettre du php autour... :D 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS