Bonjour,
j'ai réalisé un système de news (php, donc). Tout fonctionnait bien.
J'ai ajouté le BBcode dedans. Même chose.
Sachant que je ne serais pas le seul à poster des news, j'ai voulu mettre les balises du BBcode dans ma rediger_news.php
J'ai donc pris un script sur internet, qui sur un index.php, marche parfaitement. J'ai voulu le mettre en pratique dans mon rediger_news.php, et la ca bug :s non seulement, rien n'apparait en cas de click sur une balise, mais en plus le bouton envoyer semble...désactiver
voici mes codes :
index.php(trouver sur internet)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<script language="Javascript">
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
var regexp = new RegExp("[\r]","gi");
function storeCaret(selec)
{
if (isMozilla)
{
// Si on est sur Mozilla
oField = document.forms['news'].elements['newst'];
objectValue = oField.value;
deb = oField.selectionStart;
fin = oField.selectionEnd;
objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );
// alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
oField.selectionStart = strlen(objectValueDeb);
oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
oField.focus();
oField.setSelectionRange(
objectValueDeb.length + selec.length + 2,
objectValueDeb.length + selec.length + 2);
}
else
{
// Si on est sur IE
oField = document.forms['news'].elements['newst'];
var str = document.selection.createRange().text;
if (str.length>0)
{
// Si on a selectionné du texte
var sel = document.selection.createRange();
sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
sel.collapse();
sel.select();
}
else
{
oField.focus(oField.caretPos);
// alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();
var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['newst'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();
}
}
}
</script>
</head>
<body>
<center>
<form name="news">
<input type="button" value="b" style="width:50px;font-weight:bold" onclick="storeCaret('b')">
<input type="button" value="i" style="width:50px;font-style:italic" onclick="storeCaret('i')">
<input type="button" value="u" style="width:50px;text-decoration:underline" onclick="storeCaret('u')">
<input type="button" value="mail"style="width:50px" onclick="storeCaret('mail=noter_ladresse_ici')">
<input type="button" value="centrer"style="width:50px" onclick="storeCaret('center')">
<input type="button" value="justifié"style="width:50px" onclick="storeCaret('justify')">
<input type="button" value="taille"style="width:50px" onclick="storeCaret('size=noter_la_taille_ici')">
<input type="button" value="aligne à droite"style="width:50px" onclick="storeCaret('right')">
<input type="button" value="color"style="width:50px" onclick="storeCaret('color=nom_de_la_couleur')">
<input type="button" value="lien"style="width:50px" onclick="storeCaret('url=noter_lurl_ici')">
<input type="button" value="img"style="width:50px" onclick="storeCaret('img')"><br>
<textarea name="newst" id="newst" rows="10" wrap="virtual" cols="45"></textarea>
</form>
</center><noscript><a href="http://www.editeurjavascript.com/countus/">compteur live</a></noscript>
</body>
</html>
ma rediger_news.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Rédiger une news</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
h3, form
{
text-align:center;
}
</style>
<script language="javascript" type="text/javascript" src="bbs.js"></script>
</head>
<body>
<h3><a href="liste_news.php">Retour à la liste des news</a></h3>
<?php
mysql_connect("******", "******", "*****");
mysql_select_db("*****");
if (isset($_GET['modifier_news'])) // Si on demande de modifier une news
{
// On protège la variable "modifier_news" pour éviter une faille SQL
$_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news']));
// On récupère les infos de la news correspondante
$timestamp = $donnees['Timestamp'] + 21600;
$retour = mysql_query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\'');
$donnees = mysql_fetch_array($retour);
// On place le titre et le contenu dans des variables simples
$contenu = stripslashes($donnees['contenu']);
$titre = stripslashes($donnees['titre']);
$pseudo = stripslashes($donnees['pseudo']);
$id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rédige une nouvelle news
{
// Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news
$titre = '';
$contenu = '';
$pseudo = '';
$id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>
<form action="liste_news.php" method="post">
<p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
<p>
Pseudo : <input type="text" size="30" name="pseudo" value="<?php echo $pseudo; ?>" /><br />
</p>
<center>
<form name="news">
<input type="button" value="b" style="width:50px;font-weight:bold" onclick="storeCaret('b')">
<input type="button" value="i" style="width:50px;font-style:italic" onclick="storeCaret('i')">
<input type="button" value="u" style="width:50px;text-decoration:underline" onclick="storeCaret('u')">
<input type="button" value="mail"style="width:50px" onclick="storeCaret('mail=noter_ladresse_ici')">
<input type="button" value="centrer"style="width:50px" onclick="storeCaret('center')">
<input type="button" value="justifié"style="width:50px" onclick="storeCaret('justify')">
<input type="button" value="taille"style="width:50px" onclick="storeCaret('size=noter_la_taille_ici')">
<input type="button" value="droite"style="width:50px" onclick="storeCaret('right')">
<input type="button" value="color"style="width:50px" onclick="storeCaret('color=nom_de_la_couleur')">
<input type="button" value="lien"style="width:50px" onclick="storeCaret('url=noter_lurl_ici')">
<input type="button" value="img"style="width:50px" onclick="storeCaret('img')"><br>
<p> Contenu :<br />
<textarea name="contenu" id="contenu" cols="50" rows="10" wrap="virtual">
<?php echo $contenu; ?>
</textarea><br />
</p>
</form>
</center>
<center><input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
<input type="submit" value="Envoyer" /></center>
</p>
</form>
</body>
</html>
et enfin bbs.js :
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
var regexp = new RegExp("[\r]","gi");
function storeCaret(selec)
{
if (isMozilla)
{
// Si on est sur Mozilla
oField = document.forms['news'].elements['contenu'];
objectValue = oField.value;
deb = oField.selectionStart;
fin = oField.selectionEnd;
objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );
// alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
oField.selectionStart = strlen(objectValueDeb);
oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
oField.focus();
oField.setSelectionRange(
objectValueDeb.length + selec.length + 2,
objectValueDeb.length + selec.length + 2);
}
else
{
// Si on est sur IE
oField = document.forms['news'].elements['contenu'];
var str = document.selection.createRange().text;
if (str.length>0)
{
// Si on a selectionné du texte
var sel = document.selection.createRange();
sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
sel.collapse();
sel.select();
}
else
{
oField.focus(oField.caretPos);
// alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();
var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['contenu'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();
}
}
}
Ligne 44 de rediger_news.php ... Tun'a pas bien recopié le code d'origine et oublié le name="news" dont javascript a besoin. Du coup, ça ne peut pas fonctionner.
javascript et le BBcode dans les news...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.