hello,

Mijn CMS met nieuwsberichten is bijna klaar. Ik heb, lieve forumleden, nog 2vragen.

1. Hoe kan ik zorgen dat alleen de laatste vijf toegevoegde berichten op de website index.php worden getoond? Ik heb wat lopen klooien met de DESC in combinatie met LIMI maar zonder succes....

2. Alle overige nieuwsberichten (minus de 5 recent geplaatste, die staan immers al op index.php) moeten worden weergegeven in een archief.

Iemand met een mooi voorbeeld script waar ik de antwoorden voor mijn vragen uit kan halen? Dat zou tof zijn!

-x- femke
LIMIT 5 ORDER BY id DESC LIMIT 5";

Das 2 keer LIMIT.....

$year = "$row[year]";

Je hebt nog geen $row....

... tot zover ...
SanThe, ik heb het aangepast. Is nu

$sql = "SELECT id,titel,datum,kop,substring(datum, 7, 4) AS year FROM nieuws WHERE SUBSTRING(datum, 4, 2) = $counter LIMIT 5 ORDER BY id DESC";

year, inderdaad. Da klopt nie. wordt gefixt. Dank en mocht je nog commentaar hebben dan graag.
Laat jij maar horen of het nu werkt of niet. Ik zie in bovenstaand stukje code nog meer waarvan ik denk, werkt dat? Maar dat kan ik niet beoordelen omdat het slechts een stukje code is en niet de complete.
ik ga mijn best doen de rotzooi eruit te halen. Dank in ieder geval voor het commentaar.
@SanThe en alle andere aanwezigen,

Ik ga met de billen bloot. Hierbij bied ik jullie inkijk in mijn script. Er staat ongetwijfeld nog wat rotzooi in, maar het werkt wel. Met uitzondering van LIMIT optie, die ik met geen mogelijkheid in de doortoe bestemde regel krijg ingepast.

doel van scirpt: Ik laat jullie het script zien: index.php. Dit script haalt berichten uit de mysql database. Rangschikken lukt nog niet, evenals de 5 meest recente berichten laten zien.

Nog wat info vooraf: Ik heb me verdiept in PHP dmv diverse tutorials. o.a. op deze site. algemene opmerkingen op mijn php scripting te verbeteren zijn van harte welkom. Opmerkingen om de LIMIT function te kunnen gebruiken uiteraard ook!

fem,

-------
<html gebeuren>

<?

require("../map/map/XX.dbinst.php");

function maand($counter)
{
if ($counter == 1)
$count = "Januari";
elseif ($counter == 2)
$count = "Februari";
elseif ($counter == 3)
$count = "Maart";
elseif ($counter == 4)
$count = "April";
elseif ($counter == 5)
$count = "Mei";
elseif ($counter == 6)
$count = "Juni";
elseif ($counter == 7)
$count = "Juli";
elseif ($counter == 8)
$count = "Augustus";
elseif ($counter == 9)
$count = "September";
elseif ($counter == 10)
$count = "Oktober";
elseif ($counter == 11)
$count = "November";
elseif ($counter == 12)
$count = "December";

return $count;
}

