Corriger une ligne php

Corriger une ligne php - PHP - Programmation

Marsh Posté le 09-07-2010 à 19:19:38    

Bonjour,
 
J'ai cette ligne en php, qui est censé afficher une image, et l'agrandir à côté au passage de la souris. Mais j'ai des erreurs dans la ligne dû aux ' et " :
 

Code :
  1. $str.= '<td><a href="#"
  2. onmouseover="showTooltip('<div class='info'><strong>Logo de presentation</strong><br>ici la photo est la meme<br><img id='big' src="../images/choristes/ ' . $row['photo'] . '" width='500'></div>');"
  3. onmouseout="hideTooltip()"><img id="big" src="../images/choristes/ ' . $row['photo'] . '" width="200" onmouseout="hideTooltip()" /></a>
  4. <div id="bulle"></div></td>';


 
J'ai le message : Parse error: syntax error, unexpected T_CLASS in ..............
Pouvez-vous me corriger cette ligne ?
 
Merci.

Reply

Marsh Posté le 09-07-2010 à 19:19:38   

Reply

Marsh Posté le 09-07-2010 à 20:26:59    

Si ton texte est entre " ' " alors il te suffit de mettre un " \ " devant chaque  " ' " de ton texte.
Corrige déjà ça et ensuite on verra s'il y a d'autres erreurs.

Reply

Marsh Posté le 10-07-2010 à 17:01:26    

omega2 a écrit :

Si ton texte est entre " ' " alors il te suffit de mettre un " \ " devant chaque  " ' " de ton texte.
Corrige déjà ça et ensuite on verra s'il y a d'autres erreurs.


 
Salut omega2,
 
Voilà où j'en suis :
 

Code :
  1. <style type="text/css" media="screen">
  2.  img{ border:none;}
  3.  #bulle { position: absolute; visibility: hidden;  font-size:12px;}
  4.  .info{ border:1px solid #666666; padding: 7px; color:#666666; background-color:#FFFFFF; font-family:"trebuchet MS";}
  5.     </style>
  6. <script type="text/javascript" language="javascript" src="js/infobulle.js"></script>
  7. ........................
  8. $str.= '<td><a href="#" onmouseover="showTooltip(\'<div class="info"><img id="big" src="../images/choristes/' . $row['photo'] . '" width="500"></div>\');" onmouseout="hideTooltip()"><img id="big" src="../images/choristes/' . $row['photo'] . '" width="60" onmouseout="hideTooltip()" /></a><div id="bulle"></div></td>';


 
Là, j'affiche la photo de taille 500, avec dessous la partie du lien ');" onmouseout="hideTooltip()">, et la photo de taille 60 à côté.
Avec et selon la couleur du script, le problème vient suite à "showTooltip" ....  :??:   :pt1cable:


Message édité par t671 le 10-07-2010 à 17:02:23
Reply

Marsh Posté le 10-07-2010 à 20:29:51    

tu dois mettre des \ devant les " dans le html que tu passe en paramètre de ta fonction js showTooltip

Message cité 1 fois
Message édité par Nico5779 le 10-07-2010 à 20:30:27

---------------
Créer votre blog gratuitement
Reply

Marsh Posté le 11-07-2010 à 15:05:32    

Nico5779 a écrit :

tu dois mettre des \ devant les " dans le html que tu passe en paramètre de ta fonction js showTooltip


 
Ben non, ça marche pô !!!!! J'y arrive pô !!!!!  :cry:    :??:  
Tu peux tester chez toi ? :pt1cable:

Reply

Marsh Posté le 12-07-2010 à 18:03:21    

donc t'as :
du php qui contient de l'html
les balises html contiennent du javascript
le javascript contient lui même de l'html
 
On part du bas vers le haut :  
1) caractère de début et de fin des chaines javascript. Si ce caractère se trouve dans la chaine, alors il doit être échappé (il faut rajouter un \ devant) Si tu as un \ dedans, il doit aussi être échappé
2) ton javascript est dans une balise html : tu prends le caractère de début et de fin du paramètre de la balise qui contient le javascript et tu regardes s'il se trouve dans le code javascript. Tu l'échappes et tu échappes aussi tous les \ qui s'y trouvent.
3) ton code html est dans du php : caractère de début et de fin du texte php. Tu l'échappes et tu échappes aussi tous les \ qui se trouvent dans le texte php.
 
Au final, tu te retrouveras avec un texte qui devrait fonctionner. A noter que c'est normal si tu as 4 ou 8  \ d'affilé. Ca arrive quand on met du javascript dans des balises html qui sont créé par du php.
 
 
En cas de doutes n'hésites pas à regarder le code source de ta page pour regarder quel caractères tu as manqué.

Reply

Marsh Posté le 13-07-2010 à 09:18:56    

Le fait est qu'il faudrait revoir la conception même du truc à mon avis :o


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 13-07-2010 à 10:54:03    

:pt1cable:  
 
Là, je me mélange les pinceaux ..... !!!!  :(
 
Mon code javascript + html est un code récupéré sur le web :
 

Code :
  1. <a href="#"
  2. onmouseover="showTooltip('<div class=\'info\'><strong>Logo de presentation</strong><br />ici la photo est la meme<br /><img id=\'big\' src=\img.JPG\' width=\'500\'></div>');"
  3. onmouseout="hideTooltip()"><img id="big" src="img.JPG" width="200" onmouseout="hideTooltip()" /></a>


 
En pure html, il fonctionne ....
Le plus simple serait de couper le code php, écrire le html, et repartir en php. Mais comme le code fait parti d'une égalité ...  :pt1cable:  
Ou alors échappé ce qu'il faut pour qu'il fonctionne en php .... Et c'est ce que je n'arrive pas à faire ....  :cry:  

Reply

Marsh Posté le 13-07-2010 à 14:34:41    

Le principe : si tu dois ajouter du code JS/HTML qui contient des " ou ', il faut indiquer dans ton code que ce ne sont pas des fins de chaîne, mais des caractères en les faisant précéder par un \, voire un triple \ si tu as plusieurs "séries" de ' ou ". Ca donne donc ceci :  
 

Code :
  1. <?php
  2. echo "<a href=\"#\"
  3. onmouseover=\"showTooltip('<div class=\'info\'><strong>Logo de presentation</strong><br />ici la photo est la meme<br /><img id=\'big\' src=\'img.JPG\' width=\'500\'></div>');\" onmouseout=\"hideTooltip()\"><img id=\"big\" src=\"img.JPG\" width=\"200\" onmouseout=\"hideTooltip()\" /></a>";
  4. ?>


 
Si tu as plusieurs séries de ' (si tu utilises ' ou au lieu de " dans ton echo notamment) :  
 

Code :
  1. echo '<a href="#"
  2. onmouseover="showTooltip(\'<div class=\\\'info\\\'><.........';


 
Compris ?
 
N.B. : Si tu utilises un éditeur avec coloration syntaxique, tu dois le voir à la couleur du code quand il manque qqch.


Message édité par aideinfo le 13-07-2010 à 14:40:36

---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 13-07-2010 à 16:25:09    

+1 pour la colorisation même dans le forum on peux voir l'erreur
 

Code :
  1. $str.= '<td><a href="#"
  2. onmouseover="showTooltip('<div class='info'><strong>Logo de presentation</strong><br>ici la photo est la meme<br><img id='big' src="../images/choristes/ ' . $row['photo'] . '" width='500'></div>');"
  3. onmouseout="hideTooltip()"><img id="big" src="../images/choristes/ ' . $row['photo'] . '" width="200" onmouseout="hideTooltip()" /></a>
  4. <div id="bulle"></div></td>';

Reply

Marsh Posté le 13-07-2010 à 16:25:09   

Reply

Marsh Posté le 13-07-2010 à 18:22:18    

J'utilise effectivement un éditeur avec coloration syntaxique, et je me suis apperçu que l'erreur commence au niveau du <div class='info'>. Mais je n'arrive pas à corriger ...  :fou: Je ne sais pas comment faire ....  :??:   :pt1cable:  
 
aideinfo, pourquoi utilises-tu \\\ d'affilé (\'<div class=\\\'info\\\'.......... ?

Reply

Marsh Posté le 13-07-2010 à 20:07:30    

pour protéger le protecteur.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 13-07-2010 à 23:11:22    

Le caractère \ indique que ce qui suit est un caractère et non un séparateur. Donc, puisque le \ simple a déjà été utilisé, il faut en rajouter deux (le 2è est un caractère, l'autre "l'indicateur" qui précède le caractère). Si tu dois rajouter uen série de \, tu en mettras 5, puis 7, ....


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed