Bonjour,
Je me suis inspiré du site du zéro pour réaliser un formulaire en BBCODE. Celui fonctionne parfaitement à l'écriture (Je veux dire par là que le contenu du formulaire est sauvegardé dans la base de données avec le format BBCODE).
En ce qui concerne la lecture, j'ai quelques problèmes. J'arrive à récupérer l'ensemble des news écrites, mais le format BBCODE est ignoré.
Voici mon fichier JavaScript pour la transformation BBCODE/TEXTE :
Et voici mon code PHP pour afficher ces news :
Je pense que le problème vient d'une absence de liaison entre le fichier php et la fonction javascript, au niveau de
Mais je n'arrive pas à saisir le fonctionnement de
Quelqu'un pourrait-il m'éclairer afin de réaliser cette liaison ?
En vous remerciant,
Guillaume
Je me suis inspiré du site du zéro pour réaliser un formulaire en BBCODE. Celui fonctionne parfaitement à l'écriture (Je veux dire par là que le contenu du formulaire est sauvegardé dans la base de données avec le format BBCODE).
En ce qui concerne la lecture, j'ai quelques problèmes. J'arrive à récupérer l'ensemble des news écrites, mais le format BBCODE est ignoré.
Voici mon fichier JavaScript pour la transformation BBCODE/TEXTE :
var ptag=String.fromCharCode(5,6,7);
function previsualisation() {
t=document.contenu.value
t=code_to_html(t)
if (document.getElementById) document.getElementById("prev").innerHTML=t
}
function code_to_html(t) {
t=nl2khol(t)
// balise Gras
t=deblaie(/(\[\/gras\])/g,t)
t=remplace_tag(/\[gras\](.+)\[\/gras\]/g,'<span style="font-weight: bold;">$1</span>',t)
t=remblaie(t)
// balise Italic
t=deblaie(/(\[\/italic\])/g,t)
t=remplace_tag(/\[italic\](.+)\[\/italic\]/g,'<span style="font-style: italic;">$1</span>',t)
t=remblaie(t)
// balise Citation
t=deblaie(/(\[\/citation\])/g,t)
t=remplace_tag(/\[citation=([\s\S]*?)\](.+)\[\/citation\]/g,'<strong>Citation $1 :</strong><div style="border: 1px solid #000000; width: 50%; font-family: Verdana, \'Trebuchet MS\', Tahoma, \'Times New Roman\', Times, serif; text-align: left; font-size: 11px;" align="center">$2</div>',t)
t=remblaie(t)
// balise Image
t=deblaie(/(\[\/image\])/g,t)
t=remplace_tag(/\[image\](.+)\[\/image\]/g,'<img src="$1" />',t)
t=remblaie(t)
// balise URL
t=deblaie(/(\[\/url\])/g,t)
t=remplace_tag(/\[\url=([\s\S]*?)\](.+)\[\/url\]/g,'<a href="$1" target="_blank">$2</a>',t)
t=remblaie(t)
t=unkhol(t)
t=nl2br(t)
return t
}
// tout le code qui suit c'est pour transformer toutes les balises, comme les preg_replace en PHP
function deblaie(reg,t) {
textarea=new String(t);
return textarea.replace(reg,'$1\n');
}
function remblaie(t) {
textarea=new String(t);
return textarea.replace(/\n/g,'');
}
function remplace_tag(reg,rep,t) {
textarea=new String(t);
return textarea.replace(reg,rep);
}
function nl2br(t) {
textarea=new String(t);
return textarea.replace(/\n/g,'<br/>');
}
function nl2khol(t) {
textarea=new String(t);
return textarea.replace(/\n/g,ptag);
}
function unkhol(t) {
textarea=new String(t);
return textarea.replace(new RegExp(ptag,'g'),'\n');
}
Et voici mon code PHP pour afficher ces news :
<?php
// On récupère les 5 dernières news
$retour = mysql_query('SELECT * FROM news ORDER BY idnews DESC LIMIT 0, 5');
while ($donnees = mysql_fetch_array($retour))
{
?>
<div style="border: 1px dashed #000000; padding: 0.2em; height: 200px; overflow: auto;" align="left" id="prev">
<h3>
<?php echo $donnees['titrenews']; ?>
<em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
</h3>
<?php
//On enlève les éventuels antislash PUIS on crée les entrées en HTML
$contenu = nl2br(stripslashes($donnees['contenunews']));
?>
<span id="contenu" name="contenu"><?php echo "$contenu" ?></span>
<p>
<input type="hidden" value="Visualiser" onLoad="previsualisation()" />
</p>
</div>
<?php
} // Fin de la boucle des news
?>
Je pense que le problème vient d'une absence de liaison entre le fichier php et la fonction javascript, au niveau de
<span id="contenu" name="contenu"><?php echo "$contenu" ?></span>
Mais je n'arrive pas à saisir le fonctionnement de
t=document.contenu.value
Quelqu'un pourrait-il m'éclairer afin de réaliser cette liaison ?
En vous remerciant,
Guillaume