Découvrir l'auto incrément actuel ds ue base sql

Résolu
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010 - 11 mai 2006 à 21:02
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 - 12 mai 2006 à 22:17
Salut à tous,
est ce que quelqu'un sait commment découvrir l'auto incrément actuel d'un table???

Merci d'avance

13 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 mai 2006 à 21:36
Salut,

SHOW TABLE STATUS

tu récupères la table que tu souhaites et tu regarde le champ "autoincrement"

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
3
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
11 mai 2006 à 22:12
Salut à tous,

ah oui, c cool c vrai que j'avai déjà vu ce tableau en navigant dans phpmyadmin, mais je n'ai vraiment pas pensé à utilisé ca un jour!!!!!
merci c cool

Merci d'avance
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
11 mai 2006 à 22:36
Salut,
C' est un peu barbar comme technique Antho nan ?
Perso je ferais plustôt :
SELECT LAST_INSERT_ID(id) FROM `ma_table` ORDER BY `id` DESC LIMIT 1;

C' est beaucoup plus simple !

Code complet :
$res = mysql_query('SELECT LAST_INSERT_ID(id) FROM `ma_table` ORDER BY `id` DESC LIMIT 1;');
list($last_id) = mysql_fetch_array($res);
echo 'Dernier id enregistré : ',$last_id,'
'
,'id suivant : ',($last_id+1);

@+

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
<!--StartFragment -->Grâce à Immortal-PC votre ordinateur passera les âges.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 mai 2006 à 22:47
ah ouais pas bête j'y ai pas pensé ;) je pensais au max qui ne fonctionne pas toujours, et ça ça m'est pas venu à l'esprit :)

SELECT LAST_INSERT_ID FROM ma_table

suffit ;)
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
12 mai 2006 à 18:49
LAST_INSERT_ID en marche que si y'a un INSERT de fait dans le script de ta page.

Autrement, ==> MAX() ou SHOW TABLE STATUS
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 mai 2006 à 19:04
MAX ne fonctionnera pas quand t'auras fait quelques suppressions.

Pour le LAST_INSERT_ID ça ne fonctionne pas non plus, je viens de regarder. Bref reste le SHOW TABLE STATUS...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
12 mai 2006 à 19:13
MAX(champ_auto_increment) renverra toujours l'ID le plus haut :)
Suppression ou pas :)
Testé et garantie :)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 mai 2006 à 19:45
ça renverra l'id le plus haut, mais pas forcément l'id qui sera inséré après...

Bref en gros, t'as une table avec trois enregistrements :

1
2
3

l'auto incrément sur cette table actuelle vaut 4 (ça sera le prochain id inséré), MAX() vaut 3. déjà ça ne fonctionne pas (t'es obligé d'ajouter 1).

Maintenant tu supprimes l'id numéro 3

ta table devient :

1
2

l'auto incrément reste quant à lui à 4. Ton max() renverra 2, et même avec +1, ça foire.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
12 mai 2006 à 20:01
Ah vi exact.
M'en était même pas rendu compte !
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
12 mai 2006 à 22:01
Salut,
LAST_INSERT_ID() marche nikel, je l' ai testé
mais il ne faut pas faire
SELECT LAST_INSERT_ID() FROM `ma_table`;
Car cela revera des 0
Il faut donner le nom du champs en auto incrédiment !
SELECT LAST_INSERT_ID(id) FROM `ma_table`;
Après on veux juste savoir le dernier donc on ajoute
ORDER BY `id` DESC LIMIT 1;
Ce qui donne
SELECT LAST_INSERT_ID(id) FROM `ma_table` ORDER BY `id` DESC LIMIT 1;

@+

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
<!--StartFragment -->Grâce à Immortal-PC votre ordinateur passera les âges.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 mai 2006 à 22:06
Dans ce cas autant faire SELECT MAX(LAST_INSERT_ID(ton_champ))+1 FROM ta_table

ça reviendra au même, mais tu ne sélectionneras pas toutes les valeurs de la table inutilement.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
12 mai 2006 à 22:15
Re,
pas con ;-)
J' ai testé et ça marche nikel ;-)
Donc ça nous donne :
$res = mysql_query('SELECT MAX(LAST_INSERT_ID(ton_champ))+1 FROM `ta_table`;');
list($last_id) = mysql_fetch_array($res);
echo 'id suivant : ',$last_id;

Je crois qu' on peux fermer ce topic ;-) reste juste à valider la dernière réponce d' Antho ^^

@+

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
<!--StartFragment -->Grâce à Immortal-PC votre ordinateur passera les âges.
0
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
12 mai 2006 à 22:17
Oups :$
$last_id est à remplacer par $next_id dsl pour la faut :$
++

Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
<!--StartFragment -->Grâce à Immortal-PC votre ordinateur passera les âges.
0
Rejoignez-nous