Beste mensen,
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.
Lijkt mij niet dat dat zo makkelijk werkt:

<?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\">&nbsp; 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\">&nbsp;</td>
</tr>
</table><BR>";
}

?>
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.
Zo dus

<?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\">&nbsp; 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\">&nbsp;</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.


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
De php functie moet je natuurlijk wel buiten quotes zetten:
<?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\">&nbsp; 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\">&nbsp;</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.


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:

<?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">&nbsp; 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">&nbsp;</td>
</tr>
</table><BR>';

}

?>
Als je echo ''; en $list[""]; gebruikt moet je de echo eerst afsluiten.
Ja, en? Variabelen haal je in een goed script (persoonlijke mening...) toch al buiten quotes, dus ik zie niet in wat het probleem is.

En zodra je gebruik gaat maken van een template-parser, gebruik je in de template vrijwel alleen html en hier en daar <?php echo $var?>. Dan heb je dit probleem helemaal niet meer.
@ Frank:
Toch bedankt, dit is iig wel netter. Zal eens kijken hoe en wat ik het ga doen.

@ Derest:
Bedankt! de enters werken :)


Bedankt iedereen!

Reageren