webForumDet fria alternativet

Radbrytning i textarea

14 svar · 1 815 visningar · startad av emton

emtonMedlem sedan juni 200589 inlägg
#1

Har ett formulär som har en textruta. När detta sen ska visas på sidan så blir allt i en enda lång rad trots att man har tryckt enter flera gånger. Förmodar att man ska använda nl2br men får det inte att funka. Här är koden som hämtar och visar en annons.

$sql = "SELECT * FROM annonser WHERE godkand = 1 AND val = 'saljes' ORDER BY date DESC";
	$sql_result = mysql_query ($sql) or die ("Query error.");
	
	echo "<table>";
	while ($row = mysql_fetch_assoc ($sql_result)) {
			echo "<tr><td id='overskrift'><b>" . $row['overskrift'] . "</b></td></tr>";
			echo "<tr><td>" . $row['annonstext'] . "</td></tr>";
			echo "<tr><td id='pris'>" . "<b>Pris: </b>" . $row['pris'] . "</td></tr>";
			echo "<tr><td>" . $row['genbanksnr'] . "</td></tr>";
			echo "<tr><td>" . $row['fnamn'] . " " . $row['enamn'] .  ", " . $row['ort'] ."</td>";
			echo "<tr><td>" . $row['tele'] . "</td></tr>";
			echo "<tr><td>" . $row['mobil'] . "</td></tr>";
			echo "<tr><td>" . $row['epost'] . "</td></tr>";
			echo "<tr><td>" . $row['websida'] . "</td></tr>";
			echo "<tr><td>" . $row['date'] . "</td></tr>";
			echo "<tr><td id='blank'></td></tr>";
			
			
	}
	echo "</table>";
GunnarDMedlem sedan juni 20014 290 inlägg
#2

Du borde kunna skriva:

echo "<tr><td>" . nl2br($row['annonstext']) . "</td></tr>";

Förutsatt att du inte tagit bort radbrytningen när du skriver in det i databasen.

emtonMedlem sedan juni 200589 inlägg
#3

Precis, helt perfekt! Tack!

emtonMedlem sedan juni 200589 inlägg
#4

GunnarD skrev:

Du borde kunna skriva:

echo "<tr><td>" . nl2br($row['annonstext']) . "</td></tr>";

Förutsatt att du inte tagit bort radbrytningen när du skriver in det i databasen.

Fast det hjäpte inte i mailet....Får inte in nl2br där heller.

mail('mailadressen' , 'Ny annons ' , $annonstext ,'FROM: '.$fnamn.','.$enamn.'');
voigtann1Medlem sedan juni 20019 519 inlägg
#5

Var innehåller variablen $annonstext då?

emtonMedlem sedan juni 200589 inlägg
#6

voigtann1 skrev:

Var innehåller variablen $annonstext då?

Här är det som lägger in i databasen och samtidigt skickar mail om nytt inlägg.

$fnamn = mysql_real_escape_string($_POST['fnamn']);
$enamn = mysql_real_escape_string($_POST['enamn']);
$tele = mysql_real_escape_string($_POST['tele']);
$mobil = mysql_real_escape_string($_POST['mobil']);
$epost = mysql_real_escape_string($_POST['epost']);
$websida = mysql_real_escape_string($_POST['websida']);
$genbanksnr = mysql_real_escape_string($_POST['genbanksnr']);
$val = mysql_real_escape_string($_POST['val']);
$pris = mysql_real_escape_string($_POST['pris']);
$overskrift = mysql_real_escape_string($_POST['overskrift']);
$annonstext = mysql_real_escape_string ($_POST['annonstext']);
$ort = mysql_real_escape_string($_POST['ort']);
$date = mysql_real_escape_string($_POST['date']);
$date = date("Y-m-d"); 

mail('mailadress' , 'Ny annons ' , $annonstext ,'FROM: '.$fnamn.','.$enamn.'');
$sql = "INSERT INTO annonser (fnamn, enamn, tele, mobil, epost, websida, genbanksnr, val, pris, overskrift, annonstext, ort, date) VALUES ('$fnamn','$enamn','$tele','$mobil','$epost','$websida','$genbanksnr','$val','$pris','$overskrift','$annonstext','$ort',NOW())";
voigtann1Medlem sedan juni 20019 519 inlägg
#7

Ja, klart att det inte fungera ;)

du säger ju bara innehållet skall vara $_POST innehållet, där har du ju inte <br> element utan vanliga radbrytningar:

mail('mailadressen' , 'Ny annons ' , nl2br($annonstext) ,'FROM: '.$fnamn.','.$enamn.'');
GunnarDMedlem sedan juni 20014 290 inlägg
#8

Glöm det, svarade fel p.g.a fel info :)

emtonMedlem sedan juni 200589 inlägg
#9

Nja, det blir fortfarande \r\n i stället för radbrytning.

emtonMedlem sedan juni 200589 inlägg
#10

Nu var jag för snabb....Det blir tomt i mailet där annonstexten skulle stå. men det kan väl inte vara row...

emtonMedlem sedan juni 200589 inlägg
#11

voigtann1 skrev:

Ja, klart att det inte fungera ;)

du säger ju bara innehållet skall vara $_POST innehållet, där har du ju inte <br> element utan vanliga radbrytningar:

mail('mailadressen' , 'Ny annons ' , nl2br($annonstext) ,'FROM: '.$fnamn.','.$enamn.'');

Har redan försökt skriva så men det blir fortfarande \r\n i stället för radbrytning då.

@ndersMedlem sedan juni 200032 969 inlägg
#12

skulle tippa på att mysql_real_escape_string kodar om \r\n - prova gå direkt på $_POST.

mail('mailadressen' , 'Ny annons ' , nl2br($_POST['annonstext']) ,'FROM: '.$fnamn.','.$enamn.'');
emtonMedlem sedan juni 200589 inlägg
#13

@nders skrev:

skulle tippa på att mysql_real_escape_string kodar om \r\n - prova gå direkt på $_POST.

mail('mailadressen' , 'Ny annons ' , nl2br($_POST['annonstext']) ,'FROM: '.$fnamn.','.$enamn.'');

Nä, nu då skickar den inget mail alls.

GunnarDMedlem sedan juni 20014 290 inlägg
#14

Stämmer, mysql_real_escape_strin() gör om \n, \r och \l till \\n, \\r och \\l. Det är därför du ser ex. \n istället för radbrytningen.

Finns två lösningar, antingen den som @anders skriver eller så får ersätta alla \\ med \.

emtonMedlem sedan juni 200589 inlägg
#15

Just nu skickas inga mail alls :(. Begriper inte varför. Vad kan man kolla efter? Hittar inget fel i denna kod. Någon annan som gör det?

mail('mailadressen' , 'Ny annons!' , $annonstext ,'FROM: '.$fnamn.'');
134 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)