Gesucht: Syntax für "nächsten x Einträge" anzeigen
CrazyLexx
- datenbank
0 Vinzenz Mai0 steckl0 CrazyLexx0 Frank (no reg)1 ChrisB
Hallo zusammen,
möchte auf der Startseite immer die letzten x Meldungen aus einer Kategorie anzeigen lassen und verwende dafür ungefähr folgenden Code zur Abfrage der Datenbank:
<?php
$featured_news = mysql_query("SELECT * from ccms_news where featured='1' order by id desc limit 15");
$c = 1;
while ($row = mysql_fetch_assoc($featured_news)) {
// <span class=\"contentlight\"> - "; echo days_ago($row[timestamp]); echo "</SPAN>
$title_start = preg_replace('/[^a-zA-Z0-9 *]/', '', $row[title]);
$title_seo = str_replace(' ', '-', $title_start);
if($odd = $c%2 ) {
$style = "images/list_bg.gif";
} else {
$style = "images/list_bg2.gif";
}
echo " <tr>
<td width=\"600\" height=\"67\" valign=\"middle\" style=\"background-image:url($style);background-repeat:repeat-y;background-position:top left;padding-top: 1px;\">
<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"600\" align=\"center\">
<tr>
<td width=\"99%\" valign=\"top\" style=\"padding: 5px;\">\n";
if ($row[platform]) {
echo " <img src=\"images/consoles/$row[platform].gif\" align=\"right\">";
}
echo " <a href=\"story-$row[id]-$title_seo.html\" class=\"latest_news\">$row[title]</a><br />
<SPAN class=\"latest_news\">$row[prev_news]</SPAN></td>
</tr>
</table>
</td>
</tr>\n\n";
$c++;
}
?>
Möchte nun gerne unter diese Liste einen Link einbinden, mit der ich dann an gleicher Stelle (also wieder auf der Startseite) die entsprechend "nächst älteren" Meldungen angezeigt bekomme. Wie würde die Syntax dann aussehen?
Danke,
Tom
Hallo Tom,
SELECT * from ccms_news where featured='1' order by id desc limit 15
SELECT * ist böse[tm]. Verwende bitte
SELECT
spalte1,
spalte2,
...,
spalten
FROM ...
Möchte nun gerne unter diese Liste einen Link einbinden, mit der ich dann an gleicher Stelle (also wieder auf der Startseite) die entsprechend "nächst älteren" Meldungen angezeigt bekomme. Wie würde die Syntax dann aussehen?
Baue Dir mittels PHP die geeignete LIMIT-Klausel zusammen.
Freundliche Grüße
Vinzenz
Hi,
Möchte nun gerne unter diese Liste einen Link einbinden, mit der ich dann an gleicher Stelle (also wieder auf der Startseite) die entsprechend "nächst älteren" Meldungen angezeigt bekomme. Wie würde die Syntax dann aussehen?
Du kannst Limit auch mit 2 Parametern anwenden. Den offset musst du dann immer per Link übergeben.
Zitat aus dem Manual:
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
mfG,
steckl
Du kannst Limit auch mit 2 Parametern anwenden. Den offset musst du dann immer per Link übergeben.
Zitat aus dem Manual:
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
Da ich aber von mysql eigentlich überhaupt keine Ahnung habe, muss ich mal wegen der Syntax fragen:
Bedeutete "LIMIT 5,10;" nicht, dass die Datenbankeinträge von 5 bis 10 ausgegeben werden? Oder definiert das sowas wie Intervalle?
Wie bekomme ich dann den Link zu den z.B. nächsten 5 Einträgen automatisch angepasst?
Danke,
TOM
Hallo,
Wie bekomme ich dann den Link zu den z.B. nächsten 5 Einträgen automatisch angepasst?
Mit einfacher Arithmetik und URL-Argumenten/Parametern:
1. Seite: 0, 10
-> $offset ist nicht übergeben worden, also nimmt es den Wert 0 an
-> <a href="nächsteSeite.php?offset=0+10">...</a>
2. Seite 10, 10
-> $offset ist übergeben worden und nimmt den Wert 10 an
-> <a href="nächsteSeite.php?offset=10+10">...</a>
... usw
Das SQL dazu kannst du dir ja geeignet in PHP zusammenbauen.
$sql = "SELECT blabla FROM blubb LIMIT ".$offset.",10";
Vorsicht vor SqlInjection!!! (Mein beispiel wäre anfällig)
Eigentlich mit etwas Nachdenken nicht so schwer, oder?
Evt. solltest du auch eine konkrete Sortierung mittels ORDER BY in Betracht ziehen. Und von SELECT * solltest du Abstand nehmen, benenne die auszugebenden Spalten ausdrücklich. Tipp: Damit kann man sogar die Ausgabereihenfolge von Spalten ändern und bestimmte Spalten von der Ausgabe ganz einfach durch Nichtnennung ausschliessen. ;)
Ciao, Frakn
Hi,
Da ich aber von mysql eigentlich überhaupt keine Ahnung habe, muss ich mal wegen der Syntax fragen:
Streiche "frage", setze "nachlesen".
Bedeutete "LIMIT 5,10;" nicht, dass die Datenbankeinträge von 5 bis 10 ausgegeben werden? Oder definiert das sowas wie Intervalle?
Du hast den Link auf die Manualseite bzgl. SELECT bereits bekommen - also lese es bitte nach.
Wie bekomme ich dann den Link zu den z.B. nächsten 5 Einträgen automatisch angepasst?
In dem du eine simple Addition durchfuehrst.
MfG ChrisB