Bonjours a tous, je ne me suis pas connecté depuis longtemps mais aujourd’hui je suis entrain de finalisé un site ( j'améliore mes module ) et je bloc sur le bbcode de mon livre d'or, plus précisément sur le fonction : preg_replace. Voici mon code : Livreor.php : <?php include('includes/haut.php'); ?> <?php include('includes/menu.php'); ?> <?php include('includes/fonction.php'); ?> <div id="texte"><div id="overflow"> <div class="cadre"><div class="titre">Livre d'or</div><div class="marge_interne"> <div align="center"> <form method="post" action="livreor.php">
Pseudo : <input name="pseudo" value="<?php if(isset($_SESSION['username'])){echo ' '.htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>"/><br />
Message :<br /> <p><center> <input type="button" value="Gras" onclick="insertTag('<gras>','</gras>','textarea');" /> <input type="button" value="Italique" onclick="insertTag('<Italique>','</Italique>','textarea');"/> <input type="button" value="Lien" onclick="insertTag('<Lien>','</Lien>','textarea');"/> <input type="button" value="Image" onclick="insertTag('<Image>','</Image>','textarea');"/> <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="http://users.teledisnet.be/web/mde28256/smiley/smile.gif" alt=":)" onclick="insertTag(':)', '', 'textarea');" /> <img src="http://users.teledisnet.be/web/mde28256/smiley/unsure2.gif" alt=":euh:" onclick="insertTag(':euh:', '', 'textarea');" />
</center> </p> <fieldset><textarea name="message" id="textarea" cols="90" rows="10"></textarea></fieldset> <?php //Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter if(isset($_SESSION['username'])) { //On compte le nombre de nouveaux messages que lutilisateur a $nb_new_pm = mysql_fetch_array(mysql_query('select count(*) as nb_new_pm from pm where ((user1="'.$_SESSION['userid'].'" and user1read="no") or (user2="'.$_SESSION['userid'].'" and user2read="no")) and id2="1"')); //Le nombre de nouveaux messages est stoque dans la variable $nb_new_pm $nb_new_pm = $nb_new_pm['nb_new_pm']; //On affiche les liens ?> <input type="submit" value="Envoyer" /> <input type="reset" name = "Effacer" value = "Effacer"/>
<?php } else { //Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter ?> <b> Vous ne pouvez pas signer le livre d'or si vous nete pas connécter </b> <?php } ?> </form> <p class="pages"> <?php // --------------- Étape 1 ----------------- // Si un message est envoyé, on l'enregistre // ----------------------------------------- if (isset($_POST['pseudo']) AND isset($_POST['message'])) { $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité $message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br /> // On peut enfin enregistrer :o) mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')"); } // --------------- Étape 2 ----------------- // On écrit les liens vers chacune des pages // ----------------------------------------- // On met dans une variable le nombre de messages qu'on veut par page $nombreDeMessagesParPage = 10; // Essayez de changer ce nombre pour voir :o) // On récupère le nombre total de messages $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor'); $donnees = mysql_fetch_array($retour); $totalDesMessages = $donnees['nb_messages']; // On calcule le nombre de pages à créer $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); // Puis on fait une boucle pour écrire les liens vers chacune des pages echo 'Page : '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> <?php // --------------- Étape 3 --------------- // Maintenant, on va afficher les messages // --------------------------------------- if (isset($_GET['page'])) { $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4) } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); while ($donnees = mysql_fetch_array($reponse)) { $message = parsage($donnees['message']); echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $message . '</p>'; }
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o) ?> </div> </div></div> </div></div>
<?php include('includes/bas.php'); ?>
fonction.php <?php function parsage($message) { $message = preg_replace("#<gras>(.+)</gras>#isU", "<strong>$1</strong>", $message); $message = preg_replace("#<italique>(.+)</italique>#isU", "<em>$1</em>", $message); // D'autre balise ... return $message; } ?>
Script java : <script> function insertTag(startTag, endTag, textareaId, tagType) { var field = document.getElementById(textareaId); var scroll = field.scrollTop; field.focus(); /* === Partie 1 : on récupère la sélection === */ 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); } /* === Partie 2 : on analyse le tagType === */ if (tagType) { switch (tagType) { case "lien": endTag = "</lien>"; if (currentSelection) { // Il y a une sélection if (currentSelection.indexOf("http://") == 0 || currentSelection.indexOf("https://") == 0 || currentSelection.indexOf("ftp://") == 0 || currentSelection.indexOf("www.") == 0) { // La sélection semble être un lien. On demande alors le libellé var label = prompt("Quel est le libellé du lien ?") || ""; startTag = "<lien url="" + currentSelection + "">"; currentSelection = label; } else { // La sélection n'est pas un lien, donc c'est le libelle. On demande alors l'URL var URL = prompt("Quelle est l'url ?"); startTag = "<lien url="" + URL + "">"; } } else { // Pas de sélection, donc on demande l'URL et le libelle var URL = prompt("Quelle est l'url ?") || ""; var label = prompt("Quel est le libellé du lien ?") || ""; startTag = "<lien url="" + URL + "">"; currentSelection = label; } break;
} } /* === Partie 3 : on insère le tout === */ if (window.ActiveXObject) { textRange.text = startTag + currentSelection + endTag; textRange.moveStart("character", -endTag.length - currentSelection.length); textRange.moveEnd("character", -endTag.length); textRange.select(); } else { field.value = startSelection + startTag + currentSelection + endTag + endSelection; field.focus(); field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length); }
field.scrollTop = scroll; }
</script>
Les balise s'affiche dans le message mais se mette pas en gras par exemple ... pouriez vous m'aidé s'il vous plait ? merci d'avence |