Regina: Weitere Beiträge anzeigen

Hallo, bei Instagram gibt es die Anzeige "Mehr laden", z. B. hier: Linkbeschreibung

Ich habe eine MySQL-Datenbank und möchte die Datensätze ähnlich ausgeben, also zuerst die ersten 20, dann 20 weitere.

<?
$sql = "SELECT
name, vorname
FROM
namen
ORDER BY
name
ASC LIMIT 20";

$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) 
{
echo $name;
}
?>

So zeige ich die ersten 20 Namen an, aber wie komme ich zu Nr. 21 bis z. B. 40 und mit einem weiteren Klick auf 41 bis 60 u.s.w?

Danke!!!!

  1. $result = mysql_query($sql)

    Wird mit PHP 7 (der aktuellen Version!) nichjt mehr gehen. Stelle auf PDO oder mysqli um.

    SELECT ... LIMIT 20
    

    So zeige ich die ersten 20 Namen an, aber wie komme ich zu Nr. 21 bis z. B. 40 und mit einem weiteren Klick auf 41 bis 60 u.s.w?

    Das Handbuch sagt:

    The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be nonnegative integer constants, with these exceptions:

    • Within prepared statements, LIMIT parameters can be specified using ? placeholder markers.
    • Within stored programs, LIMIT parameters can be specified using integer-valued routine parameters or local variables.

    With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):

    Also:

    SELECT ... LIMIT 0, 20; # das gleiche wie SELECT ... LIMIT 0, 20
    SELECT ... LIMIT 20, 20;
    SELECT ... LIMIT 40, 20;
    

    Bau den errechneten Startwert in den Link ein (seite.php?start=n) und werte $_GET['start'] aus. Vergiss aber nicht zu ermitteln, ob die Datenbank noch Items enthält. Das ist alles einfache Lego-Logik.

    Danke!!!!