Zum Inhalt springen

MySQL-Ausgabe auf mehrere Seiten aufteilen


Empfohlene Beiträge

Hallo zusammen!

Ihr kennt doch sicherlich alle diese Blättern-Funktion auf vielen Seiten, also z.b. << 1 | 2 | 3 | 4 >>

Wie macht man so etwas das immer 10 Einträge pro Seite ausgegeben werden?

Es geht sich darum das ich ein News-Archiv am basteln bin. Sobald eine Neuigkeit einen Kommentar bekommt oder bearbeitet wurde bekommt sie in die Spalte "last_action" den aktuellen Zeitstempel eingetragen. Bei der Ausgabe werden die News dann nach last_action sortiert, so das die zuletzt bearbeiteten News oben stehen.

Habe überhaupt keine Idee für einen Ansatz, habe so etwas noch nie gemacht.

Danke für eure Hilfe!

Link zu diesem Kommentar
Auf anderen Seiten teilen

<?
$ErgebnisseProSeite = 1;
echo '<form action=""Diese_Seite.php?AktuelleSeite=",$AktuelleSeite" method="POST">'; // Bein Kopf drücken wieder Aktuelle seite aufrufen

if(!isset($_REQUEST['AktuelleSeite']))
{
$AktuelleSeite = 0;
}
else
{
$AktuelleSeite = $_REQUEST['AktuelleSeite'];
}

$ResultPointer = mysql_query("SELECT * FROM Tab where `Spalte`="text" LIMIT $AktuelleSeite, $ErgebnisseProSeite", $connection);
$Anzahl = mysql_num_rows(mysql_query("SELECT * FROM Tab where `Spalte`="text" ", $connection));


while($row = mysql_fetch_object($ResultPointer))
{
echo $row->Spalte;
}

if($Anzahl > $ErgebnisseProSeite) // Seiten Anzahl
{
$Seiten = intval($Anzahl/$ErgebnisseProSeite);
if($Anzahl%$ErgebnisseProSeite)
{
$Seiten++;
}
}

for($i = 1; $i <= $Seiten; $i++) // Seiten link Ausgabe
{ if ($i-1 == $AktuelleSeite) echo"<a href=\"",$_SERVER['PHP_SELF'],"?AktuelleSeite=",($i-1)*$ErgebnisseProSeite,"\"><b>$i</b></a> ";
else echo"<a href=\"",$_SERVER['PHP_SELF'],"?AktuelleSeite=",($i-1)*$ErgebnisseProSeite,"\">$i</a> ";
}

?>[/PHP]

Könnten noch ein paar kleine Fehler drin sein...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das "text" steht für ein Kriterium...

Wenn du einfach alles ausgeben willst was in der Tabelle steht dann mach folgendes:

$ResultPointer = mysql_query("SELECT * FROM Tab LIMIT $AktuelleSeite, $ErgebnisseProSeite", $connection); 
$Anzahl = mysql_num_rows(mysql_query("SELECT * FROM Tab ", $connection));
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

$mysqlhost="mysql"; // MySQL-Host angeben
$mysqluser="User"; // MySQL-User angeben
$mysqlpwd="Passwort"; // Passwort angeben
$mysqldb="Datenbank"; // Gewuenschte Datenbank angeben

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
mysql_query($sql);
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sooo, habe mich nun in letzter Zeit etwas mit MySQL Tutorials auseinander gesetzt, und habe mittlerweile ein eigenes Script für die Ausgabe geschrieben.

Es funktioniert auch fast, außer einer Sache.

Im Verlauf des Scripts werden zwei Variablen berechnet, $start (start-id) und $limit (end-id).

Nun möchte ich halt mit einer MySQL-Query nur einen bestimmten Bereich abfragen, das macht man soweit ichs verstanden hab ja mit LIMIT x,X. Meine Abfrage sieht nun so aus:

SELECT * FROM tbl_main WHERE id LIMIT '$start','$limit' ORDER BY id DESC;

Es sollen damit alle Zeilen zwischen $start und $limit ausgegeben werden.

Aber es funktioniert leider nich. Könnt ihr mir da vllt weiterhelfen? Danke!

Link zu diesem Kommentar
Auf anderen Seiten teilen

lies die tutorials nochmal ^^

Limit steht für die anzahl der Datensätze, nicht für die Primärschlüssel

also Limit 10,20 liefert vom 10 bis 20. Datensatz entsprechend deiner Filter und sortierung.

Limit wird nicht in '' angegeben. '' stehen für Strings. Limit sind aber Zahlen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

erstmal fetten Respekt, das ging ja fix ...

www.mysql.de sagt :

Wenn Sie LIMIT # mit ORDER BY benutzen, beendet MySQL das Sortieren, sobald er die ersten # Zeilen gefunden hat, anstatt die gesamte Tabelle zu sortieren.

damit wird dein guter Gedankengang, zur nichte gemacht ;) aber für jedes Problem gibts eine Lösung ;)

ungetestet :

select * from (SELECT * FROM tbl_main ORDER BY id DESC) WHERE id LIMIT $start,$limit ;

welche Mysql version hast du ? @an alle: gehen diese Subselects überhaupt bei mysql ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

also Limit 10,20 liefert vom 10 bis 20. Datensatz entsprechend deiner Filter und sortierung.

na??

heisst es nicht:

LIMIT X, Y

X ist der erste Wert

Y die auszugebenden Werte

d.h.: LIMIT 10, 20 fängt beim 10. Eintrag an und gibt dann die 20 darauf folgenden aus, wenn vorhanden....

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

naja, ich gehe jetzt mal davon aus, dass man selber auf die Idee kommt, statt den Zahlen halt Werte einzutragen

nur nochmal für dich (ich weiss das du es auch kannst) mit Variblen

SELECT * 

FROM tab 

ORDER BY id DESC 

LIMIT $start, $limit

Was soll daran nicht funktionieren??

Ich verwende es fast ÜBERALL!! :)

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...