Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    inserimento variabile PHP in textarea (tramite bottone)

    Ciao a tutti, il mio problema come dice il titolo è di inserire un testo che ho in una variabile PHP "$testo" in una textarea premendo un bottone.

    il problema è che questo $testo lo recupero dal database, che a sua volta è stato inserito da una textarea, insomma:
    - inserisco un testo in una textarea
    - lo salvo nel database sql
    - in un'altra pagina ripesco la riga del database con questo testo
    - lo salvo in una variabile $testo con tanto di nl2br in modo tale che viene visualizzata la formattazione( quindi $testo=nl2br($row['testo']); )
    - tramite bottone devo riuscire ad inserire questo testo in una nuova textarea.

    e l'ho fatto così
    Codice PHP:
    echo "<div class='icona' onClick=\"document.getElementById('idmessaggio').value =' ".$testo." ' ;>"
    se il testo salvato è corto o non va a capo fila tutto liscio, funziona perfettamente, il problema è quando ripesco un testo troppo lungo oppure che va a capo.

    ho provato anche senza nl2br mettendo direttamente $row['testo'] nel value della textarea.


    ringrazio in anticipo per le risposte

    ps. nel codice php trascurate eventuali errori di sintassi, l'ho riscritto al momento per metterlo in questo post dato che nel codice della pagina ho fatto diverse prove ed è un po più incasinato

  2. #2
    Potrebbe essere un problema di apici ' ", nel senso che se nel testo ci sono apici singoli o doppi ti viene chiusa la stringa dell'attributo value e quindi di da problemi.
    Inoltre se è un'area di testo, non devi inserire il testo nell'attributo, perchè la text area non è come l'input che ha come attributo value, ma il testo va inserito tra i tag
    codice:
    <textarea>testo </textarea>
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Originariamente inviato da codencode
    Potrebbe essere un problema di apici ' ", nel senso che se nel testo ci sono apici singoli o doppi ti viene chiusa la stringa dell'attributo value e quindi di da problemi.
    Inoltre se è un'area di testo, non devi inserire il testo nell'attributo, perchè la text area non è come l'input che ha come attributo value, ma il testo va inserito tra i tag
    codice:
    <textarea>testo </textarea>
    non ci sono apici nel testo (almeno nel testo visualizzato, magari nella formattazione la textarea inserisce simboli particolari) ma succede appena provo con un testo che va a capo o troppo lungo (e per troppo lungo intendo qualche centinaio di caratteri non so bene quanti), quello che succede è che non agisce proprio la funzione non escono artefatti o testi sballati.

    per quanto riguarda il value così mi funziona, ma come ho detto solo con testi non troppo lunghi o che non vanno a capo, e non posso metterlo tra le tag perchè il bottone viene premuto dall'utente quindi deve essere modificato il valore a seconda del bottone premuto non al momento della creazione, e per fare questo ho dovuto usare la funzione che ho scritto nel primo post dove va a modificare il valore non ad inserirlo appena creata la pagina

  4. #4
    Io non intendevo che lo dovevi aggiungere quanto stampi la pagina, ma intendevo qualcosa del genere
    codice:
    document.getElementById('area').appendChild(document.createTextNode('tuo testo'));
    però poi ho visto che dovrebbe andar bene anche con il value.

    Facendo delle prove ho constatato che il problema è la mandata a capo, ma non ho avuto abbastanza tempo per trovare eventualmente una soluzione.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  5. #5
    Originariamente inviato da codencode
    Io non intendevo che lo dovevi aggiungere quanto stampi la pagina, ma intendevo qualcosa del genere
    codice:
    document.getElementById('area').appendChild(document.createTextNode('tuo testo'));
    però poi ho visto che dovrebbe andar bene anche con il value.

    Facendo delle prove ho constatato che il problema è la mandata a capo, ma non ho avuto abbastanza tempo per trovare eventualmente una soluzione.
    ah ho capito, ho provato ugualmente il tuo codice ma fa lo stesso problema, ovvero con un testo che non va a capo lo aggiunge nella textarea mentre con testi che vanno a capo no.

    ma la textarea cosa usa per segnare la formattazione del suo testo? perchè il suo contenuto se viene salvato in una variabile PHP e poi riutilizzata è in grado di mostrare la stessa identica formattazione con il nl2br, però dentro il database (ovviamente senza usare il nl2br ma salvando così com'è la variabile del submit) non ci sono segni di
    o qualsiasi tipo di simbolo, tantomeno se faccio un echo del database sempre senza il nl2br.

    a me sembra più una cosa del tipo riceve testi solo su una riga alla volta perchè è incapace di aggiungere più righe contemporaneamente dato che la textarea da quanto so il formato del contenuto è suddiviso a righe invece di vederlo come testo unico (correggimi se sbaglio)

  6. #6
    Fondamentalmente il problema è questo, supponiamo di avere la variabile php $testo così valorizzata:
    Codice PHP:
    $testo "testo che \nva a capo"
    scrivendo:
    Codice PHP:
    echo "<div class='icona' onClick=\"document.getElementById('idmessaggio').value =' ".$testo." ' ;>"
    quando verrà creato il codice html, risulterà:

    codice:
    <div class='icona' onClick="document.getElementById('idmessaggio').value = "testo che
    va a capo";
    quindi il testo andando a capo da problemi.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  7. #7
    Originariamente inviato da codencode
    Fondamentalmente il problema è questo, supponiamo di avere la variabile php $testo così valorizzata:
    Codice PHP:
    $testo "testo che \nva a capo"
    scrivendo:
    Codice PHP:
    echo "<div class='icona' onClick=\"document.getElementById('idmessaggio').value =' ".$testo." ' ;>"
    quando verrà creato il codice html, risulterà:

    codice:
    <div class='icona' onClick="document.getElementById('idmessaggio').value = "testo che
    va a capo";
    quindi il testo andando a capo da problemi.
    ah capito! quindi php sostanzialmente mostra il testo nel codice quando viene fatto l'echo, eh gia altrimenti i vari codici html non funzionerebbero, hai ragionissimo, ora che ho chiara la situazione magari vedo di fare qualche prova cercando di arginare questo intoppo.

    farò sapere come e se risolvo

  8. #8
    Prova in questo modo
    Codice PHP:
    $testo=str_replace('\n','\n"+"',$testo); 
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  9. #9
    Originariamente inviato da codencode
    Prova in questo modo
    Codice PHP:
    $testo=str_replace('\n','\n"+"',$testo); 
    non ha funzionato, però dopo qualche giorno che ci ho speso ritagli di tempo ho "risolto", nel senso ora funziona con le prove che ho fatto ma non sono sicuro che sia solido e non dia problemi con qualche carattere o serie di caratteri particolari, per ora così funziona:
    Codice PHP:
    $orig = array ( "\\'" "\"" ); // caratteri da sostituire
    $sost = array ( "\'" """ ); // caratteri sostituiti 
    $testoperarea=mysql_real_escape_string($row['testo']); 
    $testoperarea=str_replace($orig,$sost,$testoperarea); 
    Codice PHP:
    <div class='icona cita' onClick="document.getElementById('idmessaggio').value = '<?php echo $testoperarea?>';" ></div>
    in pratica ho visto nel codice di un altra pagina che usavo mysql_real_escape_string per l'sql, allora ho provato a riutilizzarla anche qui, ma poi mi sono accorto che dava problemi con gli apici quindi li ho sostituiti in quel modo e per ora sembra andare.

    spero non escano magagne con varie combinazioni di apici, per ora funziona anche se metto degli slash prima e dopo gli apici e non da problemi.

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.