|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Bonjour,
Je me permet de poster cette demande afin de me dépêtrer d'un problème me faisant mal à la tête. A) Contexte : J'ai développé un module basique de gestion de catégories et de sous catégories en PHP couplé avec MySQL. Ce module permet de créer, modifier, supprimer une Catégorie et d'y associer des sous-catégories que l'on peut également modifier et supprimer. Les sous-catégories peuvent être classées dans l'ordre voulu de l'utilisateur via un champ "position" B) Problème : Imaginons la catégorie "test de matériel". Cette dernière contient trois sous catégories :
Ces trois sous catégories ont une position, cette position permet de modifier le positionnement côté visiteur.
Imaginons maintenant que l'utilisateur supprime la seconde sous catégorie. On se retrouve avec un "trou" entre la catégorie "vélos" ayant la position 1 et "bivouac" ayant la position 3. C) Question : Comment faire pour tester ce type de trou sachant que le trou peut aussi bien affecter la première sous catégorie (et donc commencer à 2), une autre en plein milieu voir à plusieurs endroits en même temps ? D) Code : Code :
Il faudrait donc pouvoir faire appel à une fonction qui supprimerai ces "trous" en modifiant les positions avant l'update . pouvez-vous me donner des axes de réflexions ? Par avance merci. |
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Bertrand Étudiant Inscription : octobre 2010 Messages : 216 ![]() |
Bonjour,
je ne penses pas que la modification des positions se situe lorsque tu ajoutes mais plutôt lorsque tu supprimes. Du coup lorsque tu supprimes tu devrais mémoriser ca position et modifie toutes les positions suivantes en prenant leur position actuelle -1 (Dans ta requête mettre par exemple toutes les positions supérieures à celle supprimer prennent leur valeur actuelle -1 ) En espérant t'avoir aider
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître Ps: N'oubliez pas SVP
|
|
|
10
|
|
|
#3 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Effectivement, il serait peut être plus opportun de modifier toutes les positions après une suppression si et seulement si la suppression ne concerne pas la dernière position.
Et comme tu le dis, Si je fait ça : 1 2 3 => Suppression 4 5 Il faut faire ça : 1 => 1 2 => 2 4 => 3 5 => 4 |
|
|
00
|
|
|
#4 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Hello
Le mieux à faire est de renuméroter ta table de catégories.Vu qu'on a pas 500 éléments à changer, on se fiche pas mal d'envoyer autant de requêtes qu'il y a de sous catégories... Bref, ça ressemblerait à quelque chose du style: Code :
-- Edit, on pourrait optimiser un peu mieux en ne renumérotant qu'a partir du numéro supprimé. Je te laisse imaginer à quoi ça ressemblerait
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
10
|
|
|
#5 | ||
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Bonsoir et merci pour votre réponse
J'ai finalement réussi mais je n'ai pas appliquée la méthode qui consiste à tout modifier même si elle était largement valable. Je modifie que lorsque la position est supérieur à celle supprimée. Et voici le code : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com