changer l'ordre d'affichage

Eléphant du PHP | 248 Messages

14 oct. 2008, 17:26

Bonjour,
dans ma base de données j'ai plusieurs images, qui sont affiché en fonction de leurs ID. J'aimerai rajouté un champs "position" afin de pouvoir les affichés dans n'importe quel ordre.

Auriez vous une fonction pour le faire.

J'ai essayé de trouver une solution mais en vain.

merci d'avance pour votre aide

ViPHP
ViPHP | 1996 Messages

14 oct. 2008, 20:54

Ici on rase gratis...

Plus sérieusement, essaye dans ta base d'indiquer une colonne position qui te donneras cette fameuse position. Ensuite avec une page admin tu donne cette position.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 248 Messages

14 oct. 2008, 21:06

Salut merci pour ta réponse,
ca je sais mais mon problème c'est quand j'ai 10 images qui sont dans cette position


1
2
3
4
5
6
7
8
9
10


et que je veut mettre l'image 10 en position 2 il faut que je modifie la position de l'image 2 jusqu'au 9eme

voila

ViPHP
ViPHP | 2287 Messages

14 oct. 2008, 21:18

Salut merci pour ta réponse,
ca je sais mais mon problème c'est quand j'ai 10 images qui sont dans cette position


1
2
3
4
5
6
7
8
9
10


et que je veut mettre l'image 10 en position 2 il faut que je modifie la position de l'image 2 jusqu'au 9eme

voila
C'est beaucoup plus clair comme problème (je pense que tu ne l'avais pas du tout bien expliqué dans ton post initial). Tu souhaites donc pouvoir gérer cet ordre dans une interface.

Déjà tu supposes que le champ d'ordre doit être un entier positif. Ce n'est pas obligatoire, même si c'est le cas le plus classique.

Le problème évident que tu as remarqué est que si tu veux insérer un élément en position 2 (entre l'élément d'ordre 1 et l'élément d'ordre 2), tu te retrouves obligé d'incrémenter tout ce qui est >=2, car il n'y a aucune possibilité dans l'univers entier positif entre 1 et 2.

Ca se fait très facilement en SQL :

Code : Tout sélectionner

UPDATE latable SET lechampordre=lechampordre+1 WHERE lechampordre >=2;
Quel est ton réel problème en fait ? :-)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

ViPHP
ViPHP | 1996 Messages

14 oct. 2008, 21:26

Bien Ok je vais t'aider un peu :
Utilises la fonction array_slice() http://www.manuelphp.com/php/function.array-slice.php bien pratique dans ton cas.
<?php
$tab = array (1,2,3,4,5,6,7,8,9,10);
$tab_temp1 = array_slice(0,1); //on récupère que la variable 1
$tab_temp2 = array_slice(1,8) //on récupère 2,3,4,5,6,7,8,9

array_push ($tab_temp1,10); //on insère la variabel 10 au premier tableau qui devient 1,10

$tab_fin = array_combine ($tab_temp1,$tab_temp2); //on fusionne les deux tableaux.

?>
il te reste plus qu'à tester où se trouve la clef de ta variable que tu veux "switcher" et ainsi calculer les données pour array_slice. Utilises array_keys http://www.manuelphp.com/php/function.array-keys.php pour cela mais là je te laisse un peu chercher...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 248 Messages

15 oct. 2008, 12:07

Bonjour,
merci à tout les deux de votre aide car j'arrivé pas vraiment à trouver la logique pour mettre ca en route.

je vais faire les testes et vous dire ou ca en est