Raffraichissement d'une liste de choix

Tony001
Invité n'ayant pas de compte PHPfrance

22 sept. 2011, 10:59

Bonjour,

Je suis en train de réaliser une page php dans laquelle j'affiche la liste des régions, départements, villes dans trois listes de choix (<select>) liées : lorsque je choisi une région apparaissent les départements et les villes de la région dans les listes de choix multiples respectives.
A chaque clic sur une des lignes des listes de choix, la page est rafraichie pour que d'une part les dépendances soient respectées et que la base de données soit renseignée des choix en temps réel.
Tout se passe très bien, techniquement, mais visuellement, je fais face à un problème. A chaque rafraichissement de la page, l'affichage des lignes dans les listes de choix est désorganisée pour, il me semble mettre la dernière ligne sélectionnée en début de liste visible. J'aimerai pouvoir reafficher la liste de choix dans l'état ou elle était lors du clic pour ne pas déstabiliser l'utilisateur.
J'ai recherché un attribut javascript qui pourrait me donner cet information et me permettre de gérer l'affichage de mes listes de choix, mais je n'ai pas trouvé.
Ma question :
Avez-vous une solution pour résoudre ce problème ?

Cordialement,

Tony

ViPHP
ViPHP | 2577 Messages

22 sept. 2011, 11:17

De façon analogue à l'envoi de la ligne sélectionnée, il faudrait que tu envoies le premier élément de ta liste pour le prendre en compte lors de l'affichage suivant au lieu de te baser sur la ligne sélectionnée.

Tony001
Invité n'ayant pas de compte PHPfrance

22 sept. 2011, 11:52

De façon analogue à l'envoi de la ligne sélectionnée, il faudrait que tu envoies le premier élément de ta liste pour le prendre en compte lors de l'affichage suivant au lieu de te baser sur la ligne sélectionnée.
Effectivement. Avez-vous une solution pour déterminer quelle est la première ligne visible dans la liste de choix ?

Cordialement,
Tony

ViPHP
ViPHP | 2577 Messages

22 sept. 2011, 12:19

Normalement tu le sais lorsque tu affiches la liste ou lorsque tu fais le select.

Si tu utilise un formulaire, tu ajoutes un input de type hidden et si tu utilises un lien tu l'ajoutes dans les paramètres.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 sept. 2011, 12:22

utiliser un select avec un order by pour avoir toujours la même liste.
lors de l'affichage du select une condition (if) pour pré sélectionner.

la liste sera toujours dans le même sens et l'élément visible sera celui sélectionné avant.

@+
Il en faut peu pour être heureux ......

Tony001
Invité n'ayant pas de compte PHPfrance

22 sept. 2011, 12:54

utiliser un select avec un order by pour avoir toujours la même liste.
lors de l'affichage du select une condition (if) pour pré sélectionner.

la liste sera toujours dans le même sens et l'élément visible sera celui sélectionné avant.

@+
Désolé, je n'avais pas été suffisamment clair dans mon explication. En fait c'est un <select> à choix multiple dont le "size" est fixé à 5 ou 10. Lorsque je fais un choix multiple, le premier à être affiché est, il me semble le premier élément déjà sélectionné dans la liste (et pas le dernier qui vient d'être sélectionné par l'utilisateur). La requête dans la base de donnée est déjà ordonnée "order by", ce qui me gène, c'est que je voudrais que la liste entre deux rafraichissement ne modifie pas les 5 ou 10 éléments visibles dans sa zone d'affichage (dites moi si vous avez besoin de plus d'éclaircissement).

Cordialement,

Tony

ViPHP
ViPHP | 2577 Messages

22 sept. 2011, 13:53

Bonjour,

Il y a une propriété "scrollTop". Tu peux en mettre la valeur dans une input hidden lors de l'appel à la page PHP et réaffecter cette valeur lorsque la page en réponse est chargé.

Edit : Pour tester le principe met en fin de page :
<script>
document.getElementById('?????').scrollTop = 100;
</script>

Tony001
Invité n'ayant pas de compte PHPfrance

22 sept. 2011, 22:29

Bonjour,

Il y a une propriété "scrollTop". Tu peux en mettre la valeur dans une input hidden lors de l'appel à la page PHP et réaffecter cette valeur lorsque la page en réponse est chargé.

Edit : Pour tester le principe met en fin de page :
<script>
document.getElementById('?????').scrollTop = 100;
</script>
Voilà l'information que j'attendais. J'ai mis en place cette astuce. Je teste demain et je vous tiens au courant. Merci.

Très cordialement,

Tony

Tony001
Invité n'ayant pas de compte PHPfrance

23 sept. 2011, 09:25

Bonjour,

Il y a une propriété "scrollTop". Tu peux en mettre la valeur dans une input hidden lors de l'appel à la page PHP et réaffecter cette valeur lorsque la page en réponse est chargé.

Edit : Pour tester le principe met en fin de page :
<script>
document.getElementById('?????').scrollTop = 100;
</script>
Voilà l'information que j'attendais. J'ai mis en place cette astuce. Je teste demain et je vous tiens au courant. Merci.

Très cordialement,

Tony
Testé et fonctionnel. Merci de vos réponses.

Très cordialement,

Tony

ViPHP
ViPHP | 2577 Messages

23 sept. 2011, 10:15

Pour info, je suis nul en javascript et je ne connaissais pas cette propriété avant de regarder sur google les propriétés des select