Salut, voilà aprés une superbe aide de un zer0 il ma beaucoup aider pou mon systeme de news bbcode en zcode avec le tp de m@teo21, mon probleme est ici entre deux id
id="textarea" et id="news_form" enfaite j'aimerais placer mon systeme bbcode sur mon systeme de news, donc je remplace contenu(c le nom ds le tp de m@teo21) par news(nom dans mon news systeme de news)
donc j'ai tour remplacer contenu par news ca me fait ceci pour l'affichage du bbcode sur le tp de m@teo
( c'estt ma page bbcode.php )
<code type="php">
<?php
// On enlève les éventuels antislash
$contenu = stripslashes($donnees['contenu']);
// On applique le Zcode
$zcode = array(
'`<italique>(.+)</italique>`isU',
'`<gras>(.+)</gras>`isU',
'`<barre>(.+)</barre>`isU',
'`<lien>(.+)</lien>`isU',
'`<lien url="(.+)">(.+)</lien>`isU',
'`<image>(.+)</image>`isU',
'`<citation>(.+)</citation>`isU',
'`<citation nom="(.+)">(.+)</citation>`isU',
'`<citation lien="(.+)">(.+)</citation>`isU',
'`<taille valeur="(.+)">(.+)</taille>`isU'
);
$html = array(
'<em>$1</em>',
'<strong>$1</strong>',
'<del>$1</del>',
'<a href="$1">$1</a>',
'<a href="$1">$2</a>',
'<img src="$1" alt="Image utilisateur" />',
'<br /><span class="citation">Citation</span><div class="citation2">$1</div>',
'<br /><span class="citation">Citation : $1</span><div class="citation2">$2</div>',
'<br /><span class="citation"><a href="$1">Citation</a></span><div class="citation2">$2</div>',
'<span class="$1">$2</span>'
);
$contenu = preg_replace($zcode, $html, $contenu);
// parsage des smilies
$smiliesName = array(':magicien:', ':colere:', ':diable:', ':ange:', ':ninja:', '>_<', ':pirate:', ':zorro:', ':honte:', ':soleil:', ':\'\\(', ':waw:', ':\\)', ':D', ';\\)', ':p', ':lol:', ':euh:', ':\\(', ':o', ':colere2:', 'o_O', '\\^\\^', ':\\-°');
$smiliesUrl = array('magicien.png', 'angry.gif', 'diable.png', 'ange.png', 'ninja.png', 'pinch.png', 'pirate.png', 'zorro.png', 'rouge.png', 'soleil.png', 'pleure.png', 'waw.png', 'smile.png', 'heureux.png', 'clin.png', 'langue.png', 'rire.gif', 'unsure.gif', 'triste.png', 'huh.png', 'mechant.png', 'blink.gif', 'hihi.png', 'siffle.png');
$smiliesPath = "
[ Lien ]";
for ($i = 0, $c = count($smiliesName); $i < $c; $i++) {
$content = preg_replace('`' . $smiliesName[$i] . '`isU', '<img src="' . $smiliesPath . $smiliesUrl[$i] . '" alt="smiley" />', $contenu);
}
// Rtours à la ligne
$contenu = preg_replace('`\n`isU', '<br />', $contenu);
// On affiche le résultat
echo $contenu;
?>
</code>
donc pour mon nouveau systeme de news je remplace contenu par news tou va bien, mais ensuite regarder pour rediger ma news sur le tp de m@teo ca fait ceci:
<code type="html">
<form action="liste_news.php" method="post">
<div>
<p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
<p>Catégorie : <input type="text" size="30" name="categorie" value="<?php echo $categorie; ?>" /></p>
<p>
<input type="button" value="G" onclick="insertTag('<gras>', '</gras>', 'textarea')" />
<input type="button" value="I" onclick="insertTag('<italique>', '</italique>', 'textarea')" />
<input type="button" value="Lien" onclick="insertTag('', '', 'textarea', 'lien')" />
<input type="button" value="Image" onclick="insertTag('<image>', '</image>', 'textarea')" />
<input type="button" value="Citation" onclick="insertTag('', '', 'textarea', 'citation')" />
<select onchange="insertTag('<taille valeur="' + this.options[this.selectedIndex].value + '">', '</taille>', 'textarea');">
<option value="none" class="selected" selected="selected">Taille</option>
<option value="ttpetit">Très très petit</option>
<option value="tpetit">Très petit</option>
<option value="petit">Petit</option>
<option value="gros">Gros</option>
<option value="tgros">Très gros</option>
<option value="ttgros">Très très gros</option>
</select>
<img src="
[ Lien ]" alt=":)" onclick="insertTag(':)', '', 'textarea');" />
<img src="
[ Lien ]" alt=":euh:" onclick="insertTag(':euh:', '', 'textarea');" />
</p>
<p>
<input name="previsualisation" type="checkbox" id="previsualisation" value="previsualisation" />
<label for="previsualisation">Prévisualisation automatique</label>
</p>
</div>
Contenu : <textarea onkeyup="preview(this, 'previewDiv');" onselect="preview(this, 'previewDiv');" id="textarea" cols="150" rows="10" name="contenu"><?php echo $contenu; ?></textarea>
<input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
<input type="submit" value="Envoyer" />
<div id="previewDiv"></div>
<div id="viewDiv"></div>
</code>
et mon probleme ce pose ici:
<code type="html">
Contenu : <textarea onkeyup="preview(this, 'previewDiv');" onselect="preview(this, 'previewDiv');" id="textarea" cols="150" rows="10" name="contenu"><?php echo $contenu; ?/textarea>
</code>
et oui comme vous pouvez le voir il y a deja un id pour le bbcode id="textarea" et pour mon nouveau systeme de news mon id"news_form" doit etre dans de systeme de bbcode mais comment faire svp car il y en a deux important (textarea) c'est pour le bbcode, et news_form pour les news le contenu en gros.
voici ma page bbcode.js
<code type="javascript">
<!--
function insertTag(startTag, endTag, textareaId, tagType) {
var field = document.getElementById(textareaId);
field.focus();
if (window.ActiveXObject) {
var textRange = document.selection.createRange();
var currentSelection = textRange.text;
} else {
var startSelection = field.value.substring(0, field.selectionStart);
var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
var endSelection = field.value.substring(field.selectionEnd);
}
if (tagType) {
switch (tagType) {
case "lien":
endTag = "</lien>";
if (currentSelection) {
if (currentSelection.indexOf("http://") == 0 || currentSelection.indexOf("https://") == 0 || currentSelection.indexOf("ftp://") == 0 || currentSelection.indexOf("www.") == 0) {
var label = prompt("Quel est le libellé du lien ?") || "";
startTag = "<lien url=\"" + currentSelection + "\">";
currentSelection = label;
} else {
var URL = prompt("Quelle est l'url ?");
startTag = "<lien url=\"" + URL + "\">";
}
} else {
var URL = prompt("Quelle est l'url ?") || "";
var label = prompt("Quel est le libellé du lien ?") || "";
startTag = "<lien url=\"" + URL + "\">";
currentSelection = label;
}
break;
case "citation":
endTag = "</citation>";
if (currentSelection) {
if (currentSelection.length > 30) {
var auteur = prompt("Quel est l'auteur de la citation ?") || "";
startTag = "<citation nom=\"" + auteur + "\">";
} else {
var citation = prompt("Quelle est la citation ?") || "";
startTag = "<citation nom=\"" + currentSelection + "\">";
currentSelection = citation;
}
} else {
var auteur = prompt("Quel est l'auteur de la citation ?") || "";
var citation = prompt("Quelle est la citation ?") || "";
startTag = "<citation nom=\"" + auteur + "\">";
currentSelection = citation;
}
break;
}
}
if (window.ActiveXObject) {
textRange.text = startTag + currentSelection + endTag;
textRange.moveStart('character', -endTag.length-currentSelection.length);
textRange.moveEnd('character', -endTag.length);
textRange.select();
} else { // Ce n'est pas IE
field.value = startSelection + startTag + currentSelection + endTag + endSelection;
field.focus();
field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length);
}
}
function preview(textareaId, previewDiv) {
var field = textareaId.value;
if (document.getElementById('previsualisation').checked && field) {
var smiliesName = new Array(':magicien:', ':colere:', ':diable:', ':ange:', ':ninja:', '>_<', ':pirate:', ':zorro:', ':honte:', ':soleil:', ':\'\\(', ':waw:', ':\\)', ':D', ';\\)', ':p', ':lol:', ':euh:', ':\\(', ':o', ':colere2:', 'o_O', '\\^\\^', ':\\-°');
var smiliesUrl = new Array('magicien.png', 'angry.gif', 'diable.png', 'ange.png', 'ninja.png', 'pinch.png', 'pirate.png', 'zorro.png', 'rouge.png', 'soleil.png', 'pleure.png', 'waw.png', 'smile.png', 'heureux.png', 'clin.png', 'langue.png', 'rire.gif', 'unsure.gif', 'triste.png', 'huh.png', 'mechant.png', 'blink.gif', 'hihi.png', 'siffle.png');
var smiliesPath = "
[ Lien ]";
field = field.replace(/&/g, '&');
field = field.replace(/</g, '<').replace(/>/g, '>');
field = field.replace(/\n/g, '<br />').replace(/\t/g, ' ');
field = field.replace(/<gras>([\s\S]*?)<\/gras>/g, '<strong>$1</strong>');
field = field.replace(/<italique>([\s\S]*?)<\/italique>/g, '<em>$1</em>');
field = field.replace(/<lien>([\s\S]*?)<\/lien>/g, '<a href="$1">$1</a>');
field = field.replace(/<lien url="([\s\S]*?)">([\s\S]*?)<\/lien>/g, '<a href="$1" title="$2">$2</a>');
field = field.replace(/<image>([\s\S]*?)<\/image>/g, '<img src="$1" alt="Image" />');
field = field.replace(/<citation nom=\"(.*?)\">([\s\S]*?)<\/citation>/g, '<br /><span class="citation">Citation : $1</span><div class="citation2">$2</div>');
field = field.replace(/<citation lien=\"(.*?)\">([\s\S]*?)<\/citation>/g, '<br /><span class="citation"><a href="$1">Citation</a></span><div class="citation2">$2</div>');
field = field.replace(/<citation nom=\"(.*?)\" lien=\"(.*?)\">([\s\S]*?)<\/citation>/g, '<br /><span class="citation"><a href="$2">Citation : $1</a></span><div class="citation2">$3</div>');
field = field.replace(/<citation lien=\"(.*?)\" nom=\"(.*?)\">([\s\S]*?)<\/citation>/g, '<br /><span class="citation"><a href="$1">Citation : $2</a></span><div class="citation2">$3</div>');
field = field.replace(/<citation>([\s\S]*?)<\/citation>/g, '<br /><span class="citation">Citation</span><div class="citation2">$1</div>');
field = field.replace(/<taille valeur=\"(.*?)\">([\s\S]*?)<\/taille>/g, '<span class="$1">$2</span>');
for (var i=0, c=smiliesName.length; i<c; i++) {
field = field.replace(new RegExp(" " + smiliesName[i] + " ", "g"), " <img src=\"" + smiliesPath + smiliesUrl[i] + "\" alt=\"" + smiliesUrl[i] + "\" /> ");
}
document.getElementById(previewDiv).innerHTML = field;
}
}
function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
function view(textareaId, viewDiv){
var content = encodeURIComponent(document.getElementById(textareaId).value);
var xhr = getXMLHttpRequest();
if (xhr && xhr.readyState != 0) {
xhr.abort();
delete xhr;
}
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200){
document.getElementById(viewDiv).innerHTML = xhr.responseText;
} else if (xhr.readyState == 3){
document.getElementById(viewDiv).innerHTML = "<div style=\"text-align: center;\">Chargement en cours...</div>";
}
}
xhr.open("POST", "
[ Lien ]", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("string=" + content);
}
//-->
</code>
désolé de vous donner autant de code mais ce sont les code les plus important désolé encore.