Partage
  • Partager sur Facebook
  • Partager sur Twitter

BBcode

Sujet résolu
    14 janvier 2006 à 11:22:21

    Bonjour à tous et à toutes,
    j'aimerais créer un BBcode pour mon site mais je ne connais pas le javascript...
    J'ai été voir le tuto pour le BBcode....
    je pense avoir fait tout ce qu'il faut mais ça ne marche pas...
    il y a donc une erreur
    voici mon code:
    <script language="Javascript">
    function bbcode(code)
    {
    window.document.formulaire.contenu.value += '' + code + '';
    }
    </script>
    <p><a href='javascript:bbcode(\"[b][/b]\")'><img src="images/icones/gras.gif"/></a>
    <a href='javascript:bbcode(\"[i][/i]\")'><img src="images/icones/italique.gif"/></a>
    <a href='javascript:bbcode(\"[u][/u]\")'><img src="images/icones/souligne.gif"/></a>
    <a href='javascript:bbcode(\"[url][/url]\")'><img src="images/icones/lien.gif"/></a>
    <a href='javascript:bbcode(\"[img][/img]\")'><img src="images/icones/image.gif"/></a></p>
    <form action="liste_actu_news.php" method="post" name="formulaire">
    <p>Titre : <input type="text" size="30" name="titre" value="<? echo $titre; ?>" /></p>

    <p>
        Contenu :<br />
        <textarea name="contenu" cols="50" rows="10">
        <? echo $contenu; ?>
        </textarea><br />
       
        <input type="hidden" name="id_news" value="<? echo $id_news; ?>" />
        <input type="submit" value="Envoyer" />
    </p>
    </form>

    Si quelqu'un a une solution je prend ! :-°
    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      14 janvier 2006 à 11:46:38

      Citation : Maxime2218

      a href='javascript:bbcode(\"[b][/b]\")'><img src="images/icones/gras.gif"/></a>



      Normalement si tu remplace par ce code là ca marche:

      <a href="javascript:bbcode('[b][/b]')"><img src="images/icones/gras.gif"/></a>
      • Partager sur Facebook
      • Partager sur Twitter
        15 janvier 2006 à 0:16:54

        Ok, il faut que tu mettes les boutons dans le formulaire à l'intérieur des balises <form>. Tiens nous au courant.
        • Partager sur Facebook
        • Partager sur Twitter
          15 janvier 2006 à 8:22:09

          Pareil :'(
          En fait l'image est bien entourée donc le lien existe mais ça marche pas...
          donc je vais donner mon code complet (on sait jamais perso je vois pas d'erreurs...) C'est un script de news... J'ai deux pages en admin et une page qui affiche les news.
          liste_actu_news.php:
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
              <head>
                  <title>Liste des news</title>
                  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                  <style type="text/css">
                  h2, th, td
                  {
                      text-align:center;
                  }
                  table
                  {
                      border-collapse:collapse;
                      border:2px solid black;
                      margin:auto;
                  }
                  th, td
                  {
                      border:1px solid black;
                  }
                  </style>
              </head>
             
              <body>


          <h2><a href="rediger_actu_news.php">Ajouter une news</a></h2>

          <?
          mysql_connect("localhost", "infonet", "mdp");
          mysql_select_db("infonet_1");

          //-----------------------------------------------------
          // Vérification 1 : est-ce qu'on veut poster une news ?
          //-----------------------------------------------------

          if (isset($_POST['titre']) AND isset($_POST['contenu']))
          {
              $titre = addslashes($_POST['titre']);
              $contenu = addslashes($_POST['contenu']);
              // On vérifie si c'est une modification de news ou pas
              if ($_POST['id_news'] == 0)
              {
                  // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
                  mysql_query("INSERT INTO news_actu VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "')");
              }
              else
              {
                  // C'est une modification, on met juste à jour le titre et le contenu
                  mysql_query("UPDATE news_actu SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id=" . $_POST['id_news']);
              }
          }


          //--------------------------------------------------------
          // Vérification 2 : est-ce qu'on veut supprimer une news ?
          //--------------------------------------------------------

          if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news
          {
              // Alors on supprime la news correspondante
              mysql_query('DELETE FROM news_actu WHERE id=' . $_GET['supprimer_news']);
          }
          ?>

          <table><tr>
          <th>Modifier</th>
          <th>Supprimer</th>
          <th>Titre</th>
          <th>Date</th>
          </tr>

          <?
          $retour = mysql_query('SELECT * FROM news_actu ORDER BY id DESC');
          while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
          {
          ?>

          <tr>
          <td><? echo '<a href="rediger_actu_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
          <td><? echo '<a href="liste_actu_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
          <td><? echo stripslashes($donnees['titre']); ?></td>
          <td><? echo date('d/m/Y', $donnees['timestamp']); ?></td>
          </tr>

          <?
          } // Fin de la boucle qui liste les news
          ?>
          </table>

          </body>
          </html>

          rediger_actu_news.php:
          <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, p
                  {
                      text-align:center;
                  }
                  </style>
              </head>
             
              <body>

          <h3><a href="liste_actu_news.php">Retour à la liste des news</a></h3>

          <?
          mysql_connect("localhost", "infonet", "mdp");
          mysql_select_db("infonet_1");

          if (isset($_GET['modifier_news'])) // Si on demande de modifier une news
          {
              // On récupère les infos de la correspondante
              $retour = mysql_query('SELECT * FROM news_actu WHERE id=' . $_GET['modifier_news']);
              $donnees = mysql_fetch_array($retour);
             
              // On place le titre et le contenu dans des variables simples
              $titre = $donnees['titre'];
              $contenu = $donnees['contenu'];
              $id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
                 
                  $contenu = stripslashes($contenu);
          }
          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 = '';
              $id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
          }
          ?>
          <script language="Javascript">
          function bbcode(code)
          {
          window.document.formulaire.contenu.value += '' + code + '';
          }
          </script>
          <form action="liste_actu_news.php" method="post" name="formulaire">
          <p><a href='javascript:bbcode([b][/b])'><img src="images/icones/gras.gif"/></a>
          <a href='javascript:bbcode([i][/i])'><img src="images/icones/italique.gif"/></a>
          <a href='javascript:bbcode([u][/u])'><img src="images/icones/souligne.gif"/></a>
          <a href='javascript:bbcode([url][/url])'><img src="images/icones/lien.gif"/></a>
          <a href='javascript:bbcode([img][/img])'><img src="images/icones/image.gif"/></a></p>
          <p>Titre : <input type="text" size="30" name="titre" value="<? echo $titre; ?>" /></p>

          <p>
              Contenu :<br />
              <textarea name="contenu" cols="50" rows="10">
              <? echo $contenu; ?>
              </textarea><br />
             
              <input type="hidden" name="id_news" value="<? echo $id_news; ?>" />
              <input type="submit" value="Envoyer" />
          </p>
          </form>

          </body>
          </html>

          Voilà donc si vous avez une explication (logique ou non ^^ ) j'écoute je lit
          merci quand même d'avoir répondu :)
          • Partager sur Facebook
          • Partager sur Twitter
            15 janvier 2006 à 10:56:09

            Salut,

            ça :

            <script type="text/javascript">
            function bbcode(code)
            {
            window.document.formulaire.contenu.value += '' + code + '';
            }
            </script>


            C'est la fonction... Mets la entre les balises <head> et </head> de ta page.

            @+

            PS : j'ai fait une ptite modif pour que ce soit valide Xhtml.
            • Partager sur Facebook
            • Partager sur Twitter
              15 janvier 2006 à 11:06:29

              Désolé mais le problème ne viens pas encore de là :'(
              encore merci pour vos réponses :)
              • Partager sur Facebook
              • Partager sur Twitter
                15 janvier 2006 à 11:11:53

                Bon, je vais te donner mon javascript, + mon php; (de mon livre d'or)

                function bbcode(bbdebut, bbfin)
                {
                var input = window.document.formulaire.textarea;
                input.focus();
                /* pour IE (toujous un cas appar lui ;) )*/
                if(typeof document.selection != 'undefined')
                {
                var range = document.selection.createRange();
                var insText = range.text;
                range.text = bbdebut + insText + bbfin;
                range = document.selection.createRange();
                if (insText.length == 0)
                {
                range.move('character', -bbfin.length);
                }
                else
                {
                range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
                }
                range.select();
                }
                /* pour les navigateurs plus récents que IE comme Firefox... */
                else if(typeof input.selectionStart != 'undefined')
                {
                var start = input.selectionStart;
                var end = input.selectionEnd;
                var insText = input.value.substring(start, end);
                input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
                var pos;
                if (insText.length == 0)
                {
                pos = start + bbdebut.length;
                }
                else
                {
                pos = start + bbdebut.length + insText.length + bbfin.length;
                }
                input.selectionStart = pos;
                input.selectionEnd = pos;
                }
                /* pour les autres navigateurs comme Netscape... */
                else
                {
                var pos;
                var re = new RegExp('^[0-9]{0,3}$');
                while(!re.test(pos))
                {
                pos = prompt("insertion (0.." + input.value.length + "):", "0");
                }
                if(pos > input.value.length)
                {
                pos = input.value.length;
                }
                var insText = prompt("Veuillez taper le texte");
                input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
                }
                }
                function smilies(img)
                {
                window.document.formulaire.textarea.value += '' + img + '';
                }


                et mnt le php:

                if (isset($_POST['pseudo']) AND isset($_POST['message']))
                {
                   
                    $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
                       
                    $message = htmlentities($_POST['message'], ENT_QUOTES); // 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 />
                    $message = preg_replace('`\[url=](.+?)\](.+?)\[\/url\]`', '<a href="$1">$2</a>', $message);
                    $message = preg_replace('`\[url\](.+?)\[\/url\]`', '<a href="$1">$1</a>', $message);
                        $message = preg_replace('!\[gras\](.+)\[/gras\]!isU', '<strong>$1</strong>', $message);
                        $message = preg_replace('!\[italique\](.+)\[/italique\]!isU', '<span class="italique">$1</span>', $message);
                        $message = preg_replace('!\[image\](.+)\[/images\]!isU', '<img src"$1">', $message);
                        $message = preg_replace('!\:)\(.+)/!isU', '<img src"http://www.siteduzero.com/Templates/images/smilies/smile.png">', $message);
                    // On peut enfin enregistrer :o)
                    mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
                }


                et enfin le formulaire: (jarrive pas à le classer :p )

                <form method="post" action="livreor.php" NAME="formulaire">

                <!-- on créer la case à cocher pour un prévisualisation automatique -->
                <br /><p>Mon site vous plaît ? Laissez-moi un message !</p>

                <p>
                Pseudo : <input name="pseudo" /><br />
                Message :<br />
                <input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('<strong>', '</strong>');return(false)" />
                <input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[italic]', '[/italic]');return(false)" />
                <input type="button" id="image" name="image" value="Image" onClick="javascript:bbcode('[image]', '[/image]');return(false)" />
                <input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url=]', '[/url]');return(false)" />
                <br />
                <p><textarea cols=35 rows=10 id="textarea" name="message"></textarea></p>
                <p><img src="http://siteduzero.com/Templates/images/smilies/smile.png" title="" alt="" onClick="javascript:smilies(':)');return(false)" /></p>
                <input type="submit" value="Envoyer" />
                </form>


                et le résultat estici
                • Partager sur Facebook
                • Partager sur Twitter
                  15 janvier 2006 à 11:16:24

                  Merci :D je vais tester...
                  ton livre d'or marche pas :euh:
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 janvier 2006 à 11:53:36

                    Hum, c'est bizarre.
                    En fait, tu ve juste pouvoir insérer tes smilies quand on klik dessus, c'est ca?
                    mon système de news:

                    function bbcode(bbdebut, bbfin)
                    {
                    var input = window.document.contenu.textarea;
                    input.focus();
                    /* pour IE (toujous un cas appar lui ;) )*/
                    if(typeof document.selection != 'undefined')
                    {
                    var range = document.selection.createRange();
                    var insText = range.text;
                    range.text = bbdebut + insText + bbfin;
                    range = document.selection.createRange();
                    if (insText.length == 0)
                    {
                    range.move('character', -bbfin.length);
                    }
                    else
                    {
                    range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
                    }
                    range.select();
                    }
                    /* pour les navigateurs plus récents que IE comme Firefox... */
                    else if(typeof input.selectionStart != 'undefined')
                    {
                    var start = input.selectionStart;
                    var end = input.selectionEnd;
                    var insText = input.value.substring(start, end);
                    input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
                    var pos;
                    if (insText.length == 0)
                    {
                    pos = start + bbdebut.length;
                    }
                    else
                    {
                    pos = start + bbdebut.length + insText.length + bbfin.length;
                    }
                    input.selectionStart = pos;
                    input.selectionEnd = pos;
                    }
                    /* pour les autres navigateurs comme Netscape... */
                    else
                    {
                    var pos;
                    var re = new RegExp('^[0-9]{0,3}$');
                    while(!re.test(pos))
                    {
                    pos = prompt("insertion (0.." + input.value.length + "):", "0");
                    }
                    if(pos > input.value.length)
                    {
                    pos = input.value.length;
                    }
                    var insText = prompt("Veuillez taper le texte");
                    input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
                    }
                    }
                    function smilies(img)
                    {
                    window.document.contenu.textarea.value += '' + img + '';
                    }


                    <?php
                    mysql_connect("localhost", "gabyrel", "mdp");
                    mysql_select_db("BdD");

                    if (isset($_GET['modifier_news']))  // Si on demande de modifier une news
                    {
                            // On récupère les infos de la correspondante
                            $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
                            $titre = $donnees['titre'];
                            $contenu = $donnees['contenu'];
                            $pseudo = $_POST['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
                    }
                    ?>

                    formulaire des news;

                    <form action="liste_news.php" method="post" name="contenu">
                    <p>Pseudo : <input type="text" size="35" name="pseudo" value="<?php echo $donnees['pseudo']; ?>" /> </p>
                    <p>Titre : <input type="text" size="355" name="titre" value="<?php echo $titre; ?>" /></p>

                    <p> <input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('<strong>', '</strong>');return(false)" />
                    <input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[italic]', '[/italic]');return(false)" />
                    <input type="button" id="image" name="image" value="Image" onClick="javascript:bbcode('[image]', '[/image]');return(false)" />
                    <input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url=]', '[/url]');return(false)" />
                    <input type="button" id="size" name="taille d'écriture" value="Taille" onClick="javascript:bbcode('[taille=]', '[/taille]');return(false)" />
                    <br />
                    Contenu :<br />
                    <textarea name="contenu" id="textarea" cols="50" rows="10">
                    <?php echo stripslashes($contenu); ?>
                    </textarea><br />
                    <img src="http://www.freeheberge.com/runcms/images/smilies/icon_biggrin.gif" onClick="javascript:smilies(':D');return(false)" />
                    <img src="http://www.freeheberge.com/runcms/images/smilies/icon_smile.gif" onClick="javascript:smilies(':)');return(false)" />
                    <br />
                    <input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
                    <input type="submit" value="Envoyer" />
                    </p>

                    comment je fais pour afficher sur index.php:

                    <?php
                    mysql_connect("localhost", "gabyrel", "mdp");
                    mysql_select_db("BdD");

                    // On récupère les 5 dernières news
                    $retour = mysql_query('SELECT * FROM news WHERE valide = "1" ORDER BY id DESC LIMIT 0, 5');
                    while ($donnees = mysql_fetch_array($retour))
                    {
                    ?>
                    <span class="elementcorps"><h3>
                    <?php echo $donnees['titre']; ?> <br />

                    </h3></span>
                    <p align="left"><span class="tinoir">Ecrit par <?php echo $donnees['pseudo'] ?> le <?php echo date('d/m/Y \à H\hi', $donnees['timestamp']); ?></span></p>
                    <p>
                    <?php
                    $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES);

                    $message = htmlentities($_POST['message'], ENT_QUOTES);
                    $message = nl2br($message);

                    $contenu = nl2br(stripslashes($donnees['contenu']));
                    $contenu = nl2br($contenu);
                    //les [gras] etc...
                    $contenu = preg_replace('`\[url\](.+?)\[\/url\]`', '<a href="$1">$1</a>', $contenu);
                    $contenu = preg_replace('!\[gras\](.+)\[\/gras\]!isU', '<strong>$1</strong>', $contenu);
                    $contenu = preg_replace('!\[italic\](.+)\[\/italic\]!isU', '<span class="italique">$1</span>', $contenu);
                    $contenu = preg_replace('!\[image\](.+)\[\/images\]!isU', '<img src"$1">', $contenu);
                    $contenu = preg_replace('`\[url=(.+?)\](.+?)\[\/url\]`', '<a href="$1">$2</a>', $contenu);
                    $contenu = preg_replace('`\[size=(.+?)\](.+?)\[\/size\]`', '<span style="$1">$2</span>', $contenu);
                    //les smilies
                    $contenu = str_replace(':D', '<img src="http://www.freeheberge.com/runcms/images/smilies/icon_biggrin.gif" alt=":D" />', $contenu);
                    echo $contenu;


                    ?>
                    </p>
                    <hr />

                    <?php
                    } // Fin de la boucle des news
                    ?>
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 janvier 2006 à 12:12:04

                      nan :s les smileys je fait ça avec str_replace mais moi c'est pour le BBcode
                      y a pas moyen de faire plus simple parce que là... voilà quoi
                      edit: je comprend rien !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 janvier 2006 à 14:54:40

                        Tu a une erreur dans la syntaxe de ton bouton :

                        Citation : Maxime2218

                        <a href='javascript:bbcode([b][/b])'><img src="images/icones/gras.gif"/></a>


                        En réalité il faut écrire :

                        <a href="javascript:bbcode('[b][/b]')"><img src="images/icones/gras.gif"/></a>


                        J'espere que ca sera bon cette fois :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 janvier 2006 à 15:05:12

                          MERCI MERCI MERCI !
                          ça marche !!!!
                          ENCORE MERCI ENCORE MERCI ENCORE MERCI !
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            15 janvier 2006 à 15:31:59

                            N'oublies pas de mettre ton topic en résolu.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            BBcode

                            × 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.
                            • Editeur
                            • Markdown