sujet délicat: auto incrément

Répondre
Bzh
le 31/07/2007 à 12:02
Bzh
Rooo... Je dis ça pour charrier un tit peu...

Maintenant, je n'arrive toujours pas à comprendre ton besoin...
moogli
le 31/07/2007 à 12:25
moogli
salutn

moi pers j'utilise un champ qui contient la position !
tu supprime un tuple, tu garde la position de celui ci et ensuite un simple
UPDATE table SET position = position-1 where position> $la_position_sauvegardé_moins_un;

et t'a la modif automatique :)

c'est simple et la position ne sera pas "trouée".

@+
Il en faut peu pour être heureux !!!!!
Bzh
le 31/07/2007 à 15:12
Bzh
Oui, mais non je ne suis pas d'accord avec vous...

Cette histoire de position est exactement comme la gestion des z-index en CSS !

Un calque avec la valeur 2000 en z-index sera au dessu d'un calque avec 1000 en z-index.

Que ce soit troué ou non cela ne change rien. C'est seulement vos requetes à la bdd qui sont mal pensée.

2000 > 1987 > 1325 > 1256 etc...
zebden
le 31/07/2007 à 15:58
zebden
Si c'est pour une classe, si tu as la date d'enregistrement et l'id auto-incrémenté, tu peux toujours faire un compteur Manuel avec php

genre

<?php
$cpt = 1;
while($bidulle) {
// Code
$cpt ;
?>

}

Après gère ta base avec l'identifiant qui doit rester une donnée abstraite.
zebdinou pour les intimes / Blog : http://www.zebden.fr
zebden
le 31/07/2007 à 16:01
zebden
les plusplus ne s'affichent pas...........
zebdinou pour les intimes / Blog : http://www.zebden.fr
moogli
le 31/07/2007 à 20:06
moogli
Bzh : donne une solution permettant de réaliser un classement avec mysql en enregistrant que le rang !

ensuite on en reparle, ton histoire de Z-index n'a aucun rapport !

( un 1er puis un 12ème c'est pas top ;) )

@
Il en faut peu pour être heureux !!!!!
Necnom
le 01/08/2007 à 01:09
Necnom
Moogli, je n'ai pas bien compris ce que tu as proposé.
Certes, il n'y aura pas de trou, mais ça ne fait pas de reclassement, non ? a moins ce que ça s'applique à tout le champs.
Pour Bzh qui n'a pas compris mon "besoin".
Imaginons une classe d'élèves, et il y a des tables ( tables et chaises :p). Il n'y a qu'une colonne de 31 tables
Chaque table est numéroté. de 1 à 31 par hasard. Donc la table 31 est celle qui est tout au fond de la salle.
Si l'élève de la table 24 part, celui de la table 25 prend ça place, celui de la table 26 prend la place de 25 etc ... et la table 31 sera vide.
Comme ça, si un nouvel élève arrive, il prend la table 31.
Le but est donc d'arriver à la table 1 ou d'y rester le plus longtemps.
---------

C'est plausible comme explication ça ? ( je l'espère smiley ) Ou ça ne justifie pas ce que je veux faire smiley.
smiley
Necnom :)
mojorisin
le 01/08/2007 à 08:14
mojorisin
Salut,
les clé primaire auto incrementée sont un mécanisme interne à mysql. Tu n'as pas à y toucher pour diverses raisons déjà expliquées plus haut.

Le classement de donnée s'effectue avec ORDER BY.

Tu peux également envisager l'utilisation de variable utilisateur si le order ne suffit pas.

@pos :=0;
SELECT *,(@pos := @pos+1) AS rang FROM table .....

Je te laisse le soin de regarder la documentation sur les variables utilisateur dans la doc de mysql (si c'est la base de donnée que tu utilise biensur :)
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
Necnom
le 01/08/2007 à 08:19
Necnom
j'y ai déjà pensé.
Utiliser les variables et afficher un le bon ordre.
Cependant, l'affichage n'est pas suffisant.
Juste afficher les positions grâce à l'ORDER BY etc ... et mettre dans l'ordre avec les variables comme tu l'as proposé, c'est très simple.
Mais les positions ne seraient pas attribuées à l'id correspondant.
Et si on chercherait la position genre :
SELECT position WHERE id=1223

ça serait pas possible...

Mais merci quand même pour ta proposition.
Necnom :)
zebden
le 01/08/2007 à 12:20
zebden
Faisons autrement :

ok Mr 1223 se casse, je suis Mr 1225 qu'est que ça change ? je passe Mr 1124, qui me prévient ? qui me retrouve grâce à ça ? Je vais brûler des voitures si je passe pas 1124 ?

Et surtout qui connait ma position si elle change souvent ?

Bref revois ton algo, je pense que si c'est même pas une question d'affichage alors à ce moment là tu t'égares.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre
LoadingChargement en cours