11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour !

Voilà, je prépare une page en PHP dans laquelle j'aimerais obtenir des interactions à la souris sans recharger la page.

Par exemple dans une balise img : onMouseClic {$a=17;}
L'idée est de conditionner des applications par des clics de souris sur divers éléments.

Evidemment, ça n'exsite pas en PHP. Néanmoins, auriez-vous des ruses ou des pistes pour résoudre ce problème... (sans doute en javascript...)

Merci beaucoup !
Pour modifier des variables php, tu dois obligatoirement communiquer avec le serveur. Pour cela, tu as plusieurs choix :

1. Recharger la page
Avantages : plus accessible, compatible avec tous les navigateurs ou presque, facile à mettre en place
Inconvénients : temps d'attente, interaction visible

2. XMLHttpRequest (ou plus communément AJAX)
Avantages : l'utilisateur ne voit pas direcctement les interactions, ça "paraît" plus rapide, la page n'est pas rechargée
Inconvénients : Plus difficile à mettre en place, moins accessible, parfois il y a des problèmes de compatibilité, reuqêtes fréquentes sur le serveur.

Comme tu le vois, chaque technique a son lot d'avantages/inconvénients.
Selon ce que tu prévois de faire, il est plus intéressant d'en choisir une plutôt que l'autre. En détaillant un peu plus tes intentions, on pourra t'en recommander une des deux.
A quoi servent les variables que tu veux modifier ? Qu'est-ce qu'elles sont censé faire/changer ?
Est-ce que cet élément est capital pour la visite sur ton site ou est-ce un truc optionnel ? JE veux dire : si je n'ai pas accès à cet élément, est-ce grave ?
Qui utilisera cette page, et dans quel but ?
Merci Smiley cligne

Ajax me semble a priori la meilleure solution, mais je découvre avec ton billet son existence, je ne savais pas que des méthodes d'interaction de ce type avait été formalisées sous un même chapeau.

Mon projet n'est pas évident à expliquer en quelques mots.
Pour mon soucis, on va dire qu'il existe plusieurs petites divs disseminées, formant des points de repère, des balises sur une carte. L'utilisation de la div permet de faciliter sa mise en forme via CSS. Et PHP MySQL facilite la mise à jour des infos, qui sont d'ailleurs contenue dans une BDD.

Bref, j'aimerais pouvoir permettre à l'utilisateur d'interagir avec la carte.
Par exemple :
1er clic sur une balise, on la définit comme point d'origine (et sa couleur change)
2ème clic, on définit comme objectif l'autre balise (et sa couleur change aussi) Mais surtout, ça me permet de calculer pas mal de choses, comme la distance entre les deux balises, s'il y a des obstacles, etc... Car les clics permettent aussi de stocker les coordonnées des divs dans des variables (je dispose déjà de ces valeurs car elles ont généré les divs)
3ème clic, on annule les balises.

La partie calcul et conditions ne m'embête pas trop sous PHP. Ce qui me gène davantage, c'est de pouvoir lier le clic à une variable :
1er clic : $etape++ et $xorig= et $yorig=
Ce qui me gène, c'est de remplacer le : de la ligne ci-dessus... Il y a nécessairement un lien entre le Javascript (que je connais pas trop) et le PHP...

Donc je vais me tourner vers Ajax...
Pourquoi ne pas faire tous tes calculs en javascript ?
Utilise ajax uniquement pour demander des donnés sur une BDD, non ?
Tant que tu y es, c'est vrai que ... +1 pour l'idée de norky, c'est pas une mauvaise idée.
Parce qu'il faut faire attention aussi, si à chaque clic tu appelles le serveur, ça risque d'être un peu trop à la longue non ?
OK, je suis en train de me mettre au JavaScript, et ça tombe bien, l'écriture semble proche de celle du PHP.
Enfin, j'espère que je saurais m'en débrouiller...
Merci pour vos conseils !
Modifié par yakou32 (28 Aug 2006 - 14:48)