Stampare div uno sotto l'altro come nei forum

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
ciao
il problema è che interpreta \n come fine della riga quindi se lo trova a metà messaggio per php è un fine riga.
prova una cosa
usa solo l'istruzione
PHP:
$messaggioS = nl2br($messaggioS);
questa istruzione trasforma tutti i \n in <br> quindi "dovrebbe" eliminare il problema.
se guardi la parte di script che inserisce (a parte le variabili che sono state modificate) vedi che comunque il \n di fine riga viene inserito
PHP:
$mess_da_ins=$nome."|".$citta."|".$email."|".$messaggio."\n";

relativamente alla modifica del file devi stare attento a non introdurre \n es.
mettiamo che tu voglia correggere la riga

in modo che a video il "come va?" venga su un'altra riga non devi correggere in

facendo così introduci un \n, ma proprio scrivere <br> o <br /> cioè


p.s.
domanda come mai la stringa termina con | ? non dovrebbe esserci

Oggi facendo esperimenti ho notato che se allineo tutto su una riga, non crea nuovi box e in più posso modificare il messaggio,es

Il codice stampa così

Codice:
mercoled&igrave; 14 novembre 2012 - 22:42:56 GMT+0100 (CET)|Oggetto|Messaggio<br />
<br />
<br />ciao|Nome|Citta|mail@bbb.li|::1|<img src="http://mosito.it/ip_flags/flags/noflag.gif" width="16" height="12" alt="noflag" title="noflag" />

Devo metterlo così manualmente per far quadrare tutto

Codice:
mercoled&igrave; 14 novembre 2012 - 22:42:56 GMT+0100 (CET)|Oggetto|Messaggio<br /><br /><br />ciao|Nome|Citta|mail@bbb.li|::1|<img src="http:/miosito.it/ip_flags/flags/noflag.gif" width="16" height="12" alt="noflag" title="noflag" />

Perciò mi pare di capire che c'è qualcosa che manda a capo dal secondo <br /> in poi, questo è il problema
 
Ultima modifica:
ciao
mi è venuto un piccolo dubbio. riposta il codice della parte in cui si forma la riga e poi la inserisce
Questa?

PHP:
$mess_da_ins=$data_localeS."|".$oggettoS."|".$messaggioS."|".$nomeS."|".$cittaS."|".$suoemailS."|".$ip."|".$bandierina."\n";
$mess_ultimo=2;  //numero di messaggi massimo da visualizzare
 
ciao
si (quasi): rispetto a qull'istruzione lnr2br la metti prima o dopo?

la metto prima, ma credo di aver risolto

avevo i codici in questa sequenza

PHP:
$messaggioS = str_replace("\n","",$messaggioS);

$messaggioS = nl2br($messaggioS);

$mess_da_ins=$data_localeS."|".$oggettoS."|".$messaggioS."|".$nomeS."|".$cittaS."|".$suoemailS."|".$ip."|".$bandierina."\n";
$mess_ultimo=2;  //numero di messaggi massimo da visualizzare

ho tolto il primo codice, e questo $messaggioS = nl2br($messaggioS); l'ho sostituito con $messaggioS = str_replace("\n", "<br />", $messaggioS);

ora nel file che archivia stampa i br uno sotto l'altro

testo
<br />
<br />
<br />
testo


l'ho poi modificato il testo e a video rimane con la modifica e non crea più ulteriori box
 
Non so più cosa pensare, ieri come ti dicevo, dopo varie prove, funzionava, i box non sballavano più.

Oggi ho riprovato e sballano di nuovo...non capisco più questi codici

PHP:
...

$messaggioS = str_replace("\n", "<br />", $messaggioS);

$mess_da_ins=$data_localeS."|".$oggettoS."|".$messaggioS."|".$nomeS."|".$cittaS."|".$suoemailS."|".$ip."|".$bandierina."\n";

...
 
Ultima modifica:
ciao
non capisco anch'io, comunque visto che stiamo andando per tentativi, prova a modificare
PHP:
$messaggioS = str_replace("\n", "<br />", $messaggioS);//quata corrisponde a ln2br

