• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

MySQL-Suchergebnisse in "Gruppen" einteilen

newmacuser24

Antonowka
Registriert
27.12.05
Beiträge
355
Hallo zusammen,

Würde gerne folgendes machen:

Wenn ich an meine MySQL-Datenbank eine Suchanfrage schicke:

$sql="SELECT * FROM products WHERE ItemName = '$ItemName' AND ItemPrice ='$ItemPrice'";
$result=mysql_query($sql);
while($zeile = mysql_fetch_array($result)){
echo $zeile['ItemInfo'];}

...möchte ich, dass die Ergebnisse in "Gruppen" von je 8 Ergebnissen per echo ausgegeben werden.

Und zwar schritt für schritt:

1) User sucht
2) Die ersten 8 Ergebnisse werden ausgegeben
3) User klickt zum Beispiel auf "mehr"
4) Ergebnisse 9-16 werden ausgegeben

Ich weiss, dass es elegantere Lösungen gibt, Ergebnisse in Gruppen auf einer Website darzustellen, plane aber diese per Email zu versenden und benötige daher eine Lösung in diesem Stil.

Vielen Dank im Voraus!
 
Das ist eigentlich recht einfach, da du offenbar weist was du tust gebe ich nur Stichpunkte. :)

MySQL & limit: http://dev.mysql.com/doc/refman/5.0/en/select.html (unten der Absatz fängt mit „The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement.“ an)

Dann musst du die Datenbankabfrage natürlich umbauen, du brauchst ja 2 Zahlen im Limit anwenden zu können.

Zum einen musst du die Anzahl der Punkte pro Seite definieren
und
eine Variable benutzen die die aktuelle Seitenzahl enthält.

Ersteres ist: $per_page = 5;
Zweiteres so was wie: $current_page = intval($_GET['page']);


Der Aufruf erfolgt dann z.B. über index.php?page=1 oder index.php?page=2 für die zweite Seite.

Mit den 2 Variablen ($per_page und $current_page) kannst du dann deine Abfrage modifizieren (siehe ersten Link), du hast ja zum einen die Anzahl der Artikel pro Seite und dann noch die aktuelle Seitenzahl. Auf der ersten Seite sollen nur die Artikel 1 bis 5 angezeigt werden, auf der zweiten die Artikel 6 bis 10 uws.


(Und wenn du richtig faul bist, unter „PHP pagination“ dürfte es über Google massig Beispiele geben ;))