[PHP] Article Admin : MONTER et DESCENDRE ?

Article Admin : MONTER et DESCENDRE ? [PHP] - PHP - Programmation

Marsh Posté le 03-06-2004 à 17:45:32    

Bonjour :)
 
C'est plus une question de reflexion que de PHP, mais j'aimerai isnaurer un systèm me permettant de "monter" les articles (leur affichage) via mon admin, ainsi que de les descendre. Comme on le voit pour les catégorie/forums sur les forums phpBB via l'administration.
 
J'ai bien pensé à une incrementation d'un idaf pour chaque article. "Monter" = $idaf++ et descendre inversement. Mais si je supprime un article et en reposte un, il y aura des trou dans les ids. Donc fonctionner comme cela ne semble pas être une bonne métode...
 
Avez vous des idées ?   :sweat:  
 
 :hello:

Reply

Marsh Posté le 03-06-2004 à 17:45:32   

Reply

Marsh Posté le 03-06-2004 à 17:51:29    

rainckill a écrit :

Bonjour :)
 
C'est plus une question de reflexion que de PHP, mais j'aimerai isnaurer un systèm me permettant de "monter" les articles (leur affichage) via mon admin, ainsi que de les descendre. Comme on le voit pour les catégorie/forums sur les forums phpBB via l'administration.
 
J'ai bien pensé à une incrementation d'un idaf pour chaque article. "Monter" = $idaf++ et descendre inversement. Mais si je supprime un article et en reposte un, il y aura des trou dans les ids. Donc fonctionner comme cela ne semble pas être une bonne métode...
 
Avez vous des idées ?   :sweat:  
 
 :hello:

utilise les dates.


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 03-06-2004 à 20:08:37    

rainckill a écrit :

Bonjour :)
 
C'est plus une question de reflexion que de PHP, mais j'aimerai isnaurer un systèm me permettant de "monter" les articles (leur affichage) via mon admin, ainsi que de les descendre. Comme on le voit pour les catégorie/forums sur les forums phpBB via l'administration.
 
J'ai bien pensé à une incrementation d'un idaf pour chaque article. "Monter" = $idaf++ et descendre inversement. Mais si je supprime un article et en reposte un, il y aura des trou dans les ids. Donc fonctionner comme cela ne semble pas être une bonne métode...
 
Avez vous des idées ?   :sweat:  
 
 :hello:


 
On s'en fout des trous. C'est normal.

Reply

Marsh Posté le 04-06-2004 à 09:00:02    

d'ailleurs, il n'est pas nécessaire de supprimer un article ... tu peux mettre une date d'expiration.
 
Comme ça, si tu en as à nouveau besoin, tu peux le ressortir ;)

Reply

Marsh Posté le 04-06-2004 à 19:12:29    

xla a écrit :

Tu les numérotes.
Chaque nouvel article a un numéro de position = au max des numéros de position + 1, et tu classes par numéro décroissant.
Quand tu veux repositionner un article, tu fais un update sur tous les articles dont le numéro de position est entre la position initiale et finale de ton article (tu incrémentes ou décrémentes de 1 selon que tu le montes ou descends) et ensuite tu changes ton numéro.

Si il y avit des trigers en MySQl ......... bonheur pour ce genre de manip

Reply

Marsh Posté le 07-06-2004 à 10:39:57    

Hermes le Messager a écrit :

On s'en fout des trous. C'est normal.


 
Non, car imagine :
 
J'utilise le rangement par id. Et lorsque je 'monte' un article, j'ajoute +1 a l'id l'article. S'il y a des trous dans mes ids (apres suppr d'un article), l'article ne bougera pas de place...

Reply

Marsh Posté le 07-06-2004 à 10:42:07    

xla a écrit :

Tu les numérotes.
Chaque nouvel article a un numéro de position = au max des numéros de position + 1, et tu classes par numéro décroissant.
Quand tu veux repositionner un article, tu fais un update sur tous les articles dont le numéro de position est entre la position initiale et finale de ton article (tu incrémentes ou décrémentes de 1 selon que tu le montes ou descends) et ensuite tu changes ton numéro.


 
Oui, mais pour que chaque article est un numéro attribué, il faut que j'utilise la fonton auto_increment comme pour les ids, et il risque d'y avoir des trous et donc même problème que plus haut...
 
N'y a t'il pas moyen d'eviter ces rous, pour parer simplement au problème  
 
