Avatar billede kellesen Nybegynder
17. august 2007 - 20:08 Der er 27 kommentarer og
1 løsning

der skal være <br/> i indlæg

Hej
Jeg har et debatforum udfra følgende kode... Hvodangør jeg så der kan kommer <br> når bruger trykker enter?

_____________________________________________________

body>

<?php

echo "<table border=\"0\" width=\"496px\" bgcolor=\"#FFFFFF\" >";

echo "<tr>";
echo "<td class=\"debat_spg textborder\">";
echo "aaa <br /><br />";
echo "</td>";
echo "</tr>";

echo "<tr height=\"1px\" bgcolor=\"#7f95a0\" >";
echo "<td>";
echo "</td>";
echo "</tr>";

echo "<tr height=\"10px\" >";
echo "<td>";
echo "</td>";
echo "</tr>";


            include("mysql.php");
            $hent = mysql_query("SELECT * FROM debat ORDER BY debat_id DESC");
            if(mysql_num_rows($hent)) {
            while($vis = mysql_fetch_array($hent)) {       
echo "<tr>";
echo "<td class=\"debat_dato textborder\">";
echo $vis[dato];
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td class=\"debat_titel textborder\" >";
echo $vis[titel];
echo "</td>";
echo "</tr>";

echo "<tr height=\"3px\" >";
echo "<td>";
echo "</td>";
echo "</tr>";


echo "<tr>";
echo "<td class=\"debat_kommentar textborder\" >";
echo $vis[kommentar];
echo "</td>";
echo "</tr>";

echo "<tr height=\"3px\" >";
echo "<td>";
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td class=\"debat_spg textborder\" >";
echo "<span class=\"debat_navn \"> $vis[bruger]</span> <span class=\"email\"><a href=mailto:$vis[email]>($vis[email])</a></span>";
echo "</td>";
echo "</tr>";

echo "<tr height=\"10px\" >";
echo "<td>";
echo "</td>";
echo "</tr>";

echo "<tr height=\"1px\" bgcolor=\"#7f95a0\" >";
echo "<td>";
echo "</td>";
echo "</tr>";

echo "<tr height=\"10px\" >";
echo "<td>";
echo "</td>";
echo "</tr>";



}
} else {
echo("Deltag i debatten nu...");
}
echo "</table>";
?>


<form action="debat.php?mode=opret" method="POST">

<b>Navn:</b><br>
<input type="text" name="bruger" value="<? echo $_POST[bruger]; ?>"><br>

<b>Email:</b><br>
<input type="text" name="email" value="<? echo $_POST[email]; ?>"><br>

<b>Titel:</b><br>
<input type="text" name="titel" value="<? echo $_POST[titel]; ?>"><br>

<b>Kommentar:</b><br>
<textarea name="kommentar" rows="16" cols="81"><? echo $_POST[kommentar]; ?></textarea><br>

<input type="submit" value="send indlæg">

</form>


<?php

if($_GET[mode] == "opret") {

if($_POST[bruger] == "") {
echo("Du skal indtaste dit navn<br><br>");

} else {

if($_POST[titel] == "") {
echo("Du skal skrive et titel på dit indlæg<br><br>");

} else {

if($_POST[kommentar] == "") {
echo("Du skal skrive din kommentar<br><br>");

} else {

if(strlen($_POST[titel]) > 100) {
echo("Din titel er for lang - max. 100 anslag<br><br>");

}else {


include("mysql.php");
$dato = date("d/m/Y H:i");
$ip = $_SERVER[REMOTE_ADDR];
$bruger = htmlspecialchars($_POST[bruger]);
$titel = htmlspecialchars($_POST[titel]);
$kommentar = htmlspecialchars($_POST[kommentar]);
$email = htmlspecialchars($_POST[email]);
mysql_query("INSERT INTO debat (spg, titel, kommentar, bruger, email, dato, ip) VALUES (1,'$titel', '$kommentar', '$bruger', '$email', '$dato', '$ip')") or die(mysql_error());
print "<meta http-equiv=\"refresh\" content=\"0; url=debat.php\">";
}
}
}
}
}
?>
</body>
Avatar billede hmortensen Nybegynder
17. august 2007 - 20:17 #1
Du kører nl2br() metoden på din tekst streng.
Avatar billede kellesen Nybegynder
17. august 2007 - 20:26 #2
og lige så jeg forstår hvad du siger :D
Avatar billede zurekk Nybegynder
17. august 2007 - 20:39 #3
Når du printer, f.eks.
echo $besked;

skriver du istedet
echo nl2br( $besked );
Avatar billede hmortensen Nybegynder
17. august 2007 - 20:40 #4
$kommentar = htmlspecialchars($_POST[kommentar]);
->
$kommentar = nl2br(htmlspecialchars($_POST['kommentar']));
Avatar billede kellesen Nybegynder
17. august 2007 - 21:01 #5
cool det virker.. har lige et ekstra spørgsmål hvis du er frisk? ellers bare smid et svar..

