Partage
  • Partager sur Facebook
  • Partager sur Twitter

BBcode

    26 novembre 2011 à 14:11:06

    Bonjour a tous, je viens de rajouter le bbcode sur mon site, mais quand je clique dessus (bbcode) rien ne s'affiche dans la zone de texte :
    <?php session_start() ; ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
       <head>
           <title>Participer au site</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	   <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['Intro'].elements['Intro'];
    
    		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['Intro'].elements['Intro'];
    		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['Intro'].elements['Intro'], pos);
    			var r = oField.createTextRange();
    			r.moveStart('character', pos);
    			r.collapse();
    			r.select();
    
    		}
    	}
    }
    
    </script>
       </head>
       <body>
       <?php
       if (empty($_SESSION['ID']) and empty($_SESSION['pseudo']))
       {
       ?>
       <p>Vous devez etre connecte pour acceder a cette partie.</p>
       <?php
       }
       
    else
    {
    try
    	{
    		$bdd = new PDO('mysql:host=localhost;dbname=Sitedelintello', 'root', '');
    		$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    		$reponse = $bdd->prepare('SELECT ID, Nom, Intro, Contenu, Conclusion, Commentaire_Validateur FROM mini_tutos WHERE ID = :ID');
    		$reponse->execute(array( 'ID' => $_GET['id']));
    		while ($donnees = $reponse->fetch())
    		{
    		$_SESSION['ID_tuto'] = $donnees['ID'];
    		
    		?>
    		<p><form action="Enregistre_minituto_M.php" method="post">
    
    Titre : <input type="text" name="Titre" value="<?php echo $donnees['Nom'];?>"><br />
    <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="quote"style="width:50px" onclick="storeCaret('quote')">
    <input type="button" value="code"style="width:50px" onclick="storeCaret('code')">
    <input type="button" value="url"style="width:50px" onclick="storeCaret('url')">
    <input type="button" value="img"style="width:50px" onclick="storeCaret('img')"><br>
    Introduction : <textarea rows="10" cols="30" name="Intro" id="Intro" wrap="virtual"><?php echo $donnees['Intro']; ?></textarea><br />
    Contenu : <textarea rows="10" cols="60" name="Contenu"><?php echo $donnees['Contenu']; ?></textarea><br />
    Conclusion : <textarea rows="10" cols="30" name="Conclusion"><?php echo $donnees['Conclusion']; ?></textarea><br />
    <input type="submit" value="Enregistrer"></br>
    Message pour le validateur : <input type="text" name="Commentaire_pr_valido" value="<?php echo $donnees['Commentaire_Validateur']; ?>">
    </form></p>
    <input type="submit" value="Proposer aux validateurs"></br>
    
    <a href="Pre_redac_minituto.php">Retour</a>
    <?php
    }
    
    	}
    catch(Exception $e)
    	{
    		die('Erreur : '.$e->getMessage());
    	}
    
    }
    ?>
       </body>
    </html>
    


    Autre chose : la, ça fait déjà 137 lignes de codes, plus quand je rajouterai le bbcode sur les autre zones de textes, alors j'aimerais savoir, on peut pas le mettre dans une fonction par exemple (le code en haut et avant la zone de texte)?
    En passant, je ne connais rien au Javascript, donc excusez moi si je dis des bêtises. :-°

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2011 à 14:16:59

      Ton formulaire n'a pas pour name "Intro", contrairement à ce que tu dis à ton code.


      Sinon, un tuto potentiellement plus abouti : Insertion de balises dans une zone de texte
      • Partager sur Facebook
      • Partager sur Twitter
        26 novembre 2011 à 15:16:06

        Ah, je viens de comprendre comme ça marche, merci ! :-)
        Mais la par exemple, ça marche que pour le text-area Intro. Si je veux faire un pour les autres, je dois réécrire tout le code avec un nom de text-area différent? o_O

        Edit : Je voudrais aussi mettre le code javascript dans une page et l'inclure sur la page php, ça se fait comment ça?
        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2011 à 19:25:52

          Oui, si tu ne modifies pas le code actuel, il faudra le dupliquer.

          Si tu suis le tuto, en revanche, je crois que c'est juste un paramètre à changer dans les appels.
          • 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