Newsgroup: it.lavoro.professioni.webmaster
Titolo: scripting

senza entrare nello specifico di quale linguaggio utilizzare (io uso
php-mysql) vorrei sapere:
Vi siete mai trovati nella situazione di dover suddividere  un testo (di tot
caratteri) in piu' pagine .."dinamicamente" ?
Il problema è naturalmente che il testo in questione (da prelevare da un db)
puo' contenere un numero variabile di "a capo" e deve essere suddiviso in
piu' pagine qualora:
Con un particolare carattere ad una fissata grandezza superi un determinato
numero di righe in una tabella (di una determinata grandezza).
Mi rendo conto che è una cosa difficile ma volevo sapere se avete qualche
"input" anche solo concettuale su come affrontare la questione.
ciao
P.S. a chi mi da una mano regalero' il codice php di quello che mi verrà
fuori..  ciao


Suddividere il testo dal lato server non è molto
affidabile perchè il browser manda a capo anche
se non c'è un ritorno carrello quando arriva al
margine della tabella; quindi in questo caso
dovresti formattare ad una larghezza fissa il testo
prima di mandarlo al client e contare i complessivi
ritorno carrello; in base a questi e a varie prove
di visualizzazione (usando fogli di stile necessariamente)
suddividere il testo in piu pagine da mandare
al client una alla volta.
Forse una soluzione javascript: metti tutto il
testo in un array javascript e con qualche funzione
javascript scrivi un carattere alla volta finche la
posizione dell'ultimo carattere visualizzato
arriva al limite desiderato; lo script poi dovrebbe
creare un link alla pagina successiva (che sarebbe
lo stesso file) passando come parametro
?ultimocarattere=xxx
lo stesso script chiaramente deve inziare a
scrivere il contenuto dell'array a partire dal
carattere indicato dal parametro passato.
Hth,
rob


 arriva al limite desiderato...
Come conto una "andata a capo" (non \n nuovalinea) ?
ciao

 ritorni a capo)
no, senza medie, puoi fare qualcosa di piu
preciso lato server (anche se una soluzione lato
client è sicuramente piu precisa): cioè aggiungere
in db oltre ai ritorno carrello 'naturali' del
tuo testo, un ritorno carrello ogni es. 90 caratteri
 (formattazione a larghezza fissa) e poi mandare
al client es. 50 linee per pagina, individuate contanto
tutti i ritorni carrello (naturali e forzati).
ciao


Allora.. se io faccio tutto lato server (che con java mi incarto subito)
posso fare una funzione che prendendo il testo ne stampi 50 linee da 90
caratteri, ovviamente considerando i ritorni a capo "naturali" e quelli
"forzati" (superato il 90esimo carattere)...
(credo sia piu' giusto lasciare immacolato il testo nel db)
Mi quadra molto meglio tutto.
Pero' una domanda ancora, ho "trovato"  il tag <pre>  che dovrebbe stare per
preformatted text, ce ne sono altri di questo tipo?
Usando il <pre> ho visto che sembra non far differenza usare <br>  o  il
carriage return nel documento html  o ci sono differenze?
Grazie rob
plinskin

 plinskin

Ho fatto qualcosa di molto buono ma naturalmente adesso mi scontro con un
grossissimo problema:
la sillabazione e le regole per "andare a capo" correttamente (dovendo
spezzare una parola).
Non posso credere che questo problema non sia stato affrontato da
qualcun'altro.. magari anche in un contesto diverso dal web....
Deve esserci del materiale online, delle funzioni in un qualsiasi altro
linguaggio da cui prendere spunto.
ciao

 linguaggio da cui prendere spunto.
Beh, il Php ha una funzioncina che si chiama explode.
$separate = explode($separatore, $stringa_da_separare);
In $separate, ti ritrovi un array con tutte la parole separate dal carattere
$separatore:
es.
$separatore = "";
$separate = explode($separatore, $stringa_da_separare);
Poi vai a leggere le parole con $separate[$i]
Es. per le prime 90 parole:
$i = 0;
while($i < 90){
 echo $separate[$i];
 ++$i;
}
Ciao, fammi sapere se va bene
Chris


per la cronaca anche asp-vbscript:
Split(espressione[, delimitatore[, conteggio[, confronto]]])
ciao
rob
--------------------------------------
http://it.domaindlx.com/aspforum
-------------------------------------