MySQL enter wegschrijven
Ik ben met een gastenboek bezig die icm MySQL werkt.
Zoals in alle gastenboeken kan je grote teksten wegschrijven, hiervoor heb ik in m'n tabel "bericht" aangemaakt met als type "LONGTEXT".
Als ik met een textarea wat tekst schrijf met hier en daar wat enters, zet hij de enters niet in de database. Het gevolg hiervan is als je de data weer ophaalt, dat je 1 lange zin krijgt.
Het is dus de bedoeling dat waar diegene enters in de textarea zet, die deze ook wegschrijft in de database zodat als je het bericht ophaald ook enters op de goede plaatsen staan en, zoals eerder gezegt, niet 1 lange zin word :)
mvg,
Dennis
nl2br() toevoegen als je de gegevens uit je database trekt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
require("config.php");
$select = "SELECT * FROM gastenboek";
$query = mysql_query($select);
while ($list = mysql_fetch_object($query))
{
echo"
<table style=\"width: 100%\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td background=\"../images/menu_top.jpg\" height=\"21\" class=\"left_content\"> Door <B>$list->naam</B> op $list->date</td>
</tr>
<tr>
<td class=\"left_content\">
///////// HIER HAALT HIJ DE GEGEVENS OP
$list->bericht
///////// HIER HAALT HIJ DE GEGEVENS OP
</td>
</tr>
<tr>
<td background=\"../images/menu_bottom.jpg\" height=\"17\" class=\"left_content_end\"> </td>
</tr>
</table><BR>";
}
?>
require("config.php");
$select = "SELECT * FROM gastenboek";
$query = mysql_query($select);
while ($list = mysql_fetch_object($query))
{
echo"
<table style=\"width: 100%\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td background=\"../images/menu_top.jpg\" height=\"21\" class=\"left_content\"> Door <B>$list->naam</B> op $list->date</td>
</tr>
<tr>
<td class=\"left_content\">
///////// HIER HAALT HIJ DE GEGEVENS OP
$list->bericht
///////// HIER HAALT HIJ DE GEGEVENS OP
</td>
</tr>
<tr>
<td background=\"../images/menu_bottom.jpg\" height=\"17\" class=\"left_content_end\"> </td>
</tr>
</table><BR>";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis
nl2br($list->bericht)
- Waarom controleer je niet of de query wel is gelukt? Deze kan altijd mislukken, je mag dus nooit aannamen dat het wel goed gaat.
- $query is een uiterst ongelukkige naam, er staat namelijk helemaal geen query in deze variabele, er staat een result-set in. $result is dus een veel betere naam en voorkomt hele knullige bugs in je systeem.
- Waarom gebruik je de functie mysql_fetch_object() ? Dit is veruit de langzaamste fetch-functie. Gebruik bv. mysql_fetch_assoc(), dat is net zo eenvoudig in het gebruik ( $list['bericht'] en stukken sneller.
- Waarom dubbele quotes gebruiken bij echo, dan moet je alle dubbele quotes in de html-tags gaan escapen. Het gebruik van enkele quotes maakt de boel een stuk overzichtelijker en je maakt minder fouten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
require("config.php");
$select = "SELECT * FROM gastenboek";
$query = mysql_query($select);
while ($list = mysql_fetch_object($query))
{
echo"
<table style=\"width: 100%\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td background=\"../images/menu_top.jpg\" height=\"21\" class=\"left_content\"> Door <B>$list->naam</B> op $list->date</td>
</tr>
<tr>
<td class=\"left_content\">
nl2br($list->bericht);
</td>
</tr>
<tr>
<td background=\"../images/menu_bottom.jpg\" height=\"17\" class=\"left_content_end\"> </td>
</tr>
</table><BR>";
}
?>
require("config.php");
$select = "SELECT * FROM gastenboek";
$query = mysql_query($select);
while ($list = mysql_fetch_object($query))
{
echo"
<table style=\"width: 100%\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td background=\"../images/menu_top.jpg\" height=\"21\" class=\"left_content\"> Door <B>$list->naam</B> op $list->date</td>
</tr>
<tr>
<td class=\"left_content\">
nl2br($list->bericht);
</td>
</tr>
<tr>
<td background=\"../images/menu_bottom.jpg\" height=\"17\" class=\"left_content_end\"> </td>
</tr>
</table><BR>";
}
?>
Frank schreef op 10.02.2007 21:02:
Offtopic: Even een paar vraagjes over jouw scriptje:
- Waarom controleer je niet of de query wel is gelukt? Deze kan altijd mislukken, je mag dus nooit aannamen dat het wel goed gaat.
- $query is een uiterst ongelukkige naam, er staat namelijk helemaal geen query in deze variabele, er staat een result-set in. $result is dus een veel betere naam en voorkomt hele knullige bugs in je systeem.
- Waarom gebruik je de functie mysql_fetch_object() ? Dit is veruit de langzaamste fetch-functie. Gebruik bv. mysql_fetch_assoc(), dat is net zo eenvoudig in het gebruik ( $list['bericht'] en stukken sneller.
- Waarom dubbele quotes gebruiken bij echo, dan moet je alle dubbele quotes in de html-tags gaan escapen. Het gebruik van enkele quotes maakt de boel een stuk overzichtelijker en je maakt minder fouten.
- Waarom controleer je niet of de query wel is gelukt? Deze kan altijd mislukken, je mag dus nooit aannamen dat het wel goed gaat.
- $query is een uiterst ongelukkige naam, er staat namelijk helemaal geen query in deze variabele, er staat een result-set in. $result is dus een veel betere naam en voorkomt hele knullige bugs in je systeem.
- Waarom gebruik je de functie mysql_fetch_object() ? Dit is veruit de langzaamste fetch-functie. Gebruik bv. mysql_fetch_assoc(), dat is net zo eenvoudig in het gebruik ( $list['bericht'] en stukken sneller.
- Waarom dubbele quotes gebruiken bij echo, dan moet je alle dubbele quotes in de html-tags gaan escapen. Het gebruik van enkele quotes maakt de boel een stuk overzichtelijker en je maakt minder fouten.
Zo ben ik het gewent... zal wel een nettere manier aanleren :)
Ben het momenteel aan het aanpassen, maar het gaat natuurlijk fout als je $list['bericht'] gebruikt onder echo ''; Zal effe verder kijken
@ Niek:
Dit werkt niet helemaal. Je krijgt als resultaat:
Door op 2007-02-10 20:58:35
nl2br(xcv xcv xc xcv )
waar die xcv xcv staat moeten enters komen, die staan er niet...
Ik heb ookal met echo's gespeelt:
http://djdenz.dj.funpic.de/gastenboek/gastenboek.php
Gewijzigd op 01/01/1970 01:00:00 door Dennis
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
require("config.php");
$select = "SELECT * FROM gastenboek";
$query = mysql_query($select);
while ($list = mysql_fetch_object($query))
{
echo"
<table style=\"width: 100%\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td background=\"../images/menu_top.jpg\" height=\"21\" class=\"left_content\"> Door <B>$list->naam</B> op $list->date</td>
</tr>
<tr>
<td class=\"left_content\">
". nl2br($list->bericht) ."
</td>
</tr>
<tr>
<td background=\"../images/menu_bottom.jpg\" height=\"17\" class=\"left_content_end\"> </td>
</tr>
</table><BR>";
}
?>
require("config.php");
$select = "SELECT * FROM gastenboek";
$query = mysql_query($select);
while ($list = mysql_fetch_object($query))
{
echo"
<table style=\"width: 100%\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td background=\"../images/menu_top.jpg\" height=\"21\" class=\"left_content\"> Door <B>$list->naam</B> op $list->date</td>
</tr>
<tr>
<td class=\"left_content\">
". nl2br($list->bericht) ."
</td>
</tr>
<tr>
<td background=\"../images/menu_bottom.jpg\" height=\"17\" class=\"left_content_end\"> </td>
</tr>
</table><BR>";
}
?>
Frank schreef op 10.02.2007 21:02:
Offtopic: Even een paar vraagjes over jouw scriptje:
- Waarom controleer je niet of de query wel is gelukt? Deze kan altijd mislukken, je mag dus nooit aannamen dat het wel goed gaat.
- $query is een uiterst ongelukkige naam, er staat namelijk helemaal geen query in deze variabele, er staat een result-set in. $result is dus een veel betere naam en voorkomt hele knullige bugs in je systeem.
- Waarom gebruik je de functie mysql_fetch_object() ? Dit is veruit de langzaamste fetch-functie. Gebruik bv. mysql_fetch_assoc(), dat is net zo eenvoudig in het gebruik ( $list['bericht'] en stukken sneller.
- Waarom dubbele quotes gebruiken bij echo, dan moet je alle dubbele quotes in de html-tags gaan escapen. Het gebruik van enkele quotes maakt de boel een stuk overzichtelijker en je maakt minder fouten.
- Waarom controleer je niet of de query wel is gelukt? Deze kan altijd mislukken, je mag dus nooit aannamen dat het wel goed gaat.
- $query is een uiterst ongelukkige naam, er staat namelijk helemaal geen query in deze variabele, er staat een result-set in. $result is dus een veel betere naam en voorkomt hele knullige bugs in je systeem.
- Waarom gebruik je de functie mysql_fetch_object() ? Dit is veruit de langzaamste fetch-functie. Gebruik bv. mysql_fetch_assoc(), dat is net zo eenvoudig in het gebruik ( $list['bericht'] en stukken sneller.
- Waarom dubbele quotes gebruiken bij echo, dan moet je alle dubbele quotes in de html-tags gaan escapen. Het gebruik van enkele quotes maakt de boel een stuk overzichtelijker en je maakt minder fouten.
Nogmaals qoute @ Frank:
Als je echo ''; en $list[""]; gebruikt moet je de echo eerst afsluiten.
Dit kost veel extra onnodig code. Effe snel slordig in elkaar:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
require("config.php");
$select = "SELECT * FROM gastenboek";
$result = mysql_query($select);
while ($list = mysql_fetch_assoc($result))
{
echo '
<table style="width: 100%" cellspacing="0" cellpadding="0">
<tr>
<td background="../images/menu_top.jpg" height="21" class="left_content"> Door <B>';
echo $list["naam"];
echo '</B> op';
echo $list["date"];
echo '
</td>
</tr>
<tr>
<td class="left_content">';
echo $list["bericht"];
echo '</td>
</tr>
<tr>
<td background="../images/menu_bottom.jpg" height="17" class="left_content_end"> </td>
</tr>
</table><BR>';
}
?>
require("config.php");
$select = "SELECT * FROM gastenboek";
$result = mysql_query($select);
while ($list = mysql_fetch_assoc($result))
{
echo '
<table style="width: 100%" cellspacing="0" cellpadding="0">
<tr>
<td background="../images/menu_top.jpg" height="21" class="left_content"> Door <B>';
echo $list["naam"];
echo '</B> op';
echo $list["date"];
echo '
</td>
</tr>
<tr>
<td class="left_content">';
echo $list["bericht"];
echo '</td>
</tr>
<tr>
<td background="../images/menu_bottom.jpg" height="17" class="left_content_end"> </td>
</tr>
</table><BR>';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis
Quote:
Ja, en? Variabelen haal je in een goed script (persoonlijke mening...) toch al buiten quotes, dus ik zie niet in wat het probleem is.Als je echo ''; en $list[""]; gebruikt moet je de echo eerst afsluiten.
En zodra je gebruik gaat maken van een template-parser, gebruik je in de template vrijwel alleen html en hier en daar . Dan heb je dit probleem helemaal niet meer.
Toch bedankt, dit is iig wel netter. Zal eens kijken hoe en wat ik het ga doen.
@ Derest:
Bedankt! de enters werken :)
Bedankt iedereen!
Code (php)
Kun je ook schrijven als:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
echo '
</td>
</tr>
<tr>
<td class="left_content">
'.$list["bericht"].'
</td>
<tr>';
?>
echo '
</td>
</tr>
<tr>
<td class="left_content">
'.$list["bericht"].'
</td>
<tr>';
?>
Het is echt niet nodig om de echo te onderbreken, met een . (punt) kun je zo een variabele aan een string plakken en de hele zooi in 1x echoen.
Dit wist ik nog niet precies. Nu weer dus wat nieuws geleerd :)
Zal het vaak gebruiken.
Bedankt!
Dennis