Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2008, 02h06   #1
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 157
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 157
Points : 38
Points : 38
Par défaut [PHP-JS] Problème de génération de code javascript

Bonjour,

Je me prends la tête sur un problème à priori simple, mais que je ne parviens pas à résoudre par moi-même.

Je dois générer, via un echo PHP, le code HTML suivant :
Code html :
<a href="#" onClick="ma_fonction(ma_variable_js)">...</a>
ma_variable_js serait déclarée comme suit dans le HEAD :
Code html :
1
2
3
<script type="text/javascript">
var ma_variable_js = '<img src="bigbaby.jpg" width="1075" height="717" border="0" alt="">'
</script>
Tout mon problème vient du fait que je ne souhaite pas déclarer ma variable dans le HEAD, aussi mon appel de fonction deviendra :
Code html :
<a href="#" onClick="ma_fonction('<img src="bigbaby.jpg" width="1075" height="717" border="0" alt="">')">...</a>
A priori il me suffit d'échapper les guillemets et apostrophes, ce qui donnera :
Code :
echo "<a href=\"#\" onClick=\"ma_fonction('<img src=\"bigbaby.jpg\" width=\"1075\" height=\"717\" border=\"0\" alt=\"\">')\">...</a>";
Sauf que, du coup, le guillemet de src="bigbaby.jpg" va fermer celui du onClick.
Quoi que j'essaie, même avec du addslashes, je ne parviens pas à produire mon code html/javascript correct.

Pourriez-vous me venir en aide, s'il vous plait ?
Nyphel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 02h47   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Il semblerait que ça fonctionne ainsi :
Code :
echo '<a href="#" onclick="ma_fonction(\'<img src=\'bigbaby.jpg\' width=\'1075\' height=\'717\' border=\'0\' />\')">...</a>';
Une question : Pourquoi faire ainsi ? Pourquoi le pas garder en mémoire ton image et attribuer un indice à ta fonction ?
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 04h01   #3
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 157
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 157
Points : 38
Points : 38
Bonsoir,

Merci pour la proposition mais ca ne fonctionne pas : il me faut bien des guillemets et pas des apostrophes dans le code généré :-/

Je ne souhaite pas avoir de variables pré-définies tout simplement parce que ma page web est une page web dynamique PHP dont le contenu varie sans cesse en fonction des paramètres. L'en-tête HTML, lui ne varie jamais et est écrit en début de script. Si j'enregistre mes variables javascript dans une fonction, alors je dois modifierm on en-tête HTML selon mes fonctions, ce qui est pénible à maintenir
Nyphel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 04h03   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Pas forcement puisque tu peux mettre des balises <script> dans le body.

Tu es sur que ça fonctionne car je l'ai testé sur mon serveur et ça fonctionne avec l'exemple que j'ai donné
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 04h16   #5
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 157
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 157
Points : 38
Points : 38
Il me semblait que les variables globales JS devaient être déclarées dans le HEAD
Mais même en déclarant une variable, j'aurais toujours mon soucis de guillemets pour la déclarer, non ?

Sans les guillemets ca ne peut pas fonctionner car la fontion JS décripte la chaine de caractère passée en paramètre en sa basant sur les guillemets. Il s'agit d'unscript ne mappartenant pas et qui est complexe... Trop pour que je fasse mumuse avec :-).
Nyphel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 04h31   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Quel est le but de ce script ?

Si tu crées un tableau javascript avec tes données. Puis en fonction de l'indice tu peux récupérer l'image.

N'empêche que le code php que je t'ai donné m'étonne. Il fonctionne sur ma page de test.
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 14h24   #7
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 157
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 157
Points : 38
Points : 38
Oui le code fonctionne, mais il est incompatible avec la fonction JS.
Le script JS permet d'afficher l'image dans un cadre popup assez sympatique.
Nyphel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 15h48   #8
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Dans ce cas passe juste le nom de l'image à ta fonction.
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 17h21   #9
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 157
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 157
Points : 38
Points : 38
Je ne maitrise pas le code de cette fonction, il s'agit d'un script qui ne m'appartient pas.
Nyphel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h43.


 
 
 
 
Partenaires

Hébergement Web