Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182

    [MySql] modificare una textarea

    Ho creato una textarea per un'inserimento news.
    Ho creato di conseguenza una specie di BB-code, per esempio se pigio sul pulsante (da me fatto) [[ B ]] automaticamente nella text area esce fuori il codice [[ B ]] ... [[ /B ]].
    Inserisco a fondo pagina una password per inserire le news e do invio.

    Do questo codice in pasto al method="post" che agisce una pagina save.php.
    Qui il codice viene trasformato da pseudo-BB-CODE in codice HTML tramite:

    if ($pass != $password):
    echo "Password errata";

    elseif (trim($testo) == ""):
    echo "Il campo \"testo\" deve essere riempito!";

    else:
    $testo = str_replace("[[ B ]]", "[b]", $testo);

    Fin qui tutto okay, funziona tutto. Ora per vorrei fare la cosa inversa. Cioè vorrei poter modificare la mia news inserita attraverso la solita textarea. Vorrei quindi che il testo che avevo precedentemente inserito mi compaia nella textarea. E fin qui è semplice perché basta richiamare il database, la tabella e il testo.

    Ma la domanda è: come faccio a far in modo che il testo che mi si visualizza venga trasformato da XHTML a pseudo-BB-CODE?
    Ho provato a mettere l'istruzione trim ma essendo in una situazione diversa non so come ben inserirla. Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Se in un primo passaggio hai trasformato in [b] (sarebbe meglio [b] ) i [[B]] dovresti ora fare il procedimento inverso con un str_replace no?

    Ciao.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    se la cosa fosse stata così banale non avrei postato
    Il fatto è che non so come inserirlo..
    La mia textarea (della pagina di modifica) è quella seguente. Come faccio a far avvenire la trasformazione da bb-code a html all'interno della textarea appena carico la pagina? C'è bisogno di un passaggio intermedio? Se sì, quale?

    <textarea cols="60" rows="20" name="testo">
    <?
    include("config.inc.php");
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query = "SELECT testo FROM news";

    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);

    echo "$row[testo]";

    mysql_close($db);
    ?>
    </textarea>

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    up

  5. #5
    L'operazione inversa non funziona? Nel senso, invece di

    echo "$row[testo]";

    dai in output nella textarea:

    codice:
    echo str_replace("[b]", "[[ B ]]", $row[testo]);

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    ora funziona però se metto ad esempio:

    codice:
    echo str_replace("", "[[ B ]]", $row[testo]);
    echo str_replace("", "[[ /B ]]", $row[testo]);
    mi compare 2 volte il testo: la prima volta sostituendo [[ B ]] ma lasciando [/b] e la seconda volta sostituendo [[/ B ]] ma lasciando [b].

    Probabilmente è dovuto al fatto c'è due volte $row[testo], ma se non la metto non avviene la sostituzione del testo.. e allora come posso mettere?

  7. #7
    codice:
    $testo = $row[testo];
    $testo = str_replace("", "[[ B ]]", $testo);
    $testo = str_replace("", "[[ /B ]]", $testo);
    
    // ... e puoi aggiungere quante sostituzioni vuoi ...
    
    echo $testo;

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.