pb de auto incrementation - PHP - Programmation
Marsh Posté le 25-11-2002 à 13:08:35
$num--; pr la decrementation (si c bien ça que tu voulais)
Marsh Posté le 25-11-2002 à 13:09:00
Ba j'ai pas de solution sous la main. Le problème ne sera pas PHP mais SQL. Cherche dans la doc http://www.mysql.com/documentation/mysql/bychapter/
Sinon, y a aussi la solution de vider toute la base et ça remet bien les compteurs à 0
Mais franchement, je vois pas tellement où est le souci qu'il y ait un "trou" dans les ID.
Marsh Posté le 25-11-2002 à 13:11:43
ah ok comme ca
ben le nb d'inscrit c'est select count(*) from table_inscrits;
Marsh Posté le 25-11-2002 à 13:22:07
Methodlol a écrit a écrit : $num--; pr la decrementation (si c bien ça que tu voulais) |
euh tu pourrai me donne la requete complette a mettre dans phpadmin
Marsh Posté le 25-11-2002 à 13:30:36
non ca c du PHP pas du SQL
enfin si t'y tiens, un update table set id=id-1; devrait fonctionner
table = nom de ta table
id = ta colonne clé
Marsh Posté le 25-11-2002 à 13:45:44
Methodlol a écrit a écrit : non ca c du PHP pas du SQL enfin si t'y tiens, un update table set id=id-1; devrait fonctionner table = nom de ta table id = ta colonne clé |
je fai dan phpadmin:
inscription_tbl set id=id-1;
inscription_tbl : ma table
id : c l'lid que je veu decremente
et sa marche pas
Marsh Posté le 25-11-2002 à 16:34:05
Heu en fait t'es obligé de changer la valeur de départ de ton AUTO_INCREMENT avec cette commande : "ALTER TABLE ta_table AUTO_INCREMENT = 50". Si tu exécute cette commande ton increment va repartir de 50. Donc si t'as n lignes dans ta table faut entrer n pour que ton entrée suivante corresponde à n+1, enfin ça je pense que t'aurais trouvé tout seul...
Marsh Posté le 25-11-2002 à 16:42:14
cleanx a écrit a écrit : Heu en fait t'es obligé de changer la valeur de départ de ton AUTO_INCREMENT avec cette commande : "ALTER TABLE ta_table AUTO_INCREMENT = 50". Si tu exécute cette commande ton increment va repartir de 50. Donc si t'as n lignes dans ta table faut entrer n pour que ton entrée suivante corresponde à n+1, enfin ça je pense que t'aurais trouvé tout seul... |
Conaissais pas faut pas que je le perde ce truc et astuce.
Marsh Posté le 25-11-2002 à 17:00:40
il suffit de faire une requete d'ajout où à la place de '' pour la valeur qui va dans le champ en auto-increment, tu met une valeur (celle qui correspond au trou en l'occurence...). Et un enregistrement sera créé avec l'id que tu auras indiqué et le trou sera comblé et toi tu sera comblé de bonheur etc....
Marsh Posté le 25-11-2002 à 17:02:45
le pire c'est que ça sert à rien, et en plus la question revient une fois par mois minimum...
si t'as des "trous" dans ta table et que ça influe sur tes données, t'as un problème de structure au niveau de ta base..
Marsh Posté le 25-11-2002 à 17:10:52
Sh@rdar a écrit a écrit : le pire c'est que ça sert à rien, et en plus la question revient une fois par mois minimum... si t'as des "trous" dans ta table et que ça influe sur tes données, t'as un problème de structure au niveau de ta base.. |
Marsh Posté le 25-11-2002 à 17:40:14
cleanx a écrit a écrit : Heu en fait t'es obligé de changer la valeur de départ de ton AUTO_INCREMENT avec cette commande : "ALTER TABLE ta_table AUTO_INCREMENT = 50". Si tu exécute cette commande ton increment va repartir de 50. Donc si t'as n lignes dans ta table faut entrer n pour que ton entrée suivante corresponde à n+1, enfin ça je pense que t'aurais trouvé tout seul... |
Han, j'veux pas paraître agressif mais c'est horrible Si tu vides ta base, tes ID recommenceront depuis 50...
Marsh Posté le 25-11-2002 à 17:44:28
Taiche a écrit a écrit : Han, j'veux pas paraître agressif mais c'est horrible Si tu vides ta base, tes ID recommenceront depuis 50... |
enlève ta table et recré là, ton autoincrément sera à zéro.
Marsh Posté le 25-11-2002 à 17:50:01
omega2 a écrit a écrit : enlève ta table et recré là, ton autoincrément sera à zéro. |
Donc en gros faut modifier sa table avec des ALTER pour combler les trous pis pour la vider on fait un bon vieux DROP des familles pour enchaîner la combo avec un CREATE Pour supprimer un fichier, rassure-moi, tu fais pas un formatage ?
Marsh Posté le 25-11-2002 à 17:57:48
Taiche a écrit a écrit : Donc en gros faut modifier sa table avec des ALTER pour combler les trous pis pour la vider on fait un bon vieux DROP des familles pour enchaîner la combo avec un CREATE Pour supprimer un fichier, rassure-moi, tu fais pas un formatage ? |
Ha ben si, pas de faiblesse face à windows.
HEureusement que non, mais les OS que j'ai installé chez moi ne plantent pas s'il y a sur un disque un secteur inutilisé avant le dernier secteur utilisé.
Marsh Posté le 25-11-2002 à 18:14:59
je fais
ALTER TABLE inscription_tbl id = 65
MySQL a répondu:
You have an error in your SQL syntax near 'id = 65' at line 1
Marsh Posté le 25-11-2002 à 18:17:02
popov a écrit a écrit : je fais ALTER TABLE inscription_tbl id = 65 MySQL a répondu: You have an error in your SQL syntax near 'id = 65' at line 1 |
C'est pas :
ALTER TABLE inscription_tbl SET id = 65
Marsh Posté le 25-11-2002 à 18:21:29
ALTER TABLE inscription_tbl SET id = 65
MySQL a répondu:
You have an error in your SQL syntax near 'SET id = 65' at line 1
non
Marsh Posté le 26-11-2002 à 14:23:16
Taiche a écrit a écrit : Han, j'veux pas paraître agressif mais c'est horrible Si tu vides ta base, tes ID recommenceront depuis 50... |
T'as pas confondu base et table dans ta remarque...? C'est un peu con con comme commentaire (sans être agressif non plus hein ), je ne vois pas en quoi c'est horrible , au moment où tu vides ta table t'as qu'à refaire un ALTER qui fait recommencer ton AUTO_INCREMENT à 1... Enfin faut pas se leurrer, c'est du bricolage tout ça .
Marsh Posté le 26-11-2002 à 15:15:33
cleanx a écrit a écrit : T'as pas confondu base et table dans ta remarque...? C'est un peu con con comme commentaire (sans être agressif non plus hein ), je ne vois pas en quoi c'est horrible , au moment où tu vides ta table t'as qu'à refaire un ALTER qui fait recommencer ton AUTO_INCREMENT à 1... Enfin faut pas se leurrer, c'est du bricolage tout ça . |
Alors dans l'ordre :
* ui, j'ai confondu base et table mais ça revient au même, le code devient pas beau pour que l'ID en base devienne beau... j'avoue que je vois mal l'intérêt
* pourquoi c'est horrible ? Bin foutre des ALTER partout pour une simple raison de "beauté" des ID, j'trouve ça plus que moyen. Tu parles à juste titre de bricolage et ce genre de truc, moins y en a, mieux ton appli se porte
Disons que le fait que les ID s'enchaînent, a priori t'en as rien à battre. Comme dit Sh@rdar, si le fait qu'il y ait des trous dans les ID pose problème au fonctionnement, c'est soit que la base est mal conçue, soit le code qui est problématique
Marsh Posté le 26-11-2002 à 15:33:35
Citation : Disons que le fait que les ID s'enchaînent, a priori t'en as rien à battre. Comme dit Sh@rdar, si le fait qu'il y ait des trous dans les ID pose problème au fonctionnement, c'est soit que la base est mal conçue, soit le code qui est problématique |
Je n'ai jamais dit que je conseillais cette "technique", c'est juste que Popov a apparemment un problème au niveau de sa table, donc si ça l'emmerde de tout revoir sa structure, et bien c'est une solution, à la M. Bricolage certes, mais une solution quand même. Sinon, je suis entièrement d'accord avec ce que tu as dit.
Marsh Posté le 26-11-2002 à 15:45:39
OK, mais disons qu'en général, quand quelque chose me semble louche, j'préfère demander le pourquoi du comment plutôt que de donner une bidouille Surtout là, passke je vois bien le gars revenir dans quelque temps avec un topic pour demander "mais pourquoi mon auto-increment démarre à 65 ?" tout simplement parce qu'il aura vidé sa table
Enfin vala, quoi
Marsh Posté le 26-11-2002 à 16:12:17
oui j'ai ce "problème" en fait, mon tableau qui affiche les membres, affiche leur "numero", qui est en fait l'id. Donc une suppression d'id revient à avoir un trou par conséquent, ce qu'il me faut c'est la "commande" pour dire "incrémente de 1 à chaque ligne" et pas "associe l'id de chaque entrée". Je pense que mon collège rencontre ce même problème.
Marsh Posté le 26-11-2002 à 16:18:40
++
En fait, comme je suppose que tu affiches toutes tes données via un while ou un for, il te suffit d'utiliser un bête compteur. Genre :
Code :
|
Marsh Posté le 26-11-2002 à 16:19:35
Master_Jul a écrit a écrit : oui j'ai ce "problème" en fait, mon tableau qui affiche les membres, affiche leur "numero", qui est en fait l'id. Donc une suppression d'id revient à avoir un trou par conséquent, ce qu'il me faut c'est la "commande" pour dire "incrémente de 1 à chaque ligne" et pas "associe l'id de chaque entrée". Je pense que mon collège rencontre ce même problème. |
Même motif, même sanction : les champs id auto-incrémentés ne doivent avoir normalement AUCUNE valeur fonctionnelle...
Au pire, si tu veux un affichage sans trous, fais-le en PHP avec un compteur
Edit : spavré, même sur Prog on se fait griller
Marsh Posté le 25-11-2002 à 11:37:41
voila jai un systeme d'inscription pour un lan en php et g un numeris de d'inscris en auto increment
le pb c'est que j'ai suprimer un inscrit(le dernie) je voudrai baisse lauto inscrement de 1 pour kil remette le numeros din'scri ke je enlever
comment on fai*
edit: je sui sou multimania