pb de auto incrementation

pb de auto incrementation - PHP - Programmation

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

Reply

Marsh Posté le 25-11-2002 à 11:37:41   

Reply

Marsh Posté le 25-11-2002 à 13:02:47    

personne  :??:

Reply

Marsh Posté le 25-11-2002 à 13:08:35    

$num--; pr la decrementation (si c bien ça que tu voulais)


---------------
CGP Kingmax PC3700/PC4000 - DFI Lanparty UT nF3 250Gb
Reply

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 [:ddr555]
Mais franchement, je vois pas tellement où est le souci qu'il y ait un "trou" dans les ID.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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;


---------------
CGP Kingmax PC3700/PC4000 - DFI Lanparty UT nF3 250Gb
Reply

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 [:slytutu5]

Reply

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é


---------------
CGP Kingmax PC3700/PC4000 - DFI Lanparty UT nF3 250Gb
Reply

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

Reply

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... :D


Message édité par cleanx le 25-11-2002 à 16:34:48
Reply

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... :D



Conaissais pas faut pas que je le perde ce truc et astuce. ;)

Reply

Marsh Posté le 25-11-2002 à 16:42:14   

Reply

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....

Reply

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..


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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..



:jap:

Reply

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... :D




 
Han, j'veux pas paraître agressif mais c'est horrible :o Si tu vides ta base, tes ID recommenceront depuis 50...


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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 :o Si tu vides ta base, tes ID recommenceront depuis 50...



enlève ta table et recré là, ton autoincrément sera à zéro. ;)

Reply

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 [:xp1700] Pour supprimer un fichier, rassure-moi, tu fais pas un formatage ?  [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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 [:xp1700] Pour supprimer un fichier, rassure-moi, tu fais pas un formatage ?  [:ddr555]



Ha ben si, pas de faiblesse face à windows. :p
 
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é.

Reply

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
 

Reply

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

Reply

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 :cry:

Reply

Marsh Posté le 25-11-2002 à 18:23:05    

c bon ct  
ALTER TABLE inscription_tbl AUTO_INCREMENT = 65

Reply

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 :o 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 :heink: , 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 :D .


Message édité par cleanx le 26-11-2002 à 14:25:20
Reply

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 :heink: , 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 :D .




 
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 :p


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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.

Reply

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 :D 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 [:ddr555]  
 
Enfin vala, quoi :)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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.

Reply

Marsh Posté le 26-11-2002 à 16:18:40    

++ :lol:
 
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 :
  1. $compteur = 1;
  2. while($resultat = mysql_fetch_array)
  3. {
  4.   echo "$compteur - ".$resultat["nom"];
  5.   $compteur++;
  6. }


Message édité par Taiche le 26-11-2002 à 16:19:04

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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 [:kalisto]


Message édité par Fred999 le 26-11-2002 à 16:20:01
Reply

Marsh Posté le 26-11-2002 à 16:25:16    

je le referai plus  :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed