Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1490 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Ordre Arbitraire ( Catégories, etc... )

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ordre Arbitraire ( Catégories, etc... )

n°1452991
Mexican0
Posté le 05-10-2006 à 18:14:17  profilanswer
 

Bonjour, j'ai tout un script qui gere des catégories et des sous catégories.
J'ai fais un champ INT nommé 'pos' pour classer ces catégories selon un ordre arbritraire. Deux fleches ( haut ou bas ) permettent d'augmenter ou de diminuer pos dans la BDD.
Mais ça marche pas trop, la plupart du temps il faut cliquer plusieurs fois pour que une catégorie soit au dessus d'une autre ( par exemple... )
Vous auriez pas des idées pour qqchose de plus éfficace? Surtout que ça a l'air assez courant ce genre de systeme, donc si quelqu'un sait comment ça marche...
 
Merci

mood
Publicité
Posté le 05-10-2006 à 18:14:17  profilanswer
 

n°1452993
omega2
Posté le 05-10-2006 à 18:17:28  profilanswer
 

Si tu veux faire passer une catégorie aprés la catégorie qui la suivait, le plus simple, c'est d'inverser la numérotation de ces deux catégories. (par exemple, la catégorie situé en position 2 se retrouvera avec le "pos" = 3 et celle en position 3 se retrouvera avec le "pos" = 2)
 
C'est sur que si tu te contentes d'incrémenter ou de décrémenter la position de la catégorie que tu veux déplacer, ca posera probléme vu que tu te retrouveras au mieux avec deux catégories qui auront le même indice.


Message édité par omega2 le 05-10-2006 à 18:18:29
n°1452999
Mexican0
Posté le 05-10-2006 à 18:21:55  profilanswer
 

et comment je peux faire ça en une seule requete ?
 
Pour l'instant ma requete c'est ça ?
$sql_up = "UPDATE `lfs_cat` SET pos = pos + 1 WHERE id = '".$_GET['id']."'";
 
Sinon j'peux faire comment ?
 
Dsl mais en fait j'vois pas comment faire ce que tu m'as dit ( mais ça a l'air intéréssant. )


Message édité par Mexican0 le 05-10-2006 à 18:22:14
n°1453030
omega2
Posté le 05-10-2006 à 19:12:55  profilanswer
 

Pour faire, ça, fait en deux étapes :
Premiére étape, tu récupéres les positions des deux éléments à inversé.
Dans la seconde, tu met à jour la position en calculant la nouvelle position de la maniére suivante : pos = ($position1+$position2) - pos
Si pos = $position1, alors "pos" prend la valeur de $position2. Si pos= $position2 alors "pos" prend la valeur de $position1.
 
Ca, c'était la façon globale de le faire à condition de conaitre l'id des deux éléments.
 
Si tu ne conais que l'id d'une seule des deux catégories mais que leur position se suive, alors il faut récupérer la position correspondant à l'id et faire ensuite l'opération suivante :
pos = ($position + ($position+1)) - pos
 
$position contient la position récupéré juste avant. Le +1 peut d'ailleur être remplacé par un -1 en fonction du sens dans lequel tu déplaces ta catégorie.
 
Dans les deux cas, dans la seconde requette tu peux sélectionner les deux élément en fonction de leur position. Ca t'éviteras la création d'une troisiéme requette qui n'aurait servit qu'a récupéré l'id de la catégorie avec laquelle tu veux inversé.
 
Voilà pour la théorie, je te laisses écrire les requettes et on les corrigera ensuite si tu n'y arrives pas. ;)

n°1453034
Mexican0
Posté le 05-10-2006 à 19:21:50  profilanswer
 

Merci bcp, je vais me débrouiller avec ça :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Ordre Arbitraire ( Catégories, etc... )

 

Sujets relatifs
ordre d'initialisation des membres et warnings visual studio[.Net C# 2.0]Afficher les categories / sous-categories d'un forum
Problème avec requête sql et ordre d'affichage des champs [résolu]Solution la plus propre pour gérer un ordre d'affichage
Petit problème d'ordre numérique pour classement de fichiersNombre en ordre inverse
[Recherche dans SQL] L'ordre des termestrier une listbox par ordre alpha.
[Résolu] [Algo] Stabilisation et Système du premier ordre[ Batch Dos ] Ordre d'execution batch dos
Plus de sujets relatifs à : Ordre Arbitraire ( Catégories, etc... )


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR