8800 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai crée un module de mini-news me permettant d'afficher une image et un texte en cliquant sur une miniature, et ce de façon dynamique.
L'affichage du texte et de l'image se font correctement, sauf si mon champs $resume contient un caractère spécial (de type guillemet, apostrophe...)


Voici le code de la miniature :


$sql = mysql_query("SELECT id, titre, image, resume FROM " . NEWS_TABLE . " WHERE mininews = '1' ORDER BY date DESC LIMIT 0, 4");
                    
while (list($news_id, $titre, $image, $resume, $url) = mysql_fetch_array($sql))
{
$titre = stripslashes($titre);
$image = stripslashes($image);
$resume = stripslashes($resume);

$dimensions=getimagesize($image);
						
if($dimensions[0] < $dimensions[1]) {
$change = "max-height: 41px;  height: expression(this.scrollheight != 41? '41px' : 'auto');";
}
else {
$change = "max-width: 41px;  width: expression(this.scrollWidth != 41? '41px' : 'auto');";
}
						
//affichage de l'image
echo "<center><img style=\"border: 0; vertical-align: middle; overflow: auto; " . $change . "\" src=\"" . $image . "\" alt=\"" . $resume . "\" title=\"" . $titre . "\" onclick=\"affichImage('" . $image . "'); affichTexte('" . $resume . "')\" /></center>";



Ci dessous le code de l'image qui s'affiche :


$sql = mysql_query("SELECT id, image, resume, url FROM " . NEWS_TABLE . " WHERE mininews = '1' ORDER BY date DESC LIMIT 0, 4");
    
while (list($news_id, $image, $resume) = mysql_fetch_array($sql))
{
$image = stripslashes($image);
$resume = stripslashes($resume);
$url = stripslashes($url);
$dimensions=getimagesize($image);
                            
                        
if($dimensions[0] < $dimensions[1]) {
$change = "max-width: 143px;  width: expression(this.scrollWidth != 143px? '143px' : 'auto');";
}
else {
$change = "max-height: 143px;  height: expression(this.scrollheight != 143px? '143px' : 'auto');";
}
                        
echo "<center><a href=\"" . $url . "\"><img style=\"border: 0; display:none; vertical-align: middle; overflow: auto; " . $change . "\" src=\"" . $image . "\" id=\"" . $image . "\" alt=\"" . $resume . "\"/></a></center>";



Enfin, le code pour l'affichage du texte :


$sql = mysql_query("SELECT id, resume FROM " . NEWS_TABLE . " WHERE mininews = '1' ORDER BY date DESC LIMIT 0, 4");
		
while (list($news_id, $resume, $image) = mysql_fetch_array($sql))
{										
$resume = stripslashes($resume);
							
echo "<center><span style=\"border: 0; color: white; display:none; vertical-align: middle;\" id=\"" . $resume . "\"/><b>" . $resume . "</b></span></center>";
}



Et enfin les fonctions JavaScript appelées au OnClick :


function affichImage(idImage) {
conteneur=document.getElementById('conteneurImg');
myArrayImg= conteneur.getElementsByTagName('img');			
		
for (i=0;i<myArrayImg.length;i++) {
myArrayImg[i].style.display="none";
}
			
document.getElementById(idImage).style.display="block";
}
		
function affichTexte(idResume) {
conteneur=document.getElementById('conteneurTxt');			
myArrayRes= conteneur.getElementsByTagName('span');
			
for (i=0;i<myArrayRes.length;i++) {
myArrayRes[i].style.display="none";
}
			
document.getElementById(idResume).style.display="block";
}



J'ai vérifié au niveau de mon formulaire, j'enregistre bien les données dans ma base SQL avec la fonction addslashes(). Le champs "resume" associé contient bien, par exemple : "Cette news n\'existe pas."

Je ne comprend pas d'où vient le problème, certainement au niveau de l'envoi de $resume à la fonction affichTexte(IdTexte), mais cela parasite aussi affichImage(idImage).

L'url de mon site est http://team-btk.fr, et un exemple du problème se trouve dans la 4ème miniature du module située dans la bannière. Le message qui devrait s'afficher est "Cette news n'existe pas." (d'où la présence de l'apostrophe)...

Merci pour votre aide.[/i][/i]
Modifié par Killamasta60 (06 Dec 2010 - 11:34)