PHP + SQL: Ausgabe auf mehrere Seiten verteilen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP + SQL: Ausgabe auf mehrere Seiten verteilen

    Hallo

    Also... Ich hab auf eine Seite 10 Bilder, möchte diese aber auf 5 runtersetzen...

    Folgendermaßen... Er ließt die Bilder aus die SQL-Tabelle aus, zeigt auf der ersten Seite die ersten 5 Bilder und auf der 2 die nächsten 5 Bilder... er soll es immer so weiter machen in 5er schritten...

    Wie kann ich das machen???

    greets
  • du übergibst die aktuelle Seite immer als GET Parameter und fügst sie bei LIMIT und OFFSET ein

    Quellcode

    1. SELECT * FROM tbl LIMIT row_count OFFSET offset;


    http://www.coder-suche.de/search.jsp?query=site%3Adev.mysql.com+select
    Die LIMIT-Klausel kann zur Beschränkung der Anzahl der von der SELECT-Anweisung zurückgegebenen Datensätze verwendet werden. LIMIT nimmt ein oder zwei numerische Argumente entgegen, die (außer bei Verwendung vorbereiteter Anweisungen) beide nichtnegative Integer-Konstanten sein müssen.

    Von den beiden Argumenten gibt das erste den Versatz des ersten zurückzugebenden Datensatzes an, das zweite die maximale Anzahl zurückzugebender Datensätze. Der Versatz des ersten Datensatzes ist 0 (nicht 1)


    Quellcode

    1. SELECT * FROM tbl LIMIT 5 OFFSET 10; # Retrieve rows 6-15
  • Hallo..

    Der Code ist jas schon ganz gut...

    nur erzeugt er damit keine neue Seite...

    so wie dieser (der nicht bei mir wirklich mag dies aus der Tabelle auszulesen und daraus neue seiten zu machen in 5 er schritten)...


    "template"

    Quellcode

    1. <?
    2. IF($total_pages>1){
    3. FOR($i=1; $i<=$total_pages; $i++){
    4. IF($i==$page){
    5. ECHO "&nbsp;&nbsp;<b>$i</b>";
    6. }ELSE{
    7. ?>
    8. &nbsp;&nbsp;<a href="main.php?include=11&session_id=<?=$session_id?>&amp;page=<?=$i?>&amp;orderby=<?=$orderby?>&amp;<b><?=$i?></b></a>
    9. <?
    10. }
    11. }
    12. ?>
    13. <?
    14. }
    15. ?>
    Alles anzeigen


    "Include"

    Quellcode

    1. // Defaults
    2. IF(!$orderby){
    3. $orderby="us.login";
    4. }
    5. IF(!$orderdir){
    6. $orderdir="ASC";
    7. }
    8. IF(EMPTY($page) || !IS_SCALAR($page) || $page<1){
    9. $page=1;
    10. }ELSE{
    11. $page=ROUND($page);
    12. }
    13. $photos_per_page=20;
    Alles anzeigen


    greets
  • hallo

    ok... soweit versteh ich das einwenig...

    Quellcode

    1. $abfrag = "SELECT * FROM icc_galerie WHERE nick = '$nick7' ORDER by uid DESC";
    2. $abfrage = mysql_query($abfrag);
    3. while ($row = mysql_fetch_object($abfrage)) {


    das ist die eigendliche Abfrage zur zeit...

    da die einträge über den Nick abgefragt werden und sotiert nach ID (die sotierung dann raus)...

    also müsste da dann ja...

    Quellcode

    1. $abfrag = "SELECT * FROM icc_galerie WHERE nick = '$nick7' LIMIT $limit OFFSET '$gesammt'";
    2. $abfrage = mysql_query($abfrag);
    3. while ($row = mysql_fetch_object($abfrage)) {


    hinkommen...*denk*... Gesammt= die gesammten einträge (wenn 15 dann 15 und 30 dann 30)... "Abfrage über Include=30&limit=5"... nur wie kann ich es machen, das er dann automatisch in dem PHP script weiß, das es immer mehr werden... das heißt wenn 15 Beiträge auf 3 Seiten schon sind und 5 hinzukommen, das er automatisch eine 4 Seite aufmacht...

    greets
  • also, musste es einwenig ändern, da er mir sonst immer $i angezeigt hätte und so die abschnitte, aber nicht die vom user sondern gesammt (da er die nur vom user (nick) anzeigen soll...

    Quellcode

    1. <?
    2. $nick7 = "test";
    3. $limit = "1";
    4. $usid = "1";
    5. $sql = mysql_query("SELECT COUNT(`nick7`) FROM icc_galerie;");
    6. $res = mysql_fetch_array($sql);
    7. for($i=0; $i<$res[0]; $i+=$limit) {
    8. echo '<a href="main.php?include=63&session_id='.$session_id.'&nick7='.$nick7.'&offset='.$i.'">'.$i.'</a> ';
    9. }
    10. ?>
    Alles anzeigen


    nur hab ich Z.z das Problem, das er nichts anzeigt...

    greets
  • Wie gehst du an das Problem ran um es zu lösen? Was hast du schon unternommen?
    zuallererst schaust du doch bestimmt welchen Wert $res[0] hat.
    Dann gehe ich davon aus, dass du nicht nur schaust was im Browser angezeigt wird, sondern auch den HTML Quelltext anschaust. Wenn $i keinen Wert hätte, würde der Browser nämlich nichts zeigen.

    und dann entfern noch die Anführungszeichen um deine Integer.
  • hallo

    das ist richtig, da gibt er mir die zahl 7 (bei UID) bei $res[0] was aber nicht stimmt, da nur 3 bilder für den "user" test vorhanden sind und in 1er schritte sind...

    Quellcode

    1. <?
    2. $nick7 = tristar;
    3. $limit = "1";
    4. $usid = "1";
    5. $sql = mysql_query("SELECT COUNT(`uid`) FROM icc_galerie;");
    6. $res = mysql_fetch_array($sql);
    7. for($i=0; $i<$res[0]; $i+=$limit) {
    8. echo '<a href="main.php?include=63&session_id='.$session_id.'&nick7='.$nick7.'&offset='.$i.'">'.$i.'</a> ';
    9. }
    10. echo "--";
    11. echo $res[0];
    12. ?>
    Alles anzeigen


    wenn ich auf

    Quellcode

    1. $sql = mysql_query("SELECT COUNT(`nick7`) FROM icc_galerie;");


    gehe zeigt er mir garnichts mehr an (ob mit $nick7 oder ohne wie oben... also $res[0]=0...

    greets
    greets
  • "alt" schrieb:

    $nick7 = "test";
    $limit = "1";
    $usid = "1";

    "neu" schrieb:

    $nick7 = tristar;
    $limit = "1";
    $usid = "1";


    Integer sind die Zahlen - dort musst du die Anführungszeichen entfernen.

    Dass die falschen Werte geliefert werden ist unrealistisch. Kann nur sein, dass du was anderes darunter verstehst. Nehm mal COUNT(*) - das liefert die Anzahl aller Datensätze. Einschränkung machst du über die WHERE Klausel.
  • hallo

    Gut danke, jetzt hab ich es soweit, das er nur von dem User die Zahlen Anzeigt... Jetzt werd ich mal versuchen das daß Script auch anzeigt, was es soll...*g

    denn irgendwie muss er ja noch die daten übergeben, so das er dann auch nur 1 bild anzeigt pro seite...

    denn sobalt ich dies mit eintrage

    Quellcode

    1. while ($row = mysql_fetch_object($res))
    {

    zeigt er mit nichts mehr an...

    greets
  • hallo

    in gewisserweise zeigt er mir statt die UID, die ich sehen möchte nur

    0 --3 1 --3 2 --3


    also "$i" und "$res[0]"....


    Quellcode

    1. <?
    2. $nick7 = "Tristar";
    3. $limit = "1";
    4. $sql = mysql_query("SELECT COUNT(`uid`) FROM icc_galerie WHERE nick = '$nick7';");
    5. $res = mysql_fetch_array($sql);
    6. while ($row = mysql_fetch_object($res)) {
    7. }
    8. for($i=0; $i<$res[0]; $i+=$limit) {
    9. echo '<a href="main.php?include=63&session_id='.$session_id.'&nick7='.$nick7.'&offset='.$i.'">'.$i.'</a> ';
    10. echo "--";
    11. echo $res[0];
    12. echo $row->uid;
    13. }
    14. ?>
    Alles anzeigen



    bei diesem code...
  • hallo...

    Ob die 1 mit "" ist oder nicht, hat keine auswirkungen...

    Quellcode

    1. <?
    2. $nick7 = "Tristar";
    3. $limit = 1;
    4. $sql = mysql_query("SELECT COUNT(`uid`) FROM icc_galerie WHERE nick = '$nick7' ;");
    5. $res = mysql_fetch_array($sql);
    6. $row = mysql_fetch_object($res); {
    7. for($i=0; $i<$res[0]; $i+=$limit) {
    8. echo '<a href="main.php?include=63&session_id='.$session_id.'&nick7='.$nick7.'&offset='.$i.'">'.$i.'</a> ';
    9. echo "--";
    10. echo $res[0];
    11. echo $row->uid;
    12. }}
    13. ?>
    Alles anzeigen


    nur was ich nicht verstehe, weshalb er nicht $row->uid; ausgibt....

    wenn das funktionieren würde, dann würd es mit den Bilder klappen...

    greets
  • Nur weil das für deinen Code keine Auswirkungen hat, heißt das nicht, dass es für PHP keine Auswirkungen hat.

    Da keine Fehlermeldung kommt, habe ich mir deinen Code gar nicht so genau angeschaut.

    Du kannst das Ergebnis von mysql_fetch_array doch nicht in mysql_fetch_object packen.
    Und überhaupt: Du fragst uid gar nicht ab, sondern nur den count.

    Um beides zu selektieren machst du ein Select über beides machen. (Falls du uid überhaupt brauchst)

    Quellcode

    1. SELECT COUNT(`uid`),`uid` FROM icc_galerie;


    Und den Block den dur dir mit den geschweiften Klammern mitten im Code erstellt hast, kannst auch wieder entfernen.