Visualizzazione risultati 1 fino 7 di 7

Discussione: Inserire smile in textarea stile BBCODE

  1. #1
    Guest

    Predefinito Inserire smile in textarea stile BBCODE

    Seguendo varie guide su internet sono riuscito a creare questo script
    http://freegameweb.altervista.org/fo...BCODE/form.php
    Fin ora tutti i tag (grassetto, sottolineato, corsivo quote code ecc ecc ecc...) funzionano, tranne le smile!
    Lo script è strutturato in questa maniera
    bbcode.php
    Codice PHP:
    <?php

    //CODE BY MATTEOIAMMA - WWW.MATTEOIAMMARRONE.COM

    function bbcode($var){

    $search = array(

    '/\[b\](.*?)\[\/b\]/is',

    '/\[i\](.*?)\[\/i\]/is',

    '/\[u\](.*?)\[\/u\]/is',

    '/\[img\](.*?)\[\/img\]/is',

    '/\[url\](.*?)\[\/url\]/is',

    '/\[url\=(.*?)\](.*?)\[\/url\]/is',

    '/\[quote\](.*?)\[\/quote\]/is',

    '/\[youtube\](.*?)\[\/youtube\]/is',

    '/\[code\](.*?)\[\/code\]/is',

    '/\[marquee\](.*?)\[\/marquee\]/is',

    );

    $replace = array(

    '<strong>$1</strong>',

    '<em>$1</em>',

    '<u>$1</u>',

    '<img src="$1" />',

    '<a href="$1">$1</a>',

    '<a href="$1">$2</a>',

    '<div class="forum_quote">$1</div>',

    '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0">

    <param name="movie" value="$3" />

    <param name="quality" value="best" />

    <param name="play" value="true" />

    <embed pluginspage="http://www.macromedia.com/go/getflashplayer" src="$1" type="application/x-shockwave-flash" quality="best" play="true"></embed>

    </object>'
    ,

    '<div class="forum_code">$1</div>',

    '<marquee>$1</marquee>'

    );



    $var = preg_replace ($search, $replace, $var);



    //SISTEMABBCODE



    //SISTEMA SMILE

    $sel_smile = opendir("smiles/");

    while(
    $smile=readdir($sel_smile)){

    $smile_value = str_replace(".gif", "", $smile);
    $var_nw = str_replace($smile_value, "<img src='smiles/$smile'/>", $var);

    }

    // SYSTEMA SMILE

    return $var_nw;

    }

    ?>
    bbcode2.php
    Codice PHP:
    <?php
    function textarea($name, $value, $form){

    ?>

    <center>

    Basic:

    <a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='[b][/b]'">Grassetto</a>



    <a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='[u][/u]'" >Sottolineato</a>



    <a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='[i][/i]'" >Corsivo</a>



    <p></p></center>

    <?php

    echo "

    <textarea name='
    $name' rows='8′ cols='40′ id='$name'>$value</textarea>";

    ?>

    <p></p>

    <a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='[img][/img]'"><b>IMMAGINE</b></a>

    <a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='[url=quiurl]quitesto[/url]'"><b>URL</b></a>

    <a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='[youtube][/youtube]'" >Youtube Video</a>

    <?php

    echo "<p></p>";

    $smile_op = opendir("smiles/");

    while(
    $smile=readdir($smile_op)){
    $smile_value = str_replace(".gif", "", $smile);

    ?>

    <a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='<?php echo $smile_value;?>'"><img src="smiles/<?php echo $smile;?>"/></a>

    <?php

    }
    ?>
    <p></p>

    <div class="code">

    <a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='[code][/code]'" >CODE</a></div>

    <div class="code"><a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='[quote][/quote]'" >QUOTE</a></div>

    <div class="code"><a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='[marquee][/marquee]'" >MARQUEE</a></div>

    <?php

    }
    ?>
    form.php
    Codice PHP:
    <?php
    include("bbcode.php");
    include(
    "bbcode2.php");
    echo
    "<form action='form.php' method='post' name='nomeform'>";
    textarea("prova", "Qui contenuto di default", "nomeform");
    echo
    "<input type='submit' name='send' value='Invia Form'/>";
    echo
    "</form>";
    if (
    $_POST['send']){
    $contenuto_textarea=bbcode($_POST['prova']);
    echo
    "$contenuto_textarea";
    }
    ?>
    Allora...
    Come potete vedere provando il form e selezionando una smile qualsiasi, viene inserito nella textarea il nome della smile...
    Questa è la parte di codice interessata
    Codice PHP:
    <?php

    echo "<p></p>";

    $smile_op = opendir("smiles/");

    while(
    $smile=readdir($smile_op)){
    $smile_value = str_replace(".gif", "", $smile);

    ?>

    <a Onclick="document.<?php echo $form; ?>.<?php echo $name; ?>.value+='<?php echo $smile_value;?>'"><img src="smiles/<?php echo $smile;?>"/></a>
    Il problema si crea inviando i dati del form...
    Infatti, come potete notare, mi viene restituito il nome della gif che avevo inserito nella textarea, e non la gif vera e propria con il suo codeice html (<img src="...)
    Quindi il problema dovrebbe essere qui

    Codice PHP:
    $sel_smile = opendir("smiles/");

    while(
    $smile=readdir($sel_smile)){

    $smile_value = str_replace(".gif", "", $smile);
    $var_nw = str_replace($smile_value, "<img src='smiles/$smile'/>", $var);

    }
    Solo che non riesco a capire dove!
    Qualche anima pia mi può aiutare??

    Grazie a tutti...

  2. #2
    Guest

    Predefinito

    Prova a cambiare le condizioni del while così:
    Codice PHP:
    while($smile=readdir($sel_smile) !== false)
    E inserisci un error_reporting(E_ALL) all'inizio della pagina per vedere qualche altro errore

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da nokiagames Visualizza messaggio
    Prova a cambiare le condizioni del while così:
    Codice PHP:
    while($smile=readdir($sel_smile) !== false)
    E inserisci un error_reporting(E_ALL) all'inizio della pagina per vedere qualche altro errore
    Ho modificato, ma non succede nulla...
    Ho provato anche a inserire error_reporting (E_ALL); all'inizio della pagina form.php (dovrebbe rilevare gli errori degli altri due script dato che vengono inclusi con un include giusto??) e mi da solo Undefined index sulla riga 9

  4. #4
    Guest

    Predefinito

    Allora, prova così:
    Codice PHP:
    $var_nw = "";

    while((
    $smile = readdir($sel_smile)) !== false) {

    $smile_value = str_replace(".gif", "", $smile);
    $var_nw .= str_replace($smile_value, "<img src='smiles/$smile'/>", $var);

    }

  5. #5
    Guest

    Predefinito

    Più o meno funziona...
    Adesso, il messaggio che viene inserito nella textarea viene ripetuto un centinaio di volte, e dopo un po che viene ripetuto, la smile viene visualizzata correttamente...
    Non so se mi sono spiegato bene... mmmm... L'unica e provarlo mi sa...
    http://freegameweb.altervista.org/fo...BCODE/form.php

  6. #6
    Guest

    Predefinito

    Sinceramente (non ho provato in locale il codice) non ho capito il contenuto della variabile $smile (quella usata con readdir())

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da gabryhacker Visualizza messaggio
    Sinceramente (non ho provato in locale il codice) non ho capito il contenuto della variabile $smile (quella usata con readdir())
    Restituisce il nome della smile ed il formato... ad esempio wink.gif

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •