Rechercher : dans
Par :

Syntaxe PHP dans Javascript avec innerhtml

Dernière réponse le 19 jui 2008 à 20:26:56 Funewik, le 7 avr 2004 à 11:14:46 
 Signaler ce message aux modérateurs

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

2

sglug, le 8 avr 2004 à 01:04:41

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

Répondre à sglug

3

kennnnnny, le 11 mai 2004 à 16:43:37

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é..

Répondre à kennnnnny

4

lucas, le 17 jun 2004 à 19:29:31

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 ?

Répondre à lucas

5

Taboujr, le 18 jun 2004 à 02:46:01

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]

Répondre à Taboujr

6

carfancy, le 19 avr 2007 à 11:25:56

Bonjour a tous,

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

Bon courage.

-==Carfancy==-

Répondre à carfancy

7

nox, le 6 déc 2007 à 07:51:14

Bonjour!
j'aimerai faire une fonction inserer du php dans du javascript (mixage php & javascript).
pouvez vous m'aider?

Répondre à nox

8

ispolo, le 13 déc 2007 à 18:52:51

Utilise plutôt AJAX

Répondre à ispolo

9

Akiro, le 29 jan 2008 à 14:35:06

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.

Répondre à Akiro

10

fanfantasy7, le 14 mai 2008 à 12:35:49

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 ?

Répondre à fanfantasy7

11

PhP, le 14 mai 2008 à 14:11:53

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 ...


PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...

Répondre à PhP

12

fanfantasy7, le 14 mai 2008 à 14:22:51

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>

Répondre à fanfantasy7

13

PhP, le 14 mai 2008 à 14:37:31

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
{

}

?>
PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...

Répondre à PhP

14

fanfantasy7, le 15 mai 2008 à 01:24:33

Est-il possible de faire pareille mais avec les methodes POST ?

Répondre à fanfantasy7

15

PhP, le 15 mai 2008 à 10:35:08

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
PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...

Répondre à PhP

16

fanfantasy7, le 15 mai 2008 à 16:57:12

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

Répondre à fanfantasy7

17

PhP, le 15 mai 2008 à 17:55:45

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
PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...

Répondre à PhP

18

fanfantasy7, le 15 mai 2008 à 20:20:39

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

Répondre à fanfantasy7

19

PhP, le 15 mai 2008 à 20:51:12

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 ?
PhP  
Il y a 10 types de personnes dans le monde : ceux qui compre­nnent le binaire et les autres ...

Répondre à PhP

20

fanfantasy7, le 15 mai 2008 à 21:17:55
Répondre à fanfantasy7

21

PhP, le 15 mai 2008 à 21:33:59

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
PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...

Répondre à PhP

22

fanfantasy7, le 15 mai 2008 à 21:57:04
  • +2

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>
");
?>

Répondre à fanfantasy7

PhP, le 15 mai 2008 à 22:19:03
  • +2

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'>");





PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...

Répondre à PhP

23

fanfantasy7, le 15 mai 2008 à 22:59:07

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

Répondre à fanfantasy7

24

critters, le 9 jun 2008 à 15:03:22

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
?>

Répondre à critters

25

fanfantasy7, le 9 jun 2008 à 16:30:40

Désolé mais je ne vois pas la gestion des cookies ?
y a du microsoft la dedans, ca marche sous firefox ?

Répondre à fanfantasy7

26

PhP, le 9 jun 2008 à 17:39:46

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à

PhP  
Il y a 10 types de personnes dans le monde : ceux qui compre­nnent le binaire et les autres ...

Répondre à PhP