$mess_da_ins=$data_localeS."|".$oggettoS."|".$messaggioS."|".$nomeS."|".$cittaS."|".$suoemailS."|".$ip."|".$bandierina."\n";
in (togliendo l'ultimo /n)
PHP:
$messaggioS = str_replace("\n", "<br />", $messaggioS);//quata corrisponde a ln2br

$mess_da_ins=$data_localeS."|".$oggettoS."|".$messaggioS."|".$nomeS."|".$cittaS."|".$suoemailS."|".$ip."|".$bandierina;
 
ciao
non capisco anch'io, comunque visto che stiamo andando per tentativi, prova a modificare
PHP:
$messaggioS = str_replace("\n", "<br />", $messaggioS);//quata corrisponde a ln2br

$mess_da_ins=$data_localeS."|".$oggettoS."|".$messaggioS."|".$nomeS."|".$cittaS."|".$suoemailS."|".$ip."|".$bandierina."\n";
in (togliendo l'ultimo /n)
PHP:
$messaggioS = str_replace("\n", "<br />", $messaggioS);//quata corrisponde a ln2br

$mess_da_ins=$data_localeS."|".$oggettoS."|".$messaggioS."|".$nomeS."|".$cittaS."|".$suoemailS."|".$ip."|".$bandierina;

Non è cambiato...
 
Da quello che ho notato il problema è risolvibile s si riesce a "far stampare in linea" i br nel file che archivia
 
Ultima modifica:
ciao
ricapitoliamo un momento che mi sto perdendo
se scrivi i messaggi ecc... usando il form va tutto bene
se richiamo il file html e lo correggi manualmente va in pallino
è così?
 
ciao
ricapitoliamo un momento che mi sto perdendo
se scrivi i messaggi ecc... usando il form va tutto bene
se richiamo il file html e lo correggi manualmente va in pallino
è così?

Si, a meno che nel file html i br non siano stampati in linea uno dietro l'altro, non uno sotto l'altro.

Se sono stampati in linea allora lo posso modificare come voglio che non va in pallino.
 
ciao
ricapitoliamo un momento che mi sto perdendo
se scrivi i messaggi ecc... usando il form va tutto bene
se richiamo il file html e lo correggi manualmente va in pallino
è così?
Si, ho messo questo e ora nel file che archivia stampa i br in linea, ma non è ancora risolto come pensavo

PHP:
$messaggioS = preg_replace("!\r?\n!", "<br />", $messaggioS);

se scrivo i post a video stampa giusto, se poi torno indietro a correggerne uno lui me lo corregge ma mi cancella i post successivi, vedi questo esempio dopo che ho corretto il primo post, come vedi il secondo è sparito e si è spostata la dato in fondo al primo. Non è che magari è un problema di box?

img01s.jpg
 
ciao
spiegami un cosa, come modifichi i messaggi?
usi uno script o richiami il file, con un editor modifichi, e ricarichi il file?
Apro il file con un editor (Textwrangler) e lo modifico a mano e lo salvo.

Comunque penso di aver risolto davvero, ho fatto molte prove i box (quelli online) non sballano più, mentre in locale, uso MAMP, mi da lo stesso problema come da ultimo post

questa è la nuova sequenza funzionante online

PHP:
$messaggioS = str_replace("\r\n", "<br />", $messaggioS);

...

$mess_da_ins=$data_localeS."|".$oggettoS."|".$messaggioS."|".$nomeS."|".$cittaS."|".$suoemailS."|".$ip."|".$bandierina."\n";

Dammi un tuo parere tecnico, come puoi vedere li ho modificati a mano (ho aggiunto caratteri diversi nelle parole)

Sito
 
ciao
secondo me ci sono troppi br, prova

PHP:
<?php
//....
$da_sost=array("\r\n", "\r", "\n");//prima sostituisco \r e \n
$messaggioS = str_replace($da_sost, "<br />", $messaggioS);
$da_sost=array("<br><br><br>", "<br><br>", "<br /><br /><br />", "<br /><br  />");//poi i troppi br
$messaggioS = str_replace($da_sost, "<br />", $messaggioS);
//....
?>
 
ciao
secondo me ci sono troppi br, prova

PHP:
<?php
//....
$da_sost=array("\r\n", "\r", "\n");//prima sostituisco \r e \n
$messaggioS = str_replace($da_sost, "<br />", $messaggioS);
$da_sost=array("<br><br><br>", "<br><br>", "<br /><br /><br />", "<br /><br  />");//poi i troppi br
$messaggioS = str_replace($da_sost, "<br />", $messaggioS);
//....
?>
Che codice è questo?
 
ciao
la prima istruzione è la solita, la seconda perchè ho visto, quardando la pagina con "visualizza sorgente", che i messaggigi sono così (es)
ciao<br><br>io sto bene
oppure
ciao<br><br><br>io sto bene
quindi il secondo replace riporta (dovrebbe) il tutto a
ciao<br />io sto bene
eventando che il messaggio abbia righe vuote occupando spazio inutile

edit
ho usato l'array perce se es hai un messaggio tipo
ciao /r/n sto bene /r anzi molto bene
la
PHP:
$messaggioS = str_replace("/r/n", "<br />", $messaggioS);
non ti rimpiazza il /r ma solo /r/n, mettendo l'array li rimpiazza entrambi
 
Ultima modifica:
Adesso comunque funziona, solo online però. I br che tu hai visto sono quelli delle volte che ho premuto il tasto invio

Devo sostituire

PHP:
$messaggioS = str_replace("\r\n", "<br />", $messaggioS);


con questo?

PHP:
$da_sost=array("\r\n", "\r", "\n");//prima sostituisco \r e \n 
$messaggioS = str_replace($da_sost, "<br />", $messaggioS); 
$da_sost=array("<br><br><br>", "<br><br>", "<br /><br /><br />", "<br /><br  />");//poi i troppi br 
$messaggioS = str_replace($da_sost, "<br />", $messaggioS);
 

Discussioni simili