Syntaxe PHP dans Javascript avec innerhtml

Résolu/Fermé
Funewik - 7 avril 2004 à 11:14
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 - 19 juil. 2008 à 20:26
Bonjour,

Je souhaiterais savoir quelle est la syntaxe à utiliser pour inclure du code php dans un javascript, un innerhtml en fait.

Voici mon code:

function go(n) 
{ 

if (x==0){ 

document.getElementById("rubric"+n).innerHTML = '<? $query1 = "select * from DTBN_menu where sous_cat=$id and rubrique=0"; $mysql_result1 = mysql_query($query1, $db); while($row1 = mysql_fetch_row($mysql_result1)){$id1 = $row1[0]; $titre1 = $row1[1]; echo $titre1;}?><br>';

document.getElementById("rubric"+n).style.position = 'relative';

x=1; 
}


J'aimerais que la variable $id prenne la valeur "n" de l'élément ("rubric"+n) pour que la requete php contenue dans le innerhtml s'execute en fonction de cette variable "n". Quelle est la syntaxe à utiliser pour faire fonctionner des variables $a, $b... dans un innerhtml ou dans du javascript normal? Pour ceci par exemple, y'a t-il une manière spécifique pour nommer les variables dans un innerhtml:

$id1 = $row1[0]; $titre1 = $row1[1]; echo $titre1;


Merci d'avance

Funewik
A voir également:

20 réponses

Utilisateur anonyme
15 mai 2008 à 21:57
guitare_verif_dev.php
<html>
<head>
<script language="JavaScript">
<!--
function form_submit()
{
  var elt = document.getElementById("cookieEnabled");
  elt.value = navigator.cookieEnabled ? "ok" : "";

  var elt = document.getElementById("form_redirection");
  elt.submit();
}
//-->
</script>
</head>
<body onload="form_submit()">
<form id="form_redirection" action="guitare_dev.php" method="post">
<input type="hidden" id="cookieEnabled" name="cookieEnabled" value="">
</form>
</body>
</html>


guitare_dev
<?php

if (!isset($_GET["id"]))
	{
	$id = '';
	}
	else
	{
	$id = $_GET["id"];
	} 

if (!isset($_GET["sort"]))
	{
	$sort = '';
	}
	else
	{
	$sort = $_GET["sort"];
	}


if (isset($_POST["cookieEnabled"]))
{
	if ($_POST["cookieEnabled"])
	{
		echo "Les cookies sont activés sur cette machine";
	}
	else
	{
		echo "Les cookies sont désactivés sur cette machine";
	}				
}	
else
{
echo "pas declare";
}

include("guitare_data.php");
//include("compteur_php_mysql.php");



echo("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html><head>

<meta http-equiv='Content-Type' content='text\/html\;charset=utf-8'>
<META NAME='Author' LANG='fr' CONTENT='Bertrand PERRIER'>
");

echo ("<title>"); 

if ($id==""){echo("Bienvenue sur la page guitare");}

if ($id!="" AND $id<=count($script))
	{
	echo ("Bertrand>Page guitare>$script[$id]");
	}

if ($id>count($script)){echo ("Bertrand>Page guitare>Erreur");}

echo ("</title></head>

<body style='background: #C2D5FF url(fond.gif) no-repeat top left;'  link='#0000FF' vlink='#0000FF' text='#000000'>


<font size=6>&nbsp;Bertrand>Page guitare</font><br />
<font size=1>.</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Mes <b>");
echo count($script);

echo("</b> musiques pour guitare<br /><br />

<center>
	Trier par&nbsp;&nbsp;");
if ($sort == 1)
	{
	echo("<a href='");__FILE__;echo("?id=$id&sort=0'>ordre de difficult&eacute;</a>
	&nbsp;&nbsp;
	<b>ordre alphab&eacute;tique</b>

	");
	}
else
	{
	echo("<b>ordre de difficult&eacute;</b>
	&nbsp;&nbsp;
	<a href='");__FILE__;echo("?id=$id&sort=1'>ordre alphab&eacute;tique</a>
	");
	}
	
echo ("</center>
<br />
<table width='100%' border='0'><tr><td width='47%' align=right valign=top>");



for($i=1; $i != count($script)+1 ; $i++) 
{
	if ($sort == 1)
		{
		$temp=$alpha_order[$i];
		}
	else
		{
		$temp=$i;
		}

	echo("<a href='");__FILE__;echo("?id=$temp&sort=$sort'>");
	if ($id==$temp){echo("<b>");}
	echo("$script[$temp]");
	if ($id==$temp){echo("</b>");}
	echo("</a><br />");
}

echo("</td><td align=center width='4'><img src='SquareBlueBullet2.gif' height='641' width='4' border=0></td><td valign=top>");

if ($id=="" OR $id>count($script)) 
	{
		echo("<font color='red'>Cliqu&eacute; sur le titre de la chanson<br />pour afficher les d&eacute;tails</font>");
	}


for($i=1; $i != count($script)+1 ; $i++) 
	{


	if ($sort == 1)
		{
		$temp=$alpha_order[$i];
		}
	else
		{
		$temp=$i;
		}

	if ($id==$temp)
		{
		echo("<font color='red'><b>$script[$temp]</b></font><br />");
		echo($contenu[$temp]);
		}	
	 }

echo ("
</td></tr></table>

<center>
");


$nom_php = __FILE__;

include("aff_icone.php");


echo("
</center>

<p align='right'>$nombre visites depuis le 1 avril 2008<br />
</p>

<p align='right'>
	<font face='Helvetica' size='-1' color='#330066'>
");
include("copyright.txt");
echo("
<br />
	</font>
</p>

</body></html>
");
?>
7
salut Funewik,
si tu arrive a mettre du php dans du javascript peux-tu m'envoyer la solution car je voudrais introduire du php dans une barre de navigation en javascipt.

merci, s'il y en a des autres qui peuvent apporté une idée dans ce domaine, je pense que beaucoup de gens seront intérrésé..
2
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2008 à 22:19
Ben dans tes liens tu ne fais pas référence du tout à la variable récupérée dans $_POST

$cookieEnabled="";
if (isset($_POST["cookieEnabled"]))
{
	if ($_POST["cookieEnabled"])
	{
		echo "Les cookies sont activés sur cette machine";
		$cookieEnabled="ok";
	}
	else
	{
		echo "Les cookies sont désactivés sur cette machine";
		$cookieEnabled="ko";
	}				
}	
else
{
echo "pas declare";
}


ainsi que

echo("<a href='");__FILE__;echo("?id=$temp&sort=$sort&c=$cookieEnabled'>");




2
Utilisateur anonyme
15 mai 2008 à 22:59
ben non je veut passer ma variable en post pour qu'il n'apparaisse pas dans l'url

la variable je l'utilise dans

//include("compteur_php_mysql.php");

pour savoir si je doit incrémenter ou pas mon compteur
0
Taboujr Messages postés 507 Date d'inscription vendredi 18 janvier 2002 Statut Membre Dernière intervention 2 janvier 2008 117
18 juin 2004 à 02:46
Bonjour.

Funewik, sans vouloir te manquer de respect, je crois que tu te mélanges un peu les pinceaux.

Le code php est interprété au chargement de la page une fois pour toute. Si tu veux un fonction go(n) en javascript qui pointe vers le résultat d'un requête mysql en php, il me semble que l'intégralité des résultats renvoyés doit être écrit au chargement de la page (donc à l'éxecution d'un script php). Là comme ça, sans y avoir réfléchi plus que ça, je voit 2 solutions.

La première consiste à faire écrire la fonction javascript par le php. En gros, tu extraie tous ce que tu veux extraire de ta bdd, tu en construis un tableaux indexé sur les $id et tu fais écrire au php une fonction javascript avec un switch qui dit si n vaut x alors renvoyer la valeur de l'index x du tableau issue de ma requête.

La seconde solution consiste à recharger ta page à chaque fois en faisant passer ton id dans l'url par exemple, pour que la requête mysql soit exécutée avec le bon id.

Voilà. Je ne suis pas sure d'être très claire donc n'hésite pas à poser des questions ;-)

.:: TaBou JuNioR ::.
J'ai des questions à toutes vos réponses. [W. Allen]
1
Bonjour a tous,

Y'en a une troisieme passer par du XML et PHP + JAVA + XML ca s'appel AJAX.

Bon courage.

-==Carfancy==-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sglug Messages postés 22 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 22 avril 2004 3
8 avril 2004 à 01:04
bon pour faire simple par ce que je pense que personne a compris ton post :-)

innerHTML te permetre d'ecrire du code html apres le chargement de la page.

si tu veut ecrir au chargement de la page tu doit utilise document.write();

mais dit ce que tu veut faire ca sera plus simple
0
je cherhce aussi à affecter une valeur à une variable javascript et ceci dans un javascript
Est ce posssible ?
merci pour la solution
Pouvez vous me la poster ?
0
bonjour!
j'aimerai faire une fonction inserer du php dans du javascript (mixage php & javascript).
pouvez vous m'aider?
0
utilise plutôt AJAX
0
Le PHP s'exécute coté serveur, le JavaScript coté client. Or du code quel qu'il soit, avant d'être afficher, passe d'abord par le serveur puis par le client, mais jamais l'inverse.

En gros le PHP sera toujours exécuté avant le chargement de la page et le JavaScript soit pendant, soit après.
0
Utilisateur anonyme
14 mai 2008 à 12:35
Bonjour,
je me permet d'écrire sur ce topic, car il n'y a pas de réponse depuis quelque temp
donc je ne pense pas cassé l'allure de la discution


Akiro
est-tu confirme ce que je pense
si je déclare une fonction

function Fonction_incremente() {
	<?php
		$valeur=$valeur+1;
	?>


et que je l'apelle par un lien
<a href="#" onClick="Fonction_incremente();">++</a>


il n'y aura jamais d'incrementation, d''ailleur l'incrementation est faite au chargemenr de la page et non au clic du lien

c'est ça ?
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
14 mai 2008 à 14:11
Bjr

Soit la page test.php

<html>
<head>
<script>
function Fonction_incremente() {
<?php
$valeur=$valeur+1;
?>
}
</script>
</head>
<body>
<a href="#" onClick="Fonction_incremente();">++</a>
</body>
</html>

La même page vue du côté serveur par php ressemble à :

<?php
$valeur=$valeur+1;
?>

Tous le reste est perçu par le module php comme du commentaire !


La même page vue par le navigateur sur le poste client ressemble à :

<html>
<head>
<script>
function Fonction_incremente() {
}
</script>
</head>
<body>
<a href="#" onClick="Fonction_incremente();">++</a>
</body>
</html>

Plus de code php ici ! Bref la fonction ne fait rien ...

0
Utilisateur anonyme
14 mai 2008 à 14:22
je te remercie

ce que je veut faire c'est detecté si le naviguateur accepte les cookies en javascript avec navigator.cookieEnabled
donc j'ai fais une redirection sur une autre page en passant l'information dans la variable c par l'url
ainsi l'information javascript peut etre traité par php en remontant au serveur

j'ai bien compris ?

<html>
<head>
<script language="javascript">
<!--
if ( navigator.cookieEnabled )
document.location.href="guitare.php?c=ok"
else
document.location.href="guitare.php?c=nok"
//-->
</script>
</head>
</html>
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
14 mai 2008 à 14:37
Là c'est bon !
Dans le page guitare.php le module php sait effectivement si les cookies sont activés ou non en récupérant la variable

Ex

<?php

$cookie = $_GET["c"];

if ($cookie == "ok") // Cookies activés
{

}
else
{

}

?>
0
Utilisateur anonyme
15 mai 2008 à 01:24
est-il possible de faire pareille mais avec les methodes POST ?
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2008 à 10:35
Bjr

Oui mais pourquoi faire ? c'est plus compliqué ..

Ex page cookie.php


<html>
<head>
<script language="JavaScript">
<!--
function form_submit()
{
  var elt = document.getElementById("cookieEnabled");
  elt.value = navigator.cookieEnabled ? "ok" : "";

  var elt = document.getElementById("form_redirection");
  elt.submit();
}
//-->
</script>
</head>
<body onload="form_submit()">
<form id="form_redirection" action="redirection.php" method="post">
<input type="hidden" id="cookieEnabled" name="cookieEnabled" value="">
</form>
</body>
</html>


page redirection.php :

<html>
<head>
</head>
<body>
<?php 
if (isset($_POST["cookieEnabled"]))
{
	if ($_POST["cookieEnabled"])
	{
		echo "Les cookies sont activés sur cette machine";
	}
	else
	{
		echo "Les cookies sont désactivés sur cette machine";
	}				
}	
?> 
</body>
</html>



Tu peux aussi faire une seule page qui se recharge elle-même
0
Utilisateur anonyme
15 mai 2008 à 16:57
j'ai encore un petit problème

si je rafraichie ma page redirection.php (F5)
cookieEnabled n'est plus déclaré
pour vérifier j'ai mis -> echo "pas declare";
et quand je fait F5 je vois "pas declare"




if (isset($_POST["cookieEnabled"]))
{
if ($_POST["cookieEnabled"])
{
echo "Les cookies sont activés sur cette machine";
}
else
{
echo "Les cookies sont désactivés sur cette machine";
}
}
else
{
echo "pas declare";
}


je suis conscient que je suis chiant
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2008 à 17:55
ben moi ca fonctionne

lorsque j'appelle la page depuis un formulaire avec post et qu'ensuite je rafraichis la page j'obtiens une fenêtre avec un message

"La page ne peut être actualisée sans le renvoi d'informations ...."

De toute façon une page postée avec la méthode post n'est pas censée être rafraîchie avec F5
0
Utilisateur anonyme
15 mai 2008 à 20:20
j'ai donné l'exemple de F5 mais sur ma page j'ai des liens sur la meme page

cf http://www.bertrandperrier.fr/guitare.php

et le probleme c'est que je ne retrouve pas ma variable cookieEnabled

quand je clique sur le lien

biensur je teste ça ne local

sur mon site je passe mes variables dans l'url
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2008 à 20:51
Tu n'as donc qu'une seule et même page nommée guitare.php Je n'ai pas l'impression d'avoir vu la redirection (la page ne semble pas se recharger elle est affichée et c'est tout ou alors ca va super vite :-)

C'est quoi le code complet de ta page ?

Apparemment tu n'utilises pas de formulaire : pourquoi dans ce cas tiens-tu tellement à passer des paramètres par la méthode POST ?

Enfin tu comptes faire quoi avec les cookies ?
0
Utilisateur anonyme
15 mai 2008 à 21:17
désolé erreur de ma part

methode GET
http://www.bertrandperrier.fr/guitare_verif.php
redirection vers
http://www.bertrandperrier.fr/guitare.php

methode POST
http://www.bertrandperrier.fr/guitare_verif_dev.php
redirection vers
http://www.bertrandperrier.fr/guitare_dev.php
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2008 à 21:33
Dans les 2 cas j'obtiens bien le message "Les cookies sont activés sur cette machine" en haut à gauche Donc les capacités du navigateur sont bien détectées.

Par contre dans tes liens sur la page guitare_dev.php tu as dû faire une erreur en initialisant la variable "c" passée dans l'url

Mais je ne peux pas te dire où ... sans le code
0
salut il est peut etre un peu tard (un mois)
mais tu as pensé à de l'AJAX.
Avec ca, ta requete et donc le rechargement se font en transparent et rien n'apparait dans l'url.
qui su coup peut très bien être un simple guitare.html


Je m'explique

dans ton head, tu mets un truc du genre
<script src="./js/ajax_guitare.js" type="text/javascript" language="javascript">
	</script>


et là où doivent apparaitre les infos :
<span id="valeur_case"></span>


dans ce fichier
tu mets des trucs du genre
// JavaScript Document
function recup_partition(chanson_id){
		var adresse = "./Fonctions/guitare/ecrire_guitare.php?id="+chanson_id;
		makeRequest(adresse, "innerHTML_id"); //"innerHTML_id" est le id du span qui va recevoir les infos
		return false;
	} 

function makeRequest(url,element_id){
	if(window.XMLHttpRequest) {
		//FireFox
		xhr = new XMLHttpRequest();
	}
	else {
		if(window.ActiveXObject) {
			//IE
			try {
				xhr = new ActiveXObject("Microsoft.XMLHTTP" );
			}
			catch (e) {}
		}
	}
	if (xhr) {
		//Si ca a fonctionné
		xhr.onreadystatechange = function() {
    		// instructions de traitement de la réponse
			ShowContents(element_id)
}
		xhr.open("GET",url,true);
		xhr.send(null);
	}
	else {
		document.getElementById(element_id).innerHTML = "Désolé, impossible de créer une requête XMLHttpRequest";
	}
}

function ShowContents(element_id) {
	if(xhr.readyState == 4) { // 4 = terminé et initialisé
		if(xhr.status == 200) { // 200 = terminé pour la page (type erreur 404 = non trouvé etc...)
			var outmsg = xhr.responseText;
			document.getElementById(element_id).innerHTML = outmsg; 
		}
	}
}


dans ton fichier ecrire_guitare.php tu fais ta requete SQL avec que tu affiches avec un
<?php
//code de la requête SQL à toi de voir
mysql_free_result($requete_sql_chanson);
 echo $valeur_requete; //où valeur_requete est le resultat de ta requete $requete_sql_chanson
?>
0
Utilisateur anonyme
9 juin 2008 à 16:30
désolé mais je ne vois pas la gestion des cookies ?
y a du microsoft la dedans, ca marche sous firefox ?
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
9 juin 2008 à 17:39
Bjr

Effectivement dans l'ex de critters il manque un paramètre avant de faire xhr.send(null);
Il faut bien sûr passer cookieEnabled en paramètre ...

En fait si tu utilises AJAX ca se passe ainsi

1) L'utilisateur charge la page guitare.php qui est quasiment vide
2) Dans la page guitare.php on exécute une requête AJAX vers une autre page mettons guitare_ajax.php en lui passant le paramètre cookieEnabled
3) Ta requête guitare_ajax.php est éxécutée et retourne des données différentes (voir rien) selon que le paramètre cookieEnabled est ok ou pas
4) Ta page guitare.php jusqu'à présent quasiment vide est mise à jour avec les données renvoyées par guitare_ajax.php

C'est plus complexe mais ca peut fonctionner.

Note que durant les étapes 1 à 4 à aucun moment la page guitare.php n'est rechargée : la requête AJAX s'exécute en tâche de fond uniquement dans la mémoire du navigateur. A la fin ta page guitare.php est mise à jour dynamiquement mais sans jamais être rechargée

Nota : si tu utilises AJAX tes pages guitare.php et guitare_ajax.php doivent obligatoirement faire partie du même domaine (pour simplifier on peut aussi dire qu'elles doivent être hébergées sur le même serveur)


Voilà
0
tidave Messages postés 31 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 26 octobre 2019 3
19 juil. 2008 à 20:26
Salut pourrais-je avoir un exemple qui marche,
Ce script m'interesse beaucoup.
Je voudrais générer des lines comme suit : article.php?produit=1 ou ici produit prends differente valeurs généré par le listing de ma base de donnée .

Pour la partie base de données c'est ok ,
Mais ou je coince c'est la partie AJAX ,

Je veux que ma page affichage.php s'affiche dans un div ou span= afficheur sasn recharger la page. Elle se chargement d'afficher un traitement en fonction de la variable produit.

Pour la page afffichage.php pas de prob c'est du php.

Comment AJAXER tout ça ?

Merci de me répondre
0