Ik schrijf een bericht naar mijn MySQL-database dmv. een htmlformulier.
Ik maak een multiline textfield aan met een char width van 100 char. Ik zet de WRAP op virtual. Echter als ik mijn bericht met php uitlees krijg ik toch steeds 1 lange zin zonder regeleind. Er verschijnt toch een horizontale schuifbalk. Waar moet ik waar veranderen?
even de functie nl2br() over de text halen die uit de DB komt
PHP Newbie schreef op 12.10.2006 23:06
even de functie nl2br() over de text halen die uit de DB komt


Let hierbij vooral op het punt: "die uit de DB" komt. Wat er (te) veel gebeurt is dat er met de nl2br() (= NewLine naar <br>) naar de database wordt geschreven, maar als je dan tekst later wil bewerken gaat het dan mis. Schrijf het weg zoals het uit het tekstveld komt (wel even htmlentities of adslashes eroverheen halen, om SQL-injectie te voorkomen) en doe de aanpassingen aan de tekst zelf pas bij het uitlezen.
Mijn DB "uitgang" ziet er als volgt uit. Helemaal achteraan zet ik de nl2br() regel. Toch zie ik nog geen resultaat.

$sql = "SELECT * FROM weblog ORDER BY id DESC";

$resultaat = mysql_query($sql); // voer SQL code uit

if ($resultaat) {
while ($rij = mysql_fetch_array($resultaat)) {

print("<table width=100% border=0>");
// echo "<tr>";
// print("<tr><td>&nbsp;</td></tr>");
print "<td><h5>".$rij["titel"]."</h5></td>";
print("<tr><td>&nbsp;</td></tr>");
print "<td><h4>".$rij["bericht"]."</h4></td>";
print("<tr><td><h3>".$rij["naam"].", ".$rij["datum"]." </h3></td></tr>");
print("<tr><td>&nbsp;</td></tr>");
print("<tr><td>&nbsp;</td></tr>");
print "</tr>";

}
}
print "</table>";

nl2br($_POST['bericht']);
print "<td><h4>".nl2br($rij["bericht"])."</h4></td>";
Nog steeds geen resultaat. De horizontale schuifbalk blijft verschijnen. Ik heb alle wrapfuncties in het formulier geprobeert.
Voor alle duidelijkheid: Ik type 1 lange zin, dus zonder enters. Dit omdat in mijn formulier de "cursor" vanzelf naar een nieuwe regel springt.
Robert schreef op 12.10.2006 23:18
[quote='PHP Newbie schreef op 12.10.2006 23:06']even de functie nl2br() over de text halen die uit de DB komt


Let hierbij vooral op het punt: "die uit de DB" komt. Wat er (te) veel gebeurt is dat er met de nl2br() (= NewLine naar <br>) naar de database wordt geschreven, maar als je dan tekst later wil bewerken gaat het dan mis. Schrijf het weg zoals het uit het tekstveld komt (wel even htmlentities of adslashes eroverheen halen, om SQL-injectie te voorkomen) en doe de aanpassingen aan de tekst zelf pas bij het uitlezen.[/quote]Wat ik altijd doe: Ik haal met het invoeren in de db enkel [php]mysql_real_escape_string[/php] over de input veldjes heen.
met uitlezen gebuik ik [php]htmlentities[/php], [php]stripslashes[/php], [php]nl2br[/php] ( indien nodig ) en nog wat zelfgemaakt functies.
Werkt perfect.

Bij de value van een input veldje doe ik het volgende:

<?
$var = htmlentities($_POST['var']);
$var = stripslashes($var);
?>

<input type="text" name="var" value="<?=$var ?>">

als je bij het input veldje dan '/"/'/"/'/"/'/ invuld, krijg je dat ook netjes terug te zien. dus niet dat elke slash en elke quote ge-escaped worden.

Mvg,

Erik
Erik schreef op 13.10.2006 07:50
[quote='Robert schreef op 12.10.2006 23:18'][quote='PHP Newbie schreef op 12.10.2006 23:06']even de functie nl2br() over de text halen die uit de DB komt


Let hierbij vooral op het punt: "die uit de DB" komt. Wat er (te) veel gebeurt is dat er met de nl2br() (= NewLine naar <br>) naar de database wordt geschreven, maar als je dan tekst later wil bewerken gaat het dan mis. Schrijf het weg zoals het uit het tekstveld komt (wel even htmlentities of adslashes eroverheen halen, om SQL-injectie te voorkomen) en doe de aanpassingen aan de tekst zelf pas bij het uitlezen.[/quote]Wat ik altijd doe: Ik haal met het invoeren in de db enkel [php]mysql_real_escape_string[/php] over de input veldjes heen.
met uitlezen gebuik ik [php]htmlentities[/php], [php]stripslashes[/php], [php]nl2br[/php] ( indien nodig ) en nog wat zelfgemaakt functies.
Werkt perfect.

Bij de value van een input veldje doe ik het volgende:

<?
$var = htmlentities($_POST['var']);
$var = stripslashes($var);
?>

<input type="text" name="var" value="<?=$var ?>">

als je bij het input veldje dan '/"/'/"/'/"/'/ invuld, krijg je dat ook netjes terug te zien. dus niet dat elke slash en elke quote ge-escaped worden.

Mvg,

Erik[/quote]

Dat is inderdaad beter :) danku.

Reageren