5545 sujets

Sémantique web et HTML

Bonjour à la compagnie
J'ai un tableau de quelques lignes mais 180 colonnes... (6 mois)
Chaque mois a ses jours et dates, ça fonctionne nickel.
Chaque mois est perfusé sous colspan selon son nombre de jour.
J'ai fait en sorte que du mois 07 on aille vers 08 ou vers 06. Le mois se recale impecc dans la fenêtre.
MAIS (je ne suis pas là pour me vanter mais pour quémander votre aide), même si chaque mois possède une id qui sert pour les déplacements, je n'arrive pas à utiliser cette id pour revenir après un détour via un double formulaire vers le mois d'où est partie la requête : j'aimerais pouvoir enregistrer l'idée du mois pour la passer avec le $_SERVER['PHP_SELF'].

Je peux donner du code mais cela n'ajoutera pas grand chose à la question :
Je vois l'id du mois dans l'adresse de navigation, comment faire pour la transformer en variable ?
Je vous remercie pour vos chaleureux éclairements (et mon épouse aussi puisque c'est surtout à elle que vous rendrez service...)
Belle journée

PS : je précise que je n'ai toujours aucune notion d'ajax... et que mon javascript est un peu toujours au petit bonheur la chance (donc je ne m'en sors que rarement avec lui...)
Je précise aussi qu'avant d'arriver sur ce louable forum, j'ai cherché pas mal sur le web sans rien trouver de clair si ce n'est rien du tout : je ne sais p-e pas poser les bons mots clés....
Modifié par Patrick30 (18 May 2022 - 22:02)
Salut,

perso j'ai un peu de mal à visualiser à quoi ressemble ton appli Smiley sweatdrop

C'est quoi cette histoire de double formulaire ? O_o Cela m'a l'air important mais tu passes vite ça sous le tapis Smiley ohwell

Où est ta variable dans l'adresse de navigation ?

A priori cela devrait être un bête $_GET['mois'] mais je suppose que cela doit être plus compliqué que ça
Ahhh je n'avais pas penser que c'était d'une ancre qu'il parlait Smiley lol

Si cela n'a pas changé, cela ne sera pas possible en "pur php". L'ancre n'est pas envoyé au serveur.

Par contre on doit pouvoir magouiller facilement avec du javascript. On peut obtenir l'ancre facilement avec cette ligne de javascript :
window.location.hash

Pour ensuite le transmettre au formulaire on doit pouvoir faire une modification du formulaire au moment du submit :
- soit rajouter un champs hidden qui contiendra l'ancre
- soit modifier l'action pour lui rajouter un "?hash=window.location.hash"

Edit : En regardant rapidement on peut même mettre un ecouteur d'evenement qui regarde quand change l'ancre (vu ici : https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent ). Du coup on doit pouvoir faire un petit code du genre (en supposant que ton formulaire à un champs hidden qui s'appelle "Ancre".

function locationHashChanged() {
document.getElementById("Ancre").value= location.hash;
}
window.addEventListener('hashchange', locationHashChanged);


Modifié par Mathieuu (19 May 2022 - 16:11)
Bonjour, et merci à tous les deux. Je vais étudier ça.
J'ai dû partir en déplacement et du même coup le développement lié à ma question tombe en berne pour 2-3 jours.
Je reviens vers vous au plus vite, et encore merci pour ces éléments de réponse.
A +
Bonjour

gcyrillus a écrit :
Une id se cible via #id dans une url , c'est aussi une ancre

Oui Cyrillus, je sais ... mon problème est juste d'identifier l'id en cours d'affichage ... avant ou après il y en a d'autres, chacune liées à un mois différent.

Si je sais (ou plutôt si le script sait) quel est le mois en cours d'affichage qui a peut-être été atteint via le scroll, c'est-à-dire sans passer par un clic mais même si il a été atteint par un clic et que son # est affiché dans la barre d'adresse alors je devrais savoir faire. Mais je ne trouve pas comment récupérer ce Smiley biggol nom de dièze. Une fois que je l'aurai, je le balance à travers un GET et le retrouve quelques soient les étapes intermédiaires.
Les variables de serveur ne renvoie pas de complément d'adresse (enfin, je ne crois pas)
Mathieuu a écrit :
C'est quoi cette histoire de double formulaire ?

Où est ta variable dans l'adresse de navigation ?

A priori cela devrait être un bête $_GET['mois'] mais je suppose que cela doit être plus compliqué que ça


Merci. Tu peux regarder ma réponse à Cyrillus pour ce qui est du # et d'un GET ensuite.
Le "double formulaire" c'est juste pour dire que mon mois disparait (le tableau reprend au début) à chaque fois que j'inscris une donnée à travers un formulaire et que je passe ensuite par un forme de confirmation (d'où le mot double... Et je ne sais pas comment faire plus simple que de rappeler clairement quelles sont les données à enregistrer avant de les enregistrer)
Modérateur
Bonjour Patrick,

Mathieuu t'as fournis une réponse avec une definition, un exemple et une idée de comment se servir de la valeur récupérée: https://forum.alsacreations.com/topic-2-89602-1.html#p572260

En récupérant ton id (via js) et en le collant dans un input caché, coté traitement formulaire tu peux faire par exemple $monhashID = $_POST['hashID'] ; puis un header('location : mapge.php'.$monhashID); pour ré-afficher ta page sur l'ancre voulue.

Cdt

Edit : exemple basic pour remplir ton input https://jsfiddle.net/t456cLhn/
une fois rempli, il n'y a qu'a le traiter comme un autre champ et le coller à ton adresse de redirection, réaffichage

edit2 : tu peut aussi mettre à jour l'attribut action de ton formulaire si le traitement se fait sur la même page https://jsfiddle.net/t456cLhn/1/
Modifié par gcyrillus (22 May 2022 - 18:43)
Meilleure solution
Merci Cyrillus et Matthieuu
En fait comme dit dans mon introduction du sujet JS reste un peu trop mystérieux pour moi...
Je comprends mieux maintenant l'explication de Matthieuu.
Je marque comme résolu... et vais me dépatouiller, c'est bon pour ma formation.

A la prochaine, et encore MERCI. Smiley biggrin
Patrick30