ordre php

WRInaute discret
Bonjour,

J'ai une liste de page en base de données (Page1, Page2...) et je cherche à mettre une notion d'ordre entre les pages.

En effet, un utilisateur pourra mettre la page 2 avant la page 1...

Je viens de développer avec un champs "ordre" en base, une gestion de l'ordre. mais c'est pas très pratique...

Quelqu'un aurait-il des fonctions ou explications magique ?

manu
 
WRInaute discret
Salut,

Je ne suis pas sur d'avoir compris, mais au cas ou, tu connais l'option "ORDER BY" ?

Select * from ListePage ORDER BY PageName
 
WRInaute discret
Non, en faite, l'affichage ne pose pas de problème (en effet order by ** ok)

mais c'est la gestion via le code PHP :

:arrow: exemple:

En bbd :

id | page | ordre
1 | page1| 1
2 | page2| 2

l'utilisateur veut mettre la page 2 avant la page 1 :

Dans le code PHP je place mon champs ordre = 1 pour la page 2 et ce même champs à 2 pour la page 1

je traite en PHP

En bdd cela donne comme résultat :

Donne :

id | page | ordre
1 | page1| 2
2 | page2| 1

Puis j'affiche avec un Order By $ordre

un peu chiant mais comment faire autrement ?
 
WRInaute discret
Je suis désolé mais je ne comprends rien.

Peux-tu expliquer de façon plus complète ton problème et si possible donner des bouts de code concernés par le problème ?

EDIT :
Tu as édité ton message et apporté quelques compléments.

Je ne comprends toujours pas le problème.
Pour afficher les pages (qui sont bien enregistrés dans ta DB) il faut bien les récupérer de ta DB non ?

Dans ce cas tu fais :
Code:
$res = mysql_query("SELECT * FROM ListePage ORDER BY order ASC");

while ($d = mysql_fetch_array($res))
 echo $d["PageName"]."<br>";
 
WRInaute discret
Bon, désolé, visiblement, je n’arrive pas à être clair

Mon problème : mettre en code php la notion d’un ordre entre les pages de mon site.

Plus précisément : pour le moment, j’ai un champ dans ma base de données nommé « ordre »

Logique ! ;)

Mon vrai problème c’est si je souhaite faire un changement entre 2 pages, disons en entre la page « disons Page1 et Page2 » c’est très vite chiant.

Exemple de code
Code:
	//pour changer l'ordre des pages
	if ($mode=="up_page") 
	{
		$OrdreMoinsUn = $ordre - 1;
		
		$sql_update_page="UPDATE c_pages_$langue SET ordre = '$OrdreMoinsUn' WHERE id = '$id_page' AND id_rubrique='$id_rubrique'"; 
		$result_update_page = mysql_query($sql_update_page);
	
		$sql_update_page2="UPDATE c_pages_$langue SET ordre = '$ordre' WHERE ordre = '$OrdreMoinsUn' AND id != '$id_page' AND id_rubrique='$id_rubrique'"; 
		$result_update_page2 = mysql_query($sql_update_page2);
	
	}
Voilà, si c’est toujours pas clair, c pas grave, une bonne nuit de sommeil m’apportera peut être la solution
 
WRInaute discret
Hum.. Je crois que je comprends un peu mieux.

Mais si tu up une page, tu sais donc avec qui tu inverses ta page théoriquement.
Donc théoriquement tu as l'id des deux pages.

A partir de là c'est pas difficile de faire tes requêtes mySQL non ?
 
WRInaute discret
oui, j'ai le code pour faire un "down" mais c'est pas très simple :

Dans ce cas présent, c'est pas très dur, mais j'ai fait un algorithme de malade si un user souhaite ajouter une page entre la 3eme et la 4eme sur 10 en tout...

dans ce cas, c'est pas très souple...
 
WRInaute discret
Je comprends mieux le problème.
L'astuce serait sans doute de ne pas avoir "d'id" pour tes pages.
Ou ne pas avoir d'ordre.

Ainsi l'id/ordre sert d'ordre/id.

Tu inverses deux pages (up une, donc l'autre down) ?
Les requêtes sont simples dans ce cas, tu mets +1 sur un id, et -1 sur l'autre.
Si tu as mis UNIQUE sur l'id ou un truc du genre, (ce qui serait logique) tu passes une page sur un id temporaire typiquement : 0.

Insérer une page ?
Peut-être que quelque chose du genre marche :
update set id += 1 where id in (select id from c_pages_$langue where id > '$numero_de_page_choisis_a_inserer')
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut