11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Comment faire pour faire afficher le résultat d'une requête SQL sous forme de tableau dans une infobulle ?

Merci pour votre aide.
Modérateur
Bonjour angus42 et bienvenue, Smiley smile

Pour faire une simple infobulle, tu peux soit passer par JS soit par CSS comme expliqué ici ou . La mise en forme n'est qu'une question CSS mais tout dépend du code obtenu après requête.
le problème est double en fait :

1- je dois récupérer une donnée pointée par la souris (onmouseover) et la passer en paramètre à la requête SQL

2- je dois afficher le résultat de la reqête sous forme de tableau dans l'infobulle
Modifié par angus42 (14 Oct 2006 - 21:19)
Modérateur
Et comment comptes-tu faire pour ceux qui n'ont pas JS ?
Modifié par koala64 (14 Oct 2006 - 21:38)
Bonne question, je ne me la suis pas posée car je pensais que c'était la seule façon de faire des infobulles. En CSS, ça donnerait quoi ?
Modifié par angus42 (14 Oct 2006 - 22:34)
Modérateur
Le problème n'est pas vraiment les infobulles mais plus le fait que tu ajoutes du contenu qui n'est accessible que par JS. Le mieux serait déjà de faire l'action au clic sur un lien, ce qui permet de faire la requête avec PHP et non JS pour la rendre accessible à tout le monde.

Une fois la partie PHP effectuée, tu peux soit te contenter de planquer le contenu via CSS et l'afficher au survol, soit utiliser JS pour la même chose, soit pousser plus loin en faisant la requête via Ajax ce qui permet de ne réactualiser que la partie souhaitée.
Actuellement je fais clic-requête-popup et ça fonctionne parfaitement bien. Le but de ma démarche est de supprimer la popup et de la remplacer par une infobulle mais je ne sais pas comment coder la séquence clic-requête-infobulle
Modifié par angus42 (14 Oct 2006 - 22:38)
Justement je ne sais pas le formater pour le mettre dans l'infobulle.

Actuellement, je déclenche l'ouverture de la popup en cliquant sur une donnée affichée sous forme de lien, cette donnée est passée en paramètre à la requête. Ensuite, j'affiche le tableau issu de la requête dans une popup. Le tout en PHP.

Je voudrais faire la même séquence mais en remplaçant la popup par une infobulle.

Je dois me déconnecter. Je consulterai ta réponse demain.
Bonne nuit et merci de prendre le temps de réfléchir à mon problème.
Modifié par angus42 (14 Oct 2006 - 22:54)
Modérateur
hum... euh... Lorsque tu fais une requête en cliquant sur le lien, tu obtiens du (X)HTML, ici un tableau contenu dans une infobulle (div), et tu inclus le tout dans ta page. Il n'y a plus qu'à mettre tout ça en forme via CSS pour obtenir ce que tu souhaites lorsque l'infobulle est affichée. Donc, jusque là, rien d'anormal... Il n'est question que de PHP, (X)HTML et CSS. Ensuite, tu fais un script JS qui planque l'infobulle puis qui, au survol du lien, affiche l'infobulle et qui, lors d'un onmouseout sur ce même lien, la fait disparaître...

Pour le rollover JS, un exemple est donné ici.

C'est le plus simple pour ce que tu cherches à faire. Smiley smile

Après, il y a bien Ajax pour éviter le rechargement complet de la page mais est-ce bien utile ? Pour un petit ajout de contenu, ce que je t'ai dit auparavant suffit amplement. Ajax se justifie dès lors que le contenu est réellement important, donc pas vraiment pour une infobulle basique.

Je te donne malgré tout un exemple de ce que ça donnerait via Ajax.

En gros, la différence majeur avec Ajax est que l'infobulle est ajoutée dynamiquement au survol du lien. Si l'objet XHR n'est pas supporté, comme je l'ai volontairement fait pour Opera (because Opera + JS -> /me Smiley malade ), le tableau est ajouté au clic sur le lien.

J'espère que tu comprendras en regardant le code JS que je ne vais pas prendre le temps de tout expliquer... J'ai quand même d'autres choses à faire que de passer de nombreuses heures pour une seule et même personne, hein... Smiley cligne