8791 sujets

Développement web côté serveur, CMS

Pour HEYOAN notament mais aussi pour tous ceux qui ont cherché.

HEYOAN : pour une ou des raisons inconnues de moi, votre tuyau ne fonctionnait pas, il m'a fallu poursuivre la recherche.

Pour les autres, rappel rapide du besoin. Un forum, des topics à choisir, et, le choix fait, les réponses à ce topic. Lecture de Mysql avec une boucle while qui affiche, réponse après réponse, les données de la base sur ce topic précis (et choisi).

Mais l'affichage se fait 1, 2, 3, 4 etc... et la page se place en haut, sur la réponse 1 (la plus ancienne).

Comment faire pour que la page s'arrète automatiquement sur la réponse 24 (s'il y en a 24), en bas de page ? Lire la BDD à l'envers, pour l'usager que je suis ce n'est ni esthétique ni pratique.

Alors voilà : j'ai trouvé ça : (qui fonctionne parfaitement chez moi).

Mettre une ancre dans le premier <TD> de la boucle while, là où on charge les réponses une par une (<TD><A HREF='#' id='$id' name='$id'></A>

Pour cette ancre, se servir de l'id de la réponse (en autoincrement dans la BDD normalement).
Puis, dans cette réponse, dans un élément (img par ex.) mettre :

OnLoad=window.location.href='#$id'>

Si ça peut servir ce n'est que tant mieux.

Très cordialement.

Whombat
Modifié par whombat (22 Aug 2010 - 08:50)
Pourquoi ne pas avoir continué dans le fil déjà commencé ??


Sinon, mettre OnLoad=window.location.href='#$id' dans une balise img... euh non ce n'est pas du tout une bonne idée !
Pour peu que ton image n'ai pas été chargée, ta solution ne fonctionne pas. Et ce n'est pas le seul inconvénient.

Si tu veux absolument utiliser javascript pour te rendre jusqu'à ton ancre, place le code juste avant la balise </body>, entre des balises SCRIPT !

Encore un inconvénient : si javascript n'est pas activé ta solution ne fonctionne pas non plus.

Sinon, la méthode la plus correcte et la plus simple (personnellement je trouve que ta solution c'est du chipotage), c'est d'ajouter l'e lien vers l'ancre directement dans le lien vers la page.

Exemple : au lieu de te rendre sur la page "page.php" et puis d'utiliser javascript pour te rendre jusqu'au dernier message; tu te rends directement sur la page "page.php#ancre" !
Salut whombat,
tu aurait pu le faire aussi directement dans la requête avec un ORDER BY numero DESC.



$requete="SELECT pseudo,titre,post,numero,  FROM forum ORDER BY numero DESC";



Il va aller chercher tout les posts à partir du dernier. Donc ton dernier post serais en haut de page. Je ne sais pas si c'était ça ta question mais si oui tu peux le faire comme ça.

Alexandcote
Modifié par alexandcote (28 Aug 2010 - 16:10)
Désoler je viens de voir,

whombat a écrit :

Lire la BDD à l'envers, pour l'usager que je suis ce n'est ni esthétique ni pratique.


Merci