Anzeige pro Seite begrenzen

  • PHP

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von oliver14800.

    Anzeige pro Seite begrenzen

    In meinem Code werden zur zeit alle User aufgelistet!
    Mein Problem ist .. das es halt alllllle sind .....
    Wie kann ich das machen das z.B. immer nur 10 aufgelistet werden
    und wenn man die nächsten 10 haben will man unten eine der seiten zahlen anklickt(selbst erweiternd)

    Mein Code....
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. $db_link = mysql_connect ( "rdbms.strato.de", "U**********", "***********");
    3. $db_sel = mysql_select_db("DB***********")
    4. or die("Auswahl der Datenbank fehlgeschlagen");
    5. $sql="SELECT * FROM user";
    6. $result=mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");
    7. echo "<table border=\"1\">\n";
    8. while ($row=mysql_fetch_row($result))
    9. {
    10. echo "<tr>";
    11. $arr = array(1);
    12. foreach ($arr as $user) // jedes Element $item der Zeile $row durchlaufen
    13. // wenn alles einfach echo "<td>$user</td>";
    14. echo "<td>$row[0]</td>";
    15. echo "<td>$row[1]</td>";
    16. echo "<td>$row[3]</td>";
    17. if ($row[6] == "admin"){
    18. echo '<td>&nbsp; <span title="Admin"><img src="../../image/flag.png" alt=\"\" /><img src="../../image/flag.png" alt=\"\" /><img src="../../image/flag.png" alt=\"\" /><img src="../../image/flag.png" alt=\"\" /></span> &nbsp; </td>';
    19. }
    20. if ($row[6] == "moderator"){
    21. echo '<td>&nbsp; <span title="Moderator"><img src="../../image/flag.png" alt=\"\" /><img src="../../image/flag.png" alt=\"\" /><img src="../../image/flag.png" alt=\"\" /></span> &nbsp; </td>';
    22. }
    23. if ($row[6] == "normal"){
    24. echo '<td>&nbsp; <span title="Normal"><img src="../../image/flag.png" alt=\"\" /></span> &nbsp; </td>';
    25. }
    26. if ($row[6] == "vip"){
    27. echo '<td>&nbsp; <span title="VIP"><img src="../../image/flag.png" alt=\"\" /><img src="../../image/flag.png" alt=\"\" /></span> &nbsp; </td>';
    28. }
    29. if ($row[9] == "ban"){
    30. echo '<td>&nbsp; <span title="Benutzer entbannen"><img src="../../image/b.png" alt=\"\" /></span> &nbsp; </td>';
    31. }
    32. if ($row[9] == "noban"){
    33. echo '<td>&nbsp; <span title="Benutzer bannen"><img src="../../image/nb.png" alt=\"\" /></span> &nbsp; </td>';
    34. }
    35. if ($row[10] == "inactive"){
    36. echo '<td>&nbsp; <span title="Aktivieren"><img src="../../image/i.png" alt=\"\" /></span> &nbsp; </td>';
    37. }
    38. if ($row[10] == "active"){
    39. echo '<td>&nbsp; <span title="Deaktivieren"><img src="../../image/a.png" alt=\"\" /></span> &nbsp; </td>';
    40. }
    41. echo "<td>&nbsp; <a href=\"../loeschen/index.php?id=$row[0]\"><img src='../../image/x.png'></a> &nbsp; ";
    42. echo "<a href=\"../bearbeiten/index.php?id=$row[0]\"><img src='../../image/e.png'></a></span> &nbsp; </td>";
    43. echo "</tr>\n";
    44. }
    45. echo "</table>\n";
    46. ?>
    • Der Seite einnen Get-Parameter geben, der die Seitenzahl angibt
    • Items pro Seite festlegen, z.B. 25
    • Prüfen ob die angegebene Zahl über 0 und kleiner der maximalen Seitenzahl ist -> ceil(Anzahl Benutzer / Items pro Seite)
    • Ja: SQL-Abfrage mit

      SQL-Abfrage

      1. LIMIT ((aktuelleSeite - 1) * Items pro Seite), (Items pro Seite)

    • Darstellung
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    LIMIT orientiert sich nicht an irgendwelchen IDs, Primary Keys o.ä., es liefert dir einen bestimmten Ausschnitt aus der Datenbank.

    SQL-Abfrage

    1. LIMIT 0, 15

    Gibt dir die ersten 15 Einträge

    SQL-Abfrage

    1. LIMIT 7, 12

    Liefert dir die zwölf Einträge nach dem siebten.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    current page => Get.
    Limit => ausrechnen mithilfe von current page.
    next page => Get+1.
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
    hmmmm gut nen anfang habe ich


    PHP-Quellcode

    1. $page = 1;
    2. $rows_per_page = 10;
    3. $start = ($page - 1) * $rows_per_page;
    4. $sql="SELECT * FROM user LIMIT $start, $rows_per_page";


    Da werden genau 10 Aufgelistet allerdings kann ich die anderen nicht aufrufen also Seite 2.....
    Dann mach es wie ich es oben beschrieben habe. Die Seite durch nen GET-Parameter und dann fügst du einen Link ein, der auf deine Seite mit dem Page-Parameter + 1 führt.

    Vergiss aber möglichst nicht, den Parameter ausreichend zu prüfen: Ist er eine Zahl, größer als 0 und kleiner als die maximal mögliche Seitenzahl?
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    hmmm

    also
    echo mysql_num_rows($result);

    gibt mir den wert 31 aus
    jetzt versuche ich die ganze zeit das mein Code den wert 4 ausspuckt damit ich das als Variable für
    $page = 2;
    setze
    Wie kann ich den $result durch 10 teilen und auf ganze zahlen aufrunden ?
    Äh, was?

    Von wegen aufrunden, steht alles schon oben, wenn du das meinst:

    Quellcode

    1. ceil(Anzahl Benutzer (bzw. Einträge in der Tabelle) / Items pro Seite)
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    SO klappt soweit ...(teilweise )

    2 Sachen noch
    1) Wie kann ich das machen das die Variable $page = 1 ist wenn nur index.php aufgerufen wurde und nicht index.php?id=1
    2) unten in der schleife die anzahl der Durchläufe der Seitenzahl anpassen

    PHP-Quellcode

    1. $getpage = $_GET['id'];
    2. $page = $getpage;
    3. $rows_per_page = 10;
    4. $start = ($page - 1) * $rows_per_page;
    5. $i = 1;
    6. while ($i <= 10) {
    7. echo "<a href=\"index.php?id=$i\">$i</a>";
    8. $i++;



    Da kommt immer 1 raus

    PHP-Quellcode

    1. echo ceil($result / 10);

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „oliver14800“ ()

    1.

    PHP-Quellcode

    1. if(!isset($_GET['id']))
    2. $page = 1;


    2.
    Ich weiß nicht, wie du dir das vorstellst, aber den Anfangswert der Schleife auf page -5 und Endpunkt auf page +5 setzen? Hier noch kontrollieren, ob man sich am Anfang oder Ende befindet.

    Da kommt immer 1 raus

    Wie liest du die Anzahl aller Einträge aus?

    Sowas solltest du lieber mit COUNT machen, denn SELECT * und dann num_rows erzeugt wesentlich mehr Aufwand, da es dir alle Einträge zurückgibt. COUNT liefert dir nur die Zahl der Einträge:

    SQL-Abfrage

    1. SELECT COUNT(*) FROM benutzertabelle
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Lukas“ ()

    PHP-Quellcode

    1. if (!isset($_GET['id'])) {
    2. $getpage = 1;
    3. }
    4. if (isset($_GET['id'])) {
    5. $getpage = $_GET['id'];
    6. }


    Bitte so:

    PHP-Quellcode

    1. if(!isset($_GET['id']))
    2. $page = 1;
    3. else
    4. $page = $_GET['id'];


    Zu dem Problem: Siehe Edit.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Ich lese die mit
    echo mysql_num_rows($result);
    aus ...


    echo ceil($result / 10);


    ERROR:
    if(!isset($_GET['id']))
    $page = 1;
    else
    $page = $_GET['id'];

    komisch habs auch schon mit {} Probiert

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „oliver14800“ ()

    Lass die das Ergebnis mal mit var_dump darstellen. Wenn du mit COUNT ausliest, solltest du ein Feld "COUNT(*)" haben, welches die Zahl enthält. Jegliche num_rows-Geschichten fallen da weg.

    Nochmal zu oben: Vergiss die Prüfungen des GET-Wertes nicht.

    ERROR
    hilft uns beiden nicht. Das sollte soweit korrekt sein, du musst irgendwo einen Fehler gemacht haben. Vorzugsweise: Vorher ein Semikolon vergessen?
    ideone.com/w3GqSc
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Super Danke nochmal an alle die mir geholfen haben

    Habe noch eine frage Zur Tabelle
    Wie kann ich bei dem Code Spalten benennen ?
    Also in der Obersten Zeile
    ID Benutzer Email...

    Spoiler anzeigen

    PHP-Quellcode

    1. // Anfrage ausführen
    2. $result=mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");
    3. // Tabelle in HTML darstellen
    4. echo "<table border=\"1\">\n";
    5. while ($row=mysql_fetch_row($result))
    6. {
    7. echo "<tr>";
    8. $arr = array(1);
    9. foreach ($arr as $user) // jedes Element $item der Zeile $row durchlaufen
    10. // wenn alles einfach echo "<td>$user</td>";
    11. echo "<td>$row[0]</td>";
    12. echo "<td>$row[1]</td>";
    13. echo "<td>$row[3]</td>";
    14. echo "<td>$row[7]</td>";
    15. echo "</tr>\n";
    16. }
    17. echo "</table>\n";