Accueil > Forum > > > > probleme d'affichage de contenu dynamique en js
probleme d'affichage de contenu dynamique en js
dimanche 18 novembre 2007 à 04:09:17 |
probleme d'affichage de contenu dynamique en js

bilouts
|
Bonjour,
J'ai eu beau creuser et encore creuser, je ne trouve pas. (meme sur javascriptfr :) )
Pour être bref, j'ai une page 'mes messages envoyés' contenant plusieurs options qui affichent les contenus sans rechargement de la page ;
lorsque je clique sur un message, j'ai un lien de type fonction comme suit : onClick='f(" echo $ligne['message']; ?>"); (sachant que $ligne['message'] est à la base enregistré sous la forme htmlspecialchars en php dans ma bdd).
Ensuite, ma fonction est la suivante (vraiment basique) :
function f(id)
{
document.getElementById('contenu_message').innerHTML=id
}
et le résultat est affiché dans une div avec id='contenu_message'.
Jusque la tout va bien, par contre, parfois, et sans que j'arrive à trouver pourquoi (à moins que les variables js est une taille maximum, ce qui m'étonnerais), l'affichage ne se fait pas dans la div :
voici un exemple qui marche et un autre qui marche pas (je montre le resultat 'code source' du navigateur) :
MARCHE:
MARCHE PAS:
Je suis tout à fait dans l'embaras car les deux seraient sencés marcher ou ne pas marcher, mais un qui marche et l'autre qui marche pas,
ça me dépasse, alors si quelqu'un à une idée (meme toute petite) de la raison pour laquelle ça disfonctionne autant, je vous en serais reconnaissant.
Merci par avance
Corentin
|
|
dimanche 18 novembre 2007 à 04:23:25 |
Re : probleme d'affichage de contenu dynamique en js

bilouts
|
Bon je me dis que vous voulez le code source php qui élucidera peut être quelques mystères (attention, codé à la barbare).
//je précise tout de même avant que $ligne['id_reception']=='0' lorsqu'un message est envoyé en broadcast à tous les membres
echo" | Supprimer | objet | envoyé à | date | heure |
";
$i=0;
$requete = "SELECT * FROM identification";
$resultat = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
while($ligne = mysql_fetch_assoc($resultat))
{
$rec_id[$i]=$ligne['id_identification'];
$rec_name[$i]=$ligne['login'];
$i++;
}
$requete = "SELECT * FROM messages WHERE type='envoi' and id_envoi='".$_SESSION['id_pers']."' order by date, heure desc";
$resultat = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
while($ligne = mysql_fetch_assoc($resultat))
{
$z=0;
for($j=0;$j<$i;$j++)
{
if($ligne['id_reception']=='0')
{
if($z>0)
{break;}
$z++;
$d = explode("-", $ligne['date']);
$message_rec[$j]=html_entity_decode($ligne['message']);
$jour=$d[2];
$mois=$d[1];
$annee=$d[0];
$amois[0] = '/01/';
$amois[1] = '/02/';
$amois[2] = '/03/';
$amois[3] = '/04/';
$amois[4] = '/05/';
$amois[5] = '/06/';
$amois[6] = '/07/';
$amois[7] = '/08/';
$amois[8] = '/09/';
$amois[9] = '/10/';
$amois[10] = '/11/';
$amois[11] = '/12/';
$nmois[0] = 'janvier';
$nmois[1] = 'février';
$nmois[2] = 'mars';
$nmois[3] = 'avril';
$nmois[4] = 'mai';
$nmois[5] = 'juin';
$nmois[6] = 'juillet';
$nmois[7] = 'aout';
$nmois[8] = 'septembre';
$nmois[9] = 'octobre';
$nmois[10] = 'novembre';
$nmois[11] = 'decembre';
$mois_lettres= preg_replace($amois, $nmois, $mois);
?>
");'>
echo"
|
suppr.
|
".$ligne['objet']."
|
tous
|
".$jour." ".$mois_lettres." ".$annee."
|
".$ligne['heure']."
|
";
}
else if($ligne['id_reception']==$rec_id[$j] && $ligne['type']=='envoi')
{
if($z>0)
{break;}
$z++;
$d = explode("-", $ligne['date']);
$message_rec[$j]=html_entity_decode($ligne['message']);
$jour=$d[2];
$mois=$d[1];
$annee=$d[0];
$amois[0] = '/01/';
$amois[1] = '/02/';
$amois[2] = '/03/';
$amois[3] = '/04/';
$amois[4] = '/05/';
$amois[5] = '/06/';
$amois[6] = '/07/';
$amois[7] = '/08/';
$amois[8] = '/09/';
$amois[9] = '/10/';
$amois[10] = '/11/';
$amois[11] = '/12/';
$nmois[0] = 'janvier';
$nmois[1] = 'février';
$nmois[2] = 'mars';
$nmois[3] = 'avril';
$nmois[4] = 'mai';
$nmois[5] = 'juin';
$nmois[6] = 'juillet';
$nmois[7] = 'aout';
$nmois[8] = 'septembre';
$nmois[9] = 'octobre';
$nmois[10] = 'novembre';
$nmois[11] = 'decembre';
$mois_lettres= preg_replace($amois, $nmois, $mois);
?>
");'>
echo"
|
suppr.
|
".$ligne['objet']."
|
".$rec_name[$j]."
|
".$jour." ".$mois_lettres." ".$annee."
|
".$ligne['heure']."
|
";
}
}
}
?>
|
Voila
|
|
dimanche 18 novembre 2007 à 12:04:31 |
Re : probleme d'affichage de contenu dynamique en js