har en tabel.. hvis folk indsætter et for langt ord gøres tabellen lige nu bare mere bred.. hvordan gør jeg så den automatisk bryder i teksten og knalder det ned på næste linie..?
Avatar billede showsource Seniormester
17. august 2007 - 21:14 #6
Avatar billede zurekk Nybegynder
17. august 2007 - 21:16 #7
Du kan bruge
wordwrap($besked, 100, "- \n", 1);

Så klipper den alle linjer/ord på over 100 tegn og laver et linjeskift.
Avatar billede zurekk Nybegynder
17. august 2007 - 21:17 #8
Eller som showsource siger :D
Avatar billede kellesen Nybegynder
17. august 2007 - 21:20 #9
super :D
og et sidste - lover det er det sidste...

echo "<a href='.$_SERVER['PHP_SELF'].'?debat_id='.$vis['debat_id'].'>Slet</a>'; ?>"

= unexpected T_ENCAPSED_AND_WHITESPACE
Avatar billede kellesen Nybegynder
17. august 2007 - 21:24 #10
det med wordwrap er smart.. hvor er det smartest at sætte det ind.. det skal være på alle ting man henter fra databasen..
Avatar billede jakobdo Ekspert
17. august 2007 - 21:40 #11
echo '<a href="'.$_SERVER['PHP_SELF'].'"?debat_id='.$vis['debat_id'].'>Slet</a>';
Avatar billede kellesen Nybegynder
17. august 2007 - 21:42 #12
hvad med wordwrap.. ?
Avatar billede kellesen Nybegynder
17. august 2007 - 21:43 #13
T_ECHO, expecting ',' or ';'
Avatar billede zurekk Nybegynder
17. august 2007 - 21:55 #14
echo '<a href="'.$_SERVER['PHP_SELF'].'?debat_id='.$vis['debat_id'].'">Slet</a>';

og med wordwrap siger du

$besked = nl2br( $besked );
$besked = wordwrap($besked, 100, "- \n", 1);

echo $besked;

Og hvor viser den T_ECHO fejlen? Du har glemt at afslutte linjen før.
Avatar billede jakobdo Ekspert
17. august 2007 - 21:55 #15
Selve linien skal selvfølgelig være:
echo '<a href="'.$_SERVER['PHP_SELF'].'?debat_id='.$vis['debat_id'].'">Slet</a>';

Hvis den siger fejl, kunne det tyde på en fejl et andet sted.

Wordwrap vil jeg lade de andre forklare. :o)
Avatar billede kellesen Nybegynder
17. august 2007 - 22:16 #16
har jo ingen $besked.. gider du ikke prøve med noget til mit script? ellers skal jeg jo skrive det til alt der bliver hivet ud?
Avatar billede jakobdo Ekspert
17. august 2007 - 22:18 #17
Det må være:

echo nl2br(wordwrap($vis[kommentar],100,"\r\n",1));
Avatar billede zurekk Nybegynder
17. august 2007 - 22:30 #18
Ja det er rigtigt, ikke så smart med "-" når den også breaker ved alm. linjeskift.

Og hvis du ikke allerede gør det, kan jeg anbefale at du bruger htmlentities() eller htmlspecialchars() når du smider kommentarerne i databasen, eller før du printer dem, så kan folk ikke bruge html/javascript etc. :)
Avatar billede jakobdo Ekspert
17. august 2007 - 22:38 #19
strip_tags() kunne også være en løsning! :o)
Avatar billede zurekk Nybegynder
17. august 2007 - 22:42 #20
Jooh, men beskytter det også mod javascript? Og fjerner det ikke tags'ne helt?
Det kan jo godt være at nogle vil skriver "<b>prut</b>" i ren tekst, som herinde :D
Avatar billede jakobdo Ekspert
17. august 2007 - 22:55 #21
Det fjerner tags helt jo.
Avatar billede kellesen Nybegynder
17. august 2007 - 23:43 #22
hvis man skal + det der står i [email] med [navn] (altså anslag) hvordan skriver man det så ud og evt giver det en variabel...
Avatar billede jakobdo Ekspert
18. august 2007 - 07:00 #23
echo $email . $navn;
eller
$total = $email . $navn;
Avatar billede kellesen Nybegynder
19. august 2007 - 15:21 #24
takker - i smider bare svar :)
Avatar billede zurekk Nybegynder
19. august 2007 - 17:06 #25
svar :)
Avatar billede jakobdo Ekspert
19. august 2007 - 19:51 #26
Svar!
Avatar billede jakobdo Ekspert
20. august 2007 - 15:22 #27
Var det kun mig som skulle have point?
Avatar billede kellesen Nybegynder
20. august 2007 - 15:27 #28
nej, det gik lidt hurtigt.. men det andet var jo smidt en som en kommentar... eller hva? har aldrig prøvet at dele points'ne
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester