Aller au contenu

appel PHP en Javascript


francoisch

Sujets conseillés

bonjour

Une question de débutant: je veux appeller du PHP depuis du Html; voici mes deux modules de test:

proto61.html :

<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>

</head>

<body>
<p>Avant</p>

<script type="text/javascript">
document.write('<script type="text/javascript" src="temps.php"><\/SCRIPT>');
</SCRIPT>

<p>Après</p>
</body>
</html>

temps.php:

<?php
print "le temps";
?>

Résultat: les mots "Avant" et "Après" s'impriment, la petite phrase "le temps" ne s'imprime pas.

Apparement,le module temps.php n'est pas appelé; où ai-je raté une marche?.

Merci de vos suggestions et commentaires.

F

**EDIT Modérateur (TheRec)** Merci d'utiliser les BB Codes pour présenter ton code. Plus d'informations en cliquant sur "Aide BB Code" en dessous de la liste d'émoticons lors de la rédaction d'un message.

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

J'ai un peu de peine à comprendre ce que tu veux faire de prime abord... si ton but est d'inclure le fichier "temps.php" dans le fichier "proto61.html" pourquoi n'utilises tu pas simplement la fonction include :

<p>Avant</p>
<?php include('temps.php'); ?>
<p>Après</p>

(Je ne cite qu'une partie du code, celle qui permet de situer où placer cette fonction, si le fichier HTML ne se trouve pas dans le même répertoire que le fichier PHP il faudra inclure le chemin dans la fonction include)

Enfin, admettons que tu veuilles inclure le contenu généré par le fichier PHP grâce à du Javascript, je ne vois pas pourquoi tu utilise une balise script pour écrire une autre balises script faisant appel à la page PHP... il me semble que tu te complique la tâche... un simple :

<p>Avant</p>
<script type="text/javascript" src="temps.php"></script>
<p>Après</p>

Maintenant le contenu généré par le fichier "temps.php" devra être du Javascript, vu qu'avec cette balise "<script>" tu indiques au navigateur que tu veux qu'il utilise un interpréteur de scritps côté client (Javascript en l'occurrence)... donc en l'état tu auras une erreur Javascript.

Si tu modifie ton fichier PHP en :

<?php
echo 'document.write("le temps")'; ?>

Mais bon, premièrement d'une je ne vois pas le but dans l'exemple que tu cites donc si tu as plus de précision sur ce que tu veux faire n'hésite pas... et deuxièmement je ne suis pas partisan de l'utilisation de la balise <script> en dehors de l'en-tête HTML et je ne te conseille pas du tout d'utiliser la fonction document.write qui est obsolète de nos jours, tu devrais privilégier les fonctions mises à disposition avec le DOM (pour faire simple : accès, ajout, modifications, suppression, etc. de noeud).

P.S. : Ce dernier parahraphe ne correspond qu'au pratiques que je cautionne... tu es libre de faire comme bon te sembles ;)

Lien vers le commentaire
Partager sur d’autres sites

bonjour et merci de ta réponse.

J'avais au moins deux motifs de poster sur ce sujet:

- résoudre un besoin immédiat, ta première proposition y a bien répondu

- valider un appel (ci dessous) que je fais en Html, qui fonctionne (des lignes dans la base MySQL) mais dont je ne suis pas sûr qu'il fonctionne à chaque fois.

Voici cet appel:

<script type="text/javascript"> 
document.write('<script type="text/javascript" '
+ 'src="ecriture.php?parm1='
+ page
+ '&parm2='
+ resolution
+ '&parm3='
+ bdbrowser
+ '&parm4='
+ bdplatform
+ '&parm5='
+ bdversion
+ '&parm6='
+ bdmajorver
+ '&parm7='
+ bdminorver
+ '">'
+ '</'+'script>');
</script>

Quelqu'un a t il un commentaire, une suggestion à proposer?

Par avance merci.

Francois

Lien vers le commentaire
Partager sur d’autres sites

De rien. Concernant cet appel que dans présentes ton second message, il a plus de sens, il sert à passer des variables Javascript (côté client et apparemment ce sont des informations concernant le navigateur du visiteur) vers un script PHP (côté serveur), cela peut servir à plusieurs titres (pour des statistiques entre autres).

Techniquement parlant, cet appel est correct (la fonction, l'appel, etc.). mais comme je te l'ai dit je ne ferai pas cela ainsi, j'utiliserai les possibilités offertes par DOM.

Je te propose ceci, en étant conscient que le code tel quel remplace es éventuel autres actions liée à l'événement "window.onload" (à toi de voir si c'est un problème avec tes autres scripts) et que l'élément placé après l'endroit ou tu veux placer ton <script> doit avoir un "id" (en l'occurrence je l'ai "nommé" after) :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Titre</title>
<script type="text/javascript">
//<![CDATA[
window.onload = function () {
var page = 'page'
var resolution = 'resolution'
var bdbrowser = 'bdbrowser'
var bdplatform = 'bdplatform'
var bdversion = 'bdversion'
var bdmajorver = 'bdmajorver'
var bdminorver = 'bdminorver'
var phpscript = document.createElement('script');
phpscript.setAttribute('type', 'text/javascript');
phpscript.setAttribute('src', 'ecriture.php?parm1='+ page + '&parm2=' + resolution + '&parm3=' + bdbrowser + '&parm4=' + bdplatform + '&parm5=' + bdversion + '&parm6=' + bdmajorver + '&parm7=' + bdminorver);
var nodeafterphp = document.getElementById('after');
nodeafterphp.parentNode.insertBefore(phpscript, nodeafterphp);
};
//]]>
</script>

</head>

<body>
<p>Avant</p>
<p id="after">Après</p>
</body>
</html>

J'ai juste déclaré (avec une valeur "bidon") les variables que tu vas passer en paramètres à ton script PHP, c'est nécessaire vu qu'elles sont utilisées par la suite, à moins quelles aient été déclarées comme variables "globales" (déclarées dans un script Javascript inclus avant ce morceau de Javascript).

Cette technique reste relativement peu fiable, le script PHP ne sera pas appelé si Javascript est désactivé dans le navigateur de ton visiteur. Donc tu ne devrais pas utiliser les informations récupérées pour autre chose que des statistiques, au risque de priver certains des visiteurs de certaines fonctionnalités de ton site.

Lien vers le commentaire
Partager sur d’autres sites

Merci de ta réponse TheRec que je vais étudier en détail.

Effectivement, cet appel est destiné à récupérer des infos au sujet des caractéristiques des différentes visites sur mes sites et tenir des stats.

Ce qui m'avait surpris depuis longtemps était que mes chiffres, obtenus de cette manière, ne concordaient pas, mais pas du tout, avec ceux fournis par mon PAI (Free).

Avec tes explications, je comprend mieux que mon système n'est pas fiable pour ce qui concerne le nombre total de visites.

Merci encore, j'y vais, j'ai du pain sur la planche.

Francois

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...