webForumDet fria alternativet

Radbrytning i textarea

PHP

14 svar · 1 815 visningar · startad av emton

Medlem sedan juni 200589 inlägg
Frågan#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>";
Medlem 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.

Medlem sedan juni 200589 inlägg
#3

Precis, helt perfekt! Tack!

Medlem 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.'');
Medlem sedan juni 20019 519 inlägg
#5

Var innehåller variablen $annonstext då?

Medlem 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())";
Medlem 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.'');
Medlem sedan juni 20014 290 inlägg
#8

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

Medlem sedan juni 200589 inlägg
#9

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

Medlem 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...

Medlem 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å.

Medlem sedan juni 200032 967 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.'');
Medlem 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.

Medlem 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 \.

Medlem 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.'');
260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)