En vous remerciant,
Raink

Reply

Marsh Posté le 07-06-2004 à 12:54:52    

rainckill a écrit :

Non, car imagine :
 
J'utilise le rangement par id. Et lorsque je 'monte' un article, j'ajoute +1 a l'id l'article. S'il y a des trous dans mes ids (apres suppr d'un article), l'article ne bougera pas de place...


 
Tu rajoutes +1 à tous les id qui suivent ton id que tu déplaces.

Reply

Marsh Posté le 07-06-2004 à 12:55:38    

rainckill a écrit :


 
N'y a t'il pas moyen d'eviter ces rous, pour parer simplement au problème  
 
En vous remerciant,
Raink


 
C'est "ta logique" le problème. RIen d'autre. Réfléchis bien, tu verras que les trous ne posent (dans ce cas précis) aucun problème.

Reply

Marsh Posté le 07-06-2004 à 20:10:17    

Hermes le Messager a écrit :

C'est "ta logique" le problème. RIen d'autre. Réfléchis bien, tu verras que les trous ne posent (dans ce cas précis) aucun problème.


 
Oui je veux bien croire que c'est ma logique qui bloque ;) Mais si l'on suis cette logique, les trous posent bel et bien un problème. Je vais essayer de donner un exemple :
 
J'ajoute un article (id= 1) puis deux autres (id=2 et id=3). Je supprime l'article ayant pour id 2.  
Bilan :
"Article machin" (id = 1)
"Article bidule" (id = 3)
 
Je fais un tri par id décroissant. Il affiche donc Bidule, et ensuite Machin. Je veux, via mon admin, "monter" l'article Machin. Je relève l'id de Machin de +1. L'id sera donc 2 (a la place de 1) mais l'ordre ne sera pas changé.
 
Mais c'est vrai qu cette mthode savère vrament mauvaise, car même sans cette histire de trous, des articles aurait le même id en les relevant (ou abaissant) de 1 pour l'ordre... Donc c'est une mauvaise solution c'est vrai.
 
Celle que tu proposes (rajouter +1 à tous les id qui suivent l'id déplacé) je ne l'a ompren pas vraiment... Pourrais tu m'aider à la traduire ?
 
Merci encore  :hello:

Reply

Marsh Posté le 07-06-2004 à 20:10:17   

Reply

Marsh Posté le 08-06-2004 à 02:58:02    

J'ai envie de te dire : te casse pas la tête à mémoriser leur position, contente toi de savoir qui précède qui :

id/nom/suit

1/Bidule/0
2/Truc/1
3/Machin/2
 
Je veux monter Machin, facile, je sais qui il suit (l'id 2), donc je modifie le champs suit de Machin en lui donnant la valeur du champs suit de Truc et celle du champs suit de truc en lui donnant l'id de machin :
 
1/Bidule/0
2/Truc/3
3/Machin/1
 
Et que ce soit descendre, insérer, supprimer un article, c'est toujours le même principe (ou à presque) qui revient :)
 
//edit :
 
J'avais juste oublié de préciser un truc, il faut aussi modifier le champs suit de celui qui suit l'élément déplacé. Là, ça peut varier suivant que tu fais le déplacement d'un élément ou de tout un bloc d'éléments :)


Message édité par naceroth le 08-06-2004 à 16:46:52
Reply

Marsh Posté le 08-06-2004 à 09:10:10    

Le principe de la liste chaînée ;)

Reply

Marsh Posté le 08-06-2004 à 09:11:25    

Ce qui revient à gérer un numéro d'ordre, c'est pareil, tu fais comme tu veux.
Avec un numéro d'ordre, il est plus compliqué de faire une supression ou un insertion dans la liste, mais en revanche, il est plus facile de vérifier l'intégrité de la base.
 
En tout cas, un truc à ne pas faire, c'est modifier l'id !
 
L'id, comme sont nom l'indique, c'est ce qui identifie.
Si un lien ou autre fait référence à un article, c'est par son ID, donc le modifier revient à casser toute possibilité de référencer un article.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 19-06-2004 à 23:57:52    

ui bien sur Mara's, que j'ai parler de "modifier" l'id, c'était apres dupliquer le champs.
 
Sinon astucieux en effet naceroth, je vais réfléchir dans ce sens :)

Reply

Sujets relatifs:

Leave a Replay

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