bultez
|
Bonjour,
>>je me dis que vous voulez le code source php ben non. on n'a pas ta base de données dèjà ! alors comment fait-on ? il vaudrait mieux la page html résultante et encore mieux : l'extrait de ce qui pose problème ( le minimum, mais tout ce qui est nécessaire )
Cordialement Bul [mon Site] [M'écrire]
|
|
dimanche 18 novembre 2007 à 13:09:20 |
Re : probleme d'affichage de contenu dynamique en js

dsaunier
|
bonjour, à vue de nez, essaye d'etre homogene pour les valeurs d'attribut de tes balises html, si tu ecris href="#" alors onclick="....", c'est plus propre. Ensuite, ta chaine contient des " et un ' qui pose pb. En faite en supposant que tu appelles ta fonction par onclick="f('ta chaine de caracteres');" il faut que tu élimine les ', cad les ' ou que tu les remplace par la sequence d'echapement \' et cela marche.
|
|
dimanche 18 novembre 2007 à 15:39:01 |
Re : probleme d'affichage de contenu dynamique en js

bilouts
|
Merci dsaunier pour ta réponse, j'essaye tout de suite. ;)
ps : pour bultez, difficile de donner plus de code que la, sachant que dans le premier post, vous avez les séquences qui posent problème, et dans le second, la quasi-totalité du code.
J'ai également donné la page résultante html (en tout cas la partie qui nous intéresse).
Pour la bdd, elle n'a rien à voir avec mon problème, il faut juste savoir que $ligne['objet'] est l'objet de mon message ; et $ligne['contenu'] est le contenu de mon message et en l'occurence ce qui pose problème, non en sortie de bdd, mais en déplacement par javascript.
|
|
dimanche 18 novembre 2007 à 15:47:04 |
Re : probleme d'affichage de contenu dynamique en js
|
lundi 19 novembre 2007 à 06:53:22 |
Re : probleme d'affichage de contenu dynamique en js

dsaunier
|
Réponse acceptée !
Bonjour Bilouts, je te conseille d'etre au plus pres des normes html/xhtml et donc mets les attributs de tes balises entre double quote... Ton pb provient de ton appel de fonction: <script> function f(id) { alert(id.toString()); } </script> <a href="#" onclick="f('ok()"')">r</a> <!-- affiche ok()" --> <a href="#" onclick='f("ok()"")'>r</a> <!-- Erreur javascript: unterminated string literal f("ok()"") --> Le navigateur interprete ton javascript, et comme il suit en partie les normes, il trouve des double quote qui sont pour lui des delimiteurs de chaine.
Perso, pour du dev en javascript, j'utilise FireFox et l'extension Firebug qui permettent un debogage facile. De plus, j'active l'affichage des erreurs javascript ds IE lors des tests internavigateurs.
A+
ds
|
|
lundi 19 novembre 2007 à 07:39:26 |
Re : probleme d'affichage de contenu dynamique en js

bultez
|
<script type="text/javascript"> function f(id1) { document.getElementById('contenu_message').innerHTML=id1 } </script> <div id="contenu_message"></div> <a href="#" onClick='f(" Bonjour,<br/><br/><br/><br/>"+ "Voici une <b>belle évolution du site</b> (sans me vanter) qui vous est proposée la."+ "<br/><br/><br/><br/>Vous pourrez désormais, en plus de la communication \"publique\" "+ "faite sur le site, échanger des mails entre vous (et avec moi pour mon plus grand plaisir) "+ "de manière plus \"privée\" ou disons plus personnelle.<br/><br/><br/><br/>"+ "J'attends vos réponses.<br/><br/><br/><br/>"+ "Cordialement <br/><br/><br/><br/><br/><br/>Corentin");'>lien</a>
¡--------¡----------------------------------------------------------¡ |FireFox |regarder la "console d'erreurs" | | | Outils / Console d'erreurs | | | | | | et mieux, télécharger FireBug | |--------|----------------------------------------------------------| |Internet|activer le deboggage : Outils/options Internet/Avancés | |Explorer| dans la liste, sous "Navigation" : décocher | | | ° Afficher une notification de chaque erreur de script | | | ° Désactiver le débogage de Scripts (Internet Explorer) | | | | | | et mieux, télécharger le Debogger IE | |--------|----------------------------------------------------------| |K-Meleon|regarder la "console d'erreurs" | | | Outils / Console d'erreurs | |--------|----------------------------------------------------------| |Opera |regarder la "console d'erreurs" | | | Outils / Avancé / Console d'erreurs | |--------|----------------------------------------------------------| |Safari |regarder Debug / Show JavaScript Console | | | | | |modif Fichier "Support:\Documents and Settings\utilisateur| | |\Application Data\Apple Computer\Safari\Preferences.plist"| | | y ajouter <key>IncludeDebugMenu</key> | | | <true/> | !--------!----------------------------------------------------------!
Cordialement Bul [mon Site] [M'écrire]
|
|
mardi 20 novembre 2007 à 00:58:15 |
Re : probleme d'affichage de contenu dynamique en js

bilouts
|
Merci beaucoup pour votre investissement,
Je regarde tout de suite si ça marche, en tout cas, ça me semble logique ;)
|
|
mardi 20 novembre 2007 à 01:44:12 |
Re : probleme d'affichage de contenu dynamique en js
|