• User Attivo

    Ciao carlitos1982,
    sicuramente hai il contenuto della textarea in una variabile, quindi per prima cosa imposti un numero massimo di caratteri (vedi fino a quanti ne puoi accettare) poi scorri la stringa carattere per carattere fino ad arrivare al punto massimo. Arrivati li metti un bel <br />.
    Ma attenzione non è finita, non puoi tagliare in due le parole perchè se arrivi in mezzo ad una parola te la taglia.
    Quindi personalmente una volta arrivato al punto del limite massimo controllerei (con un ciclo) che quel carattere sia uguale ad uno spazio (con un if) se non è così retrocedi di un carattere e ricontrolli, fino a quando non trovi un spazio così da non tagliare nulla. E' importante retrocedere e non avanzare perchè sennò ti si allarga la stampa invece al massimo così hai una parola in meno ma non fà quell'effetto che descrivi tu. Chiaramente devi controllare dopo il break inserito se c'è una lunghezza di caratteri massima come prima (per la riga successiva) e anche qui eseguire il controllo, quindi ti serve un ciclo dentro l'altro.
    Purtroppo non sò puoi fissare l'area perchè penso poi il testo continui ad andare oltre e non puoi muoverti per leggerlo, quindi prima prova questo. 😄
    Ciao 😉


  • User Attivo

    Ciao,
    Allora il contenuto della textaera è in una variabile si :smile5:
    Questa è la pagina
    [php]
    <?
    include "config.php"; // file di connessione al Db

    $sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
    $query_select= @mysql_query($sql_select) or die (mysql_error());
    ?>
    <table>

    <th colspan="2">Messaggi</th>
    <?

    while($row=mysql_fetch_array($query_select))
    {
    $row['testo'] = str_replace(":-)", "<img src='/faccine/smile.gif'>", $row['testo']);
    $row['testo'] = str_replace(":-+", "<img src='/faccine/faccia.gif'>", $row['testo']);
    echo "<tr><td>".$row['id_user']."</td><td>".$row['testo']."</td><td>".$row['tempo']."</tr>";
    }

    ?>[/PHP]
    Mi dispiace... ma non ho capito come far retrocedere il carattere come dici te..:lipssealed:


  • User Attivo

    Con un puntatore, devi leggerla variabile per variabile...


  • User Attivo

    :bho:
    Mi dispiace ma non ho capito....potresti farmi un esempio per piacere..?:?


  • User Attivo

    Dovrei usare la funzione strlen per contare i caratteri e gli spazi presenti nella variabile è impostare un controllo...cioè un if'?:?


  • User Attivo

    Guarda la funzione sto cercando a farla, è leggermente più complicato di come ti avevo spiegato, ma penso di esserci quasi riuscito, appena ho 10 minuti liberi vedo se riesco a farla completa. 😉


  • User Attivo

    Ok:)


  • User Attivo

    Devo un secondo capire come mettere le condizioni dei for o dei while, poi lo butto giù e se è ok te lo posto! 😄


  • User Attivo

    Ok..nel frattempo provo anche io qualcosa:)


  • User Attivo

    Ho buttato giu questo script, mettigli magari qualche controllo in più per esempio se il testo è nulle e cose varie, però ora come ora funziona, non ridurre troppo il numero di caratteri massimi perchè potrebbe impallarsi, la cosa più importante è che lo devi provare con la lunghezza massima dei caratteri da te voluta e con molti testi per vedere se mantiene tutte le parole.
    [php]
    <?PHP
    //La stringa
    $stringa="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.";

    //Caratteri massimi EFFETTIVI per riga voluti
    $caratteri_riga=40;
    $caratteri_riga--;
    
    //Conto i caratteri della stringa
    $caratteri_totali=strlen($stringa);
    
    //Spazio
    $spazio=" ";
    $cont=0;
    $nuova_stringa="";
    $i=$caratteri_riga;
    while($i<$caratteri_totali)
    {
        if(!strcmp($stringa*,$spazio))//Se si vado a capo
        {
            $nuova_stringa=$nuova_stringa.substr($stringa, $cont, $i-($caratteri_totali))."<br/>";
            
            $cont=$i;
            $i=$i+$caratteri_riga;
            if($i>=$caratteri_totali)
            {
                $i=$i-$caratteri_riga;
                $i=$i-$caratteri_totali+1;
                $nuova_stringa=$nuova_stringa.substr($stringa,$i)."<br/>";
                break;
            }
        }
        else
        {    
            $i--;
        }
    }
    

    echo"Ecco la stampa:<br /><br />$nuova_stringa";

    ?>
    [/php]Spero ti vada bene! 😄

    Ah, la stringa io l'ho passata direttamente, quindi togli questa e chiamala come la tua eheh, prova sennò a sostiuire il testo al mio per vedere se ti va. 😉


  • User Attivo

    Ciao,purtroppo mi manda la pagina in loop:?
    Ho fatto cosi'
    [php]
    <?
    include "config.php"; // file di connessione al Db

    $sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
    $query_select= @mysql_query($sql_select) or die (mysql_error());
    ?>
    <table>

    <th colspan="2">Messaggi</th>
    <?

    while($row=mysql_fetch_array($query_select))
    {
    $row['testo'] = str_replace(":-)", "<img src='/faccine/smile.gif'>", $row['testo']);
    $row['testo'] = str_replace(":-+", "<img src='/faccine/faccia.gif'>", $row['testo']);
    //Qui ho racchiuso la variabile contenente il testo
    $stringa=$row['testo'];
    //Caratteri massimi EFFETTIVI per riga voluti
    $caratteri_riga=18;
    $caratteri_riga--;

    //Conto i caratteri della stringa
    $caratteri_totali=strlen($stringa);
    
    //Spazio
    $spazio=" ";
    $cont=0;
    $nuova_stringa="";
    $i=$caratteri_riga;
    while($i<$caratteri_totali)
    {
        if(!strcmp($stringa*,$spazio))//Se si vado a capo
        {
            $nuova_stringa=$nuova_stringa.substr($stringa, $cont, $i-($caratteri_totali))."<br/>";
            
            $cont=$i;
            $i=$i+$caratteri_riga;
            if($i>=$caratteri_totali)
            {
                $i=$i-$caratteri_riga;
                $i=$i-$caratteri_totali+1;
                $nuova_stringa=$nuova_stringa.substr($stringa,$i)."<br/>";
                break;
            }
        }
        else
        {    
            $i--;
        }
    }
    

    //qui' stampo a video
    echo "<tr><td>".$row['id_user']."</td><td>".$nuova_stringa."</td><td>".$row['tempo']."</tr>";
    }

    ?>
    [/PHP]
    Come mai mi visualizza pagina bianca?:?


  • User Attivo

    Prova un secondo a mettere più caratteri consentiti... Bisogna fare più controlli nella funzione per non farla andare in loop. C'è da perderci un pò di tempo. 😉


  • User Attivo

    Ok...ho messo 48 caratteri...facendo una prova e scrivendo piu' di 48 caratteri per riga mi da questo errore **

    Fatal error**: Maximum execution time of 15 seconds exceeded in /membri/italiawebchat/minichat2.php on line 40
    Messaggi

    Ora va di nuovo in loop..:(
    Cioè...quando nel form su cui scrivo ciò che voglio far visualizzare e i caratteri che inserisco sono superiori a quelli indicata nella variabile $caratteri_riga=18 mi va in loop


  • User Attivo

    Eh allora lo script non va tanto bene, prova a fare una cosa però, riprendi lo script originale qui sopra e inserisci manualmente una stringa come ho fatto io, magari la stessa che ti va in loop e prova.


  • User Attivo

    Ok,secondo te se si imposta un controllo di caratteri da non superare nel form che invia il testo non cambia nulla?


  • User Attivo

    Dopo limiti gli utenti, ti conviene?


  • User Attivo

    Allora ho fatto cosi'...
    [PHP]
    <?
    include "config.php"; // file di connessione al Db

    $sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
    $query_select= @mysql_query($sql_select) or die (mysql_error());

    while($row=mysql_fetch_array($query_select))
    {
    $row['testo'] = str_replace(":-)", "<img src='/faccine/smile.gif'>", $row['testo']);
    $row['testo'] = str_replace(":-+", "<img src='/faccine/faccia.gif'>", $row['testo']);

    $stringa="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the";

    //Caratteri massimi EFFETTIVI per riga voluti
    $caratteri_riga=40;
    $caratteri_riga--;
    
    //Conto i caratteri della stringa
    $caratteri_totali=strlen($stringa);
    
    //Spazio
    $spazio=" ";
    $cont=0;
    $nuova_stringa="";
    $i=$caratteri_riga;
    while($i<$caratteri_totali)
    {
        if(!strcmp($stringa*,$spazio))//Se si vado a capo
        {
            $nuova_stringa=$nuova_stringa.substr($stringa, $cont, $i-($caratteri_totali))."<br/>";
            
            $cont=$i;
            $i=$i+$caratteri_riga;
            if($i>=$caratteri_totali)
            {
                $i=$i-$caratteri_riga;
                $i=$i-$caratteri_totali+1;
                $nuova_stringa=$nuova_stringa.substr($stringa,$i)."<br/>";
                break;
            }
        }
        else
        {    
            $i--;
        }
    }
    

    echo"<table>

    <th colspan="2">Messaggi</th>

    </table>

    </div></td>
    </tr>
    </table>
    </div>
    Ecco la stampa:<br /><br />".$row['id_user']."</td><td>".$nuova_stringa."</td><td>".$row['tempo']."</tr>";

    }
    ?>
    [/PHP]
    Cosi' non va in loop e mi stampa la stringa aggiunta manualmente....però non capisco perchè se la stringa voglio recuperarla tramite database mi va in loop...


  • User Attivo

    Hai provato a prelevare una stringa dal DB e ad inserirla quindi manualmente nella variabile $stringa?


  • ModSenior

    Ciao carlitos1982,

    Ma se scrivi molti caratteri, il browser al primo spazio non lo mostra già a capo? Il problema dovrebbe presentarsi solo per molti caratteri senza che ci sia mai uno spazio.

    Comunque un problema che mi pare non abbiate notato sono le faccine, magari capita che nel mezzo del tag html vi inserisca il <br>.


  • User Attivo

    Ragazzi ho trovato finalmente! 😄
    A parte che se cercavo prima era meglio, però ero convinto che non esistesse, ed invece mentre giravo per qualche funzione da inserire nel forum ecco qui:
    [PHP]
    <?php
    $stringa = "Questa volta deve funzionare. L'ho anche provata.";
    $nuova_stringa = wordwrap($text, 20, "<br />\n");
    echo $nuova_stringa;
    ?>
    [/PHP]
    😄