if (!$HTTP_GET_VARS[id] && !$HTTP_POST_VARS[id])
{
$counter = 1;

while($counter <= 12)
{
if ($counter == 1)
$counter = "0" . $counter;

// in volgende regel moet de LIMIT tag komen...

$sql = "SELECT id,titel,datum,kop,substring(datum, 7, 4) AS year FROM nieuws WHERE SUBSTRING(datum, 4, 2) = $counter ORDER BY id DESC,year DESC";

$res = mysql_query($sql);

if (mysql_num_rows($res) >= 1)
{
$year = "$row[year]";

$berichten = mysql_num_rows($res);

$month = maand($counter);

if ($berichten == 1)
echo "";
else
echo "";

while ($row = mysql_fetch_array($res))
{
$sql2 = "select id from reacties where tid = $row[id]";
$res2 = mysql_query($sql2);
$count = mysql_num_rows($res2);
//overzicht van de nieuwspagina


echo "<table><td class=\"main_datum\">[$row[datum]]<div class=\"main_intro\">$row[kop]</div><a href=$PHP_SELF?id=$row[id] class=\"linkjes\">$row[titel]</a><br><a href=$PHP_SELF?id=$row[id] class=\"reacties\"><div align=\"right\">aantal reacties: ($count)</div></td></table>";

}

//echo "</blockquote><p>";

}
else
{
if ($counter <= 12)
{
$length = strlen(maand($counter)) - 1;
$month = strtoupper(substr(maand($counter), 0, -$length)) . substr(maand($counter), 1);
if ($counter == 11)
$months .= "$month en ";
elseif ($counter == 12)
$months .= "$month";
else
$months .= "$month" . ", ";
}

if ($counter == 12)
{
if (strlen($months) <= 8)
echo "";
else
echo "";
}
}

$counter++;

}
}
else
{
if ($HTTP_POST_VARS["submit"] && $HTTP_POST_VARS["naam"] && $HTTP_POST_VARS["msg"])
{
$datum = date("d.m.Y H:i");

$sql = "INSERT INTO reacties (id, naam, titel, msg, datum, ipadres, tid) VALUES ";
$sql .= "('', '$HTTP_POST_VARS[naam]', '$HTTP_POST_VARS[titel]', '$HTTP_POST_VARS[msg]', '$datum', '$REMOTE_ADDR', '$HTTP_GET_VARS[id]')";
$res = mysql_query($sql);

if ($res)
echo "<SCRIPT LANGUAGE=\"javascript\" TYPE=\"text/javascript\">window.location='$PHP_SELF?id=$HTTP_GET_VARS[id]'</SCRIPT>\n";
else
echo "Reactie niet toegevoegd.";
}
else
{
//geselecteerd artikel bekijken
$sql = "SELECT id,titel,msg,datum,kop FROM nieuws WHERE id = '$HTTP_GET_VARS[id]'";
$res = mysql_query($sql);
echo "&nbsp;<a class=\"terug\" href=\"$PHP_SELF\" target=\"_top\">terug naar nieuws overzicht</a>";
if (mysql_num_rows($res) >= 1)
{
$row = mysql_fetch_array($res);
$hiddentitel = $row[titel];

echo "<table width=\"320\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
//Datum printen op beeld
echo "<tr>";
echo "<td width=\"5\">&nbsp;</td>";
echo "<td class=\"main_datum\">$row[datum]</td>";
echo "<td width=\"5\">&nbsp;</td>";
echo "</tr>";
//Kop printen op beeld
echo "<tr>";
echo "<td width=\"5\">&nbsp;</td>";
echo "<td class=\"main_kop\">$row[kop]</td>";
echo "<td width=\"5\">&nbsp;</td>";
echo "</tr>";
//Intro printen op beeld
echo "<tr>";
echo "<td width=\"5\">&nbsp;</td>";
echo "<td class=\"main_intro\">$row[titel]<br><br></td>";
echo "<td width=\"5\">&nbsp;</td>";
echo "</tr>";
//Bericht printen op beeld

$row[msg] = nl2br($row[msg]); //zorgt ervoor dat de enters (die wel in de DB staan) worden weergegeven

echo "<tr>";
echo "<td width=\"5\">&nbsp;</td>";
echo "<td class=\"main\">$row[msg]</td>";
echo "<td width=\"5\">&nbsp;</td>";
echo "</tr>";
echo "</table>";


$row[msg] = nl2br($row[msg]);

//blauwe horizontale streep
echo "<hr color=\"#dbe1e9\">";

//linkjes E-Mail dit bericht, Print en Naar boven
echo "&nbsp;<img src=\"../images/icon_mail.jpg\">&nbsp;<a class=\"olink\" href=\"\"onClick=\"javascript:taf()\">e-mail dit bericht</a> | <img src=\"../images/icon_print.jpg\">&nbsp;<a class=\"olink\" href=\"blaaat\">print</a> | <img src=\"../images/icon_top.jpg\">&nbsp;<a href=\"javascript:scroll(0,0)\" class=\"olink\">naar boven</a><br><br>";
echo "&nbsp;<span class=\"main\">Reacties bij dit bericht:</span><br><br>";

$sql = "SELECT id,naam,titel,msg,datum FROM reacties WHERE tid = '$HTTP_GET_VARS[id]' ORDER BY id DESC";
$res = mysql_query($sql);


echo "<a name=\"reacties\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"300\"><tr><td>";
echo "<table border=0 cellspacing=0 cellpadding=0 width=\"300\"></a>";

if (mysql_num_rows($res) >= 1)
{

while ($row = mysql_fetch_array($res))
{
$row[msg] = nl2br($row[msg]);
//!!!! hier de reacties

echo "<table width=\"320\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<tr>";
echo "<td width=\"5\"></td>";
echo "<td bgcolor=\"#ffffff\" class=\"main\"><b>$row[naam]</b>&nbsp;[$row[datum]]</td>";
echo "</tr>";
echo "<tr>";
echo "<td width=\"5\"></td>";
echo "<td bgcolor=\"#ffffff\" class=\"main\">$row[msg]<br><br></td>";
echo "<td width=\"5\"></td>";
echo "</tr>";



// ipv de tabel hierboven echo "<tr><td bgcolor=\"#F1F2F4\" class=\"main\"><b>$row[naam]</b>[$row[datum]]</td></tr>";
// ipv de tabel hierboven echo "<tr><td bgcolor=\"#F1F2F4\" class=\"main\">$row[msg]<br><br></td></tr>";

}
}
else
{

echo "<tr><td bgcolor=\"#ffffff\" class=\"main\">&nbsp;Er zijn nog geen reacties op dit bericht</td></tr>";
}

echo "</td></tr></table></table><p>";




echo "<form method=\"post\" action=\"$PHP_SELF?id=$HTTP_GET_VARS[id]\">";
echo "<input type=\"hidden\" name=\"titel\" value=\"$hiddentitel\">";
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#ffffff\" width=\"200\">";
echo "<tr>";
echo "<td width=\"225\"><table width=\"25\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<tr>";
echo "<td width=\"5\">&nbsp;</td>";
echo "<td><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<div class=\"main\">Plaats hier uw reactie:</div><br>";
echo "<tr>";
echo "<td width=\"60\" valign=top class=\"main\">Naam<br>";
echo "<input type=\"text\" name=\"naam\" id=\"nieuws_veld2\"></td>";
echo "<td rowspan=\"2\"><br>";
echo "<br>";
echo "<td rowspan=\"2\">";
echo "<tr>";
echo "<td width=\"60\" valign=\"top\" class=\"main\">Bericht<br>";
echo "<textarea name=\"msg\" rows=\"5\" maxlength=\"300\" cols=\"26\" id=\"nieuws_veld1\"></textarea></td>";
echo "<tr>";
echo "<td><input type=\"submit\" name=\"submit\" id=\"nieuws_submit\" value=\"reactie plaatsen\">";
echo "</table></td>";
echo "</tr>";
echo "</table></td>";
echo "</tr>";
echo "</table>";
echo "</form>";

}
else
{
echo "Nieuws bericht niet gevonden.";
}

echo "&nbsp;<a class=\"terug\" href=\"$PHP_SELF\" target=\"_top\">terug naar nieuws overzicht</a>";
}
}
?>

