Textarea input met \n in DB zetten
Ik heb dus een form met een textarea hierin. Ik wil graag dat dit in de DB gezet wordt (of uitgelezen), zodat de newlines zijn vervangen door \n codes.
Ik heb al veel gezocht maar niets kunnen vinden.
VB: Dit is mijn invoer:
"Tekst met
een aantal
newlines
:)"
Hoe komt dit zo in de DB, of hoe word het zo uitgelezen:
"Tekst met\neen aantal\nnewlines\n:)"
Bvd,
Doney
bij het uit de database halen de functie nl2br erover heen gooien
Gewijzigd op 01/01/1970 01:00:00 door Citroen Anoniem Graag
Gewijzigd op 01/01/1970 01:00:00 door Citroen Anoniem Graag
Gewijzigd op 01/01/1970 01:00:00 door Citroen Anoniem Graag
Das ietsjes te vaak, 1x lijkt mij meer dan voldoende. Volgens mij is het de combinatie firebug + php hulp, want ik het dit nooit gehad, en nu zette ik ff alle opties in firebug aan en hij verzend het formulier 5x
Gewijzigd op 01/01/1970 01:00:00 door Citroen Anoniem Graag
Zou ik ook doen. Leuke reacties Fréek.
Gewoon met mysql_real_escape_string() er omheen in de database zetten.
Fréek schreef op 30.06.2008 16:33:
4
Das ietsjes te vaak, 1x lijkt mij meer dan voldoende. Volgens mij is het de combinatie firebug + php hulp, want ik het dit nooit gehad, en nu zette ik ff alle opties in firebug aan en hij verzend het formulier 5x
Das ietsjes te vaak, 1x lijkt mij meer dan voldoende. Volgens mij is het de combinatie firebug + php hulp, want ik het dit nooit gehad, en nu zette ik ff alle opties in firebug aan en hij verzend het formulier 5x
Ik heb ook de firebug extensie, maar geen problemen.
Nope, dan komt-ie er zo uit:
"Tekst met<br />
een aantal<br />
newlines<br />
:)"
Hij moet namelijk in een javascript alert() terechtkomen, en hiervoor moet je \n 's hebben.
replace dan gewoon die <br /> met \n? Of gaat dat niet werken, heb dat eigenlijk nooit getest.
Gewijzigd op 01/01/1970 01:00:00 door Onbekend Onbekend
Doney, en dan met preg_replace uit de DB halen?
Ik dacht dat als je in een form een newline doet, dit wordt gegeven met een \n, dus je hoeft denk ik niets te doen. Of wel?
klopt als je het normaal in je database zet en normaal ophaald heb je als het goed is geen problemen. zou je wat code kunnen laten zien?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
function checkAlerts () {
$getalerts = mysql_query("SELECT * FROM `alert` WHERE `userid` = '" . userID($_SESSION[username]) . "' AND `read` = 0 ORDER BY `tijd` ASC") or die (mysql_error());
while($alert = mysql_fetch_object($getalerts)) {
$bericht = $alert->bericht;
echo '<script type="text/javascript" language="javascript">
alert("' . $bericht . '");
</script>';
mysql_query("UPDATE `alert` SET `read` = 1 WHERE `id` = '".$alert->id."' LIMIT 1") or die (mysql_error());
}
}
$getalerts = mysql_query("SELECT * FROM `alert` WHERE `userid` = '" . userID($_SESSION[username]) . "' AND `read` = 0 ORDER BY `tijd` ASC") or die (mysql_error());
while($alert = mysql_fetch_object($getalerts)) {
$bericht = $alert->bericht;
echo '<script type="text/javascript" language="javascript">
alert("' . $bericht . '");
</script>';
mysql_query("UPDATE `alert` SET `read` = 1 WHERE `id` = '".$alert->id."' LIMIT 1") or die (mysql_error());
}
}
En dit is het in-de-DB-zet-gedeelte:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
if ($_POST[addname] == 1) {
$bericht = "Alert van " . $_SESSION[username] . ":\\n----------------------------\\n" . $_POST[bericht] . "";
} else {
$bericht = "Alert van Moderator:\\n----------------------------\\n" . $_POST[bericht] . "";
}
mysql_query("INSERT INTO alert VALUES (0, ".userID($_POST[username]).", '". $bericht ."', NOW(), 0)") or die (mysql_error());
echo "Het bericht is verzonden naar ".$_POST[username].".";
$bericht = "Alert van " . $_SESSION[username] . ":\\n----------------------------\\n" . $_POST[bericht] . "";
} else {
$bericht = "Alert van Moderator:\\n----------------------------\\n" . $_POST[bericht] . "";
}
mysql_query("INSERT INTO alert VALUES (0, ".userID($_POST[username]).", '". $bericht ."', NOW(), 0)") or die (mysql_error());
echo "Het bericht is verzonden naar ".$_POST[username].".";
- Geen backtics in query's gebruiken.
- $_SESSION is een array(). Gebruik de juiste syntax, dus gebruik enkele quotes.
- Foutafhandeling ontbreekt.
- Gebruik mysql_real_escape_string() om je data veilig in de database te zetten. Je hebt nu een sql-injection lek.
Oké, bedankt voor de tips, maar dat lost mijn probleem nog niet op :P
Als je die tips opvolgt, welk probleem heb je dan nog?
Er was geen probleem, TS maakt zelf een probleem door weet ik wat in de database te zetten ipv \n. Als de string met de tekst niet bewerkt wordt, voor hij in de database gaat, en niet bewerkt wordt erna, bijv. door nl2br(), dan is er niets aan de hand, dus geen probleem.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<script type="text/javascript" language="javascript">
alert("Alert van Moderator:
----------------------------
regel1
regel2
regel3
regel4
enz");
</script>
alert("Alert van Moderator:
----------------------------
regel1
regel2
regel3
regel4
enz");
</script>
Wat dus niet kan, want alert mag niet uit meerdere lines bestaan, maar uit 1 line met \n's. Snapt iemand het?