Probleme javscript + php

[Résolu]
Signaler
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonjour à tous !

J'ai un code simple pour agrandir une image dans une popup qui se redimensionne a la taille de cette image (j'ai posé la question dans le forum javascript mais ils me disent de venir ici) :

<SCRIPT LANGUAGE="JavaScript">
<!--
function PopupImage(img) {
titre="Agrandissement";
w=open("",'image','width=400,height=400,toolbar=no,scrollbars=no,resizable=no');
w.document.write("<HTML><HEAD><TITLE>"+titre+"</TITLE></HEAD>");
w.document.write("<SCRIPT language=javascript>function checksize() { if (document.images[0].complete) { window.resizeTo(document.images[0].width+10,document.images[0].height+30); window.focus();} else { setTimeout('checksize()',250) } }</"+"SCRIPT>");
w.document.write("");
w.document.write("\");
w.document.write(\"+img+"' border=0 alt='Mon image'>");
w.document.write("
");
w.document.write("</HTML>");
w.document.close();
}
//-->
</SCRIPT>
Et mon liens est le suivant :

[javascript:PopupImage('produits/imprimante/<? echo $data[type] ?>/<? echo $data[nom] ?>.jpg') Agrandir]

Mon probleme c'est que lorsque je clique ce liens pour agrandir, ca ne fonctionne pas il y a une erreur a cause du PHP ... Si je met le chemin de l'image en dur ca fonctionne.

Pourriez vous m'aider ?
Antho

Antho

20 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Voilà qui est mieux... merci pour l'erreur.



Bon, on voit que la ligne qui bug est bonne (%27) sauf que pour
l'utiliser, javascript interprète le %27 et le retranscrit en ' sans
demander notre avis... d'où le bug colone 38 (l'apostrophe étant colone
37)



Essaye addslashes($data['type']); au lieu de urlencode($data['type']);



Tu devrais avoir écrit PopupImage('produits/imprimante/jet d\'encre/bij_2300.jpg');

(PS : mets un point virgule à la fin, même si dernière commande)



Et là, j'ai espoire...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
hello,



et grrr...

Les index associatifs d'un tableau, en php, doivent être délimités par de simples cotes!



[javascript:PopupImage('produits/imprimante//.jpg') Agrandir]



et pour être sûr :



echo '[javascript:PopupImage(\'produits/imprimante/',$data['type'],'/',$data['nom'],'\'); agrandir]';
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
echo $data[type]



=> l'erreur n'est-elle pas "NOTICE : undefine constante type assumed 'type' ?



ton tableau $data est indéxé par des chaînes de caractères... utilise

echo $data['type'] (et idem pour l'autre echo)
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

Merci de répondre :)

Non l'erreur n'est pas NOTICE : undefine constante type assumed 'type' .

malalam : Merci de ton aide, mais ce ne fonctionne toujours pas dans la barre de status il y a marqué "erreur sur la page" dès que je clique le liens agrandir.

enfait, dans ['type'] c'est une catégorie qui dans le liens sert de dossier par exemple :

Le liens devrait etre a la fin : produits/imprimante/jet d'encre/image.jpg 'type' étant jet d'encre et 'nom' étant le nom de limage.

Antho
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Ah ok! Alors deux choses :



1*

>> dans la barre de status il y a marqué "erreur sur la page"

Alors, c'est une erreur de javascript. Si tu utilisai FireFox tu aurais une information plus fourni sur cette erreur..



2*

produits/imprimante/jet d'encre/image.jpg N'EST PAS UNE URL VALIDE !!!

Pour ce faire, utilise <? echo urlencode($data['type']) ?>





Et dis nous quoi il adviendra alors...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Et en plus, jet d'encre comporte une apostrophe.

Si tu regardes ton source html, tu verras tout de suite un problème
dans l'appel de ta fonction js : l'apostrophe de jet d'encre interfère
avec les apostrophes délimitant les paramètres à passer à ta fonction
js.
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

Alors, il semblerais que le urlencode convertisse le ' de jet d'encre en url valide, cependant l'espace entre jet et encre devient jet+encre

Vous avez une autre solution ?? :)

Merci beaucoup J_G, on s'en approche :p

Antho
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

ca deviens jet+d'encre pardon (jet+d%27encre)

Antho
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Et bien ??? quel est le problème ?

Que les pasces deviennent des '+' et la signification que tout va bien, que le nom de ton url est bien encodé.



Cela ne marche toujours pas !!! Mmm...



C'est vrai que j'ai plus l'habitude de voir des %20 pour les espaces. Pour cela, tu as la vielle fonction rawurlencode() .



Refais un essai avec ça... PS : vérifie que ton répertoire "jet
d'encre" existe et surtout sa dénomination précise (jet_dencre ou
Jet_dEncre ou ...)
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

Bon le rawurlencode() fonctionne et passe le + en %20 mais voila, encore une erreur pourtant l'url est bonne ...

Le répertoire jet d'encre existe bien et meme saisie en dur l'url provoque une erreur ......

[javascript:PopupImage('produits/imprimante/<? echo rawurlencode($data['type']) ?>/<? echo $data['nom'] ?>.jpg') Agrandir] c'est le liens que jutilise je vais essayer echo '[javascript:PopupImage(\'produits/imprimante/JE DOIS METTRE QUOI au lieu de ',$data['type'],'/',$data['nom'],'\'); agrandir]';

Antho
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
"et meme saisie en dur l'url provoque une erreur"



QUELLE EST CETTE ERREUR ???
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

le code ne s'exécute pas tout simplement mais seulement une fois le liens cliqué ...

Antho
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
... snif ...



Alors, je te propose un petit truc pas mal du tout :

* va à cette adresse : http://validator.w3.org/

* propose ton script à la validation (via l'url ou tu fais
copier-coller la source de la page HTML générée par ton script PHP dans
la zone prévue à cet effet)

* Tu auras certainement un paquet d'erreur (comme tout le monde à la
première soumission d'une page...) Trouves celle(s) qui se rapporte(nt)
au lien du bug



Et dis quoi-c'est l'erreur... STP!
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

Erreur : missing ) after argument list
Fichier Source : javascript:PopupImage('produits/imprimante/jet%20d%27encre/bij_2300.jpg')
Ligne : 1, Colonne : 38
Code Source : PopupImage('produits/imprimante/jet d'encre/bij_2300.jpg')

C'est l'erreur que me donne Firefox car le w3 validator ne trouve pas d'erreur a ces lignes :s tan pis si on ne trouve pas c'est dommage mais bon :s j'aurais bien aimer ce script :s

Antho
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

J_G tu déchire !!!!!! MMMMMEEEEEEEERRRRRRRRCCCCCCCCCCCCCIIIIIIIIIIIIIIIIIIIIIII

Super ! fantastique ! je sais pas comment te remercier ! merci beaucoup !! :D

Antho
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Ben voilà !!! Enfin !



Garde FireFox pour développer (ou installe la suite Visual de Moft...
non garde FireFox) Car sans le message d'erreur... j'amais ça ne
l'aurait fait.



A+,
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Mouah, j'l'avais dit, que l'apostrophe de jet d'encre poserait quand même problème ;-)

Je vois que vous avez passé une bonne soirée, pendant que gt peinard à la maison devant mes carbonara et un dvd ? ;-)
Messages postés
127
Date d'inscription
mardi 19 août 2003
Statut
Membre
Dernière intervention
13 mars 2010

lol on savais tous que c'était un probleme, encore fallait il pouvoir le résoudre :p ca ma pas empeché de manger ma pizza MDR

Antho
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut malalam,



Tu savais toi qu'en passant une chaine de caractère "encodée-url" en
paramètre d'une fonction javascript, l'encodage était automatiquement
interprété ?



(Finalement, la chaîne n'est pas encodée, c'est son écriture dans la page HTML qui l'est !)





Cc : Le ouaib, c'est vraiment de la programmation galère. Un méli-mélo
de langages hétérogènes, sans parler de l'incohérances totale entre les
différentes plateformes interprétant ces langages (condition
structurelle du Web), une multitudes de couches logiciels et
protocolaires, des tones de normes à spécifier et à respecter, des
contraintes régionales (langues, heures, normes, claviers, ...), un
graphisme beaucoup plus recherché que pour toutes les autres appli, un
énorme goulot d'étranglement appelé "Internet", une sécurisation des
données quasi nulle à cause du mêm Internet, un réseau de "testeur"
extrèmement exigents (autre nom pour "pirates")... Et tout ça pour
recevoir l'ingratitude des codeurs d'applications "en dure" (C++, ASM,
TP, ...).



Bref, la création de Webgiciel n'est pas un jeu pour autistes de l'informatique.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Tu savais toi qu'en passant une chaine de caractère "encodée-url" en
paramètre d'une fonction javascript, l'encodage était automatiquement
interprété ?



Bah nan, c'est pour ça que je suis bien content d'avoir mangé mes carbo à la place ;-)



lol on savais tous que c'était un probleme, encore fallait il pouvoir
le résoudre :p ca ma pas empeché de manger ma pizza MDR



Elle était à quoi....?