Aardig stukje script. Er kan nog wel wat aan verbeterd worden. Om te beginnen zou ik de echo met enkele quotes gaan doen. Bij enkele quotes echood ie letterlijk wat er tussen staat naar het scherm. Voordeel is dat je de dubbele quotes niet meer hoeft te escapen en dus je script overzichtelijker wordt. Verder $vars altijd buiten de quotes houden is beter en duidelijker. En $HTTP_GET_VARS is antiek dat is gewoon $_GET

Dus i.p.v.
echo "<form method=\"post\" action=\"$PHP_SELF?id=$HTTP_GET_VARS[id]\">";

wordt het zoiets:
echo '<form method="post" action="' . $_SERVER['PHP_SELF'] . '?id=' . $_GET['id'] . '">';

Edit: Zat foutje in.
@SanThe,

oke, wederom hartelijk dank voor commentaar. ook fijn om te horen dat het wel een aardig stukje script is. Het begin van php geeft toch een beetje een drijfzand gevoel... :)

Ik ga de dubbele quotes aanpassen. Ik kan dan dus ook die \ uit de betreffende regels verwijderen? De \ doe ik om te zorgen dat php deze tags als html goed interpreteerd.

Heb je misschien ook nog een idee hoe ik de LIMIT functie kan verwerken? Ik kan dan mijn index.php + archief.php afronden...

femke,
Ik probeer LIMIT met LIMIT 6,*; maar bij mij geeft hij de volgende fout :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*' at line 1
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/users/conceftp/conceptm.nl/freevoice2/pages/inc_nieuws_archief.php on line 30

iemand een idee?

Reageren