Simon: Schleife nur x mal durchlaufen lassen und dann seiten auflisten

Hi,
ich hab mir eine Schleife gemacht damit ich GB Einträge aus einer DB auslesen kann:

$count = 0;  
	while ($row_out = mysql_fetch_array($out) AND $count <= 3)  
	{  
                //Hier wird alles ausgegeben  
		$count ++;  
	}

Also das mit den x mal durchlaufen funktioniert ja bereits aber ich frag mich jetzt wie ich es machen könnte damit sie z.B. 10 Einträge auflistet und dann unten Links einblendet die auf eine andere Seite verweisen die die nächsten 10 Einträge enthält.

Ich bräuchte nur ein paar Tipps.

MfG
Simon

  1. Grüße,

    Also das mit den x mal durchlaufen funktioniert ja bereits aber ich frag mich jetzt wie ich es machen könnte damit sie z.B. 10 Einträge auflistet und dann unten Links einblendet die auf eine andere Seite verweisen die die nächsten 10 Einträge enthält.

    unter sehr günstigen und gleichmäßigen umständen, kann man jede seite mit der "startvariable" aufrufen, und danach N einträge mittels LIMIT from,from+N auswählen. zB - möglichkeiten sind unzählig :) denk kurz nach
    MFG
    bleicher

  2. Lies nur 10 Einträge aus der DB, beginnend mit dem jeweils ersten für die Seite. Im Link steht dann als Parameter, welcher Eintrag der erste für die vorherige/nächste Seite ist.
    So kann mans bei vielen Galerien abgucken.

  3. hi,

    Also das mit den x mal durchlaufen funktioniert ja bereits aber ich frag mich jetzt wie ich es machen könnte damit sie z.B. 10 Einträge auflistet und dann unten Links einblendet die auf eine andere Seite verweisen die die nächsten 10 Einträge enthält.

    Ich bräuchte nur ein paar Tipps.

    Dieses kleine Tutorial ist recht verständlich, allerdings solltest du es nicht einfach so übernehmen sondern ein wenig erweitern.

    Nur um ein Beispiel zu nennen:

    $seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist

    Das solltest du reparieren, Beispielsweise kannst du erstmal die DB abfragen, wieviel einträge es insgesamt gibt, und die Anzahl dann in einer Variable speichern:

    Also vereinfacht: Im SELECT

    „COUNT(DB_Eintraege)   AS   eintraege_gesamt“

    Und dann mit PHP prüfen, ob in $_GET["seite"] auch drin ist, was du als Wert erwartest:

      if (isset($_GET["seite"])  
      AND [link:http://de.php.net/in_array@title=in_array]($_GET["seite"], [link:http://de.php.net/range@title=range] (1, [link:http://de2.php.net/ceil@title=ceil]( $eintraege_gesamt / $eintraege_pro_seite ) )) ) 
    

    In der zweiten Zeile passiert folgendes (ich fang von hinten an):

    $eintraege_gesamt / $eintraege_pro_seite  //   „$1 / $2“ geteilt durch  
      
     $eintraege_gesamt      // ist die Anzahl aller Einträge, sagen wir mal 17  
     $eintraege_pro_seite   // ist in deinem Beispiel 10  
      
    /*  
     Jetzt müssen wir berechnen, wieviele Seiten es gibt, also das eine geteilt durch das andere  
     wäre in diesem Fall „1,7“, damit kann PHP aber in diesem zusammenhang nichts anfangen, wir brauchen ganze Zahlen, also wird diese Zahl  
     nun mittels ceil() aufgreundet auf die nächst höhere Zahl, also „2“  
    */  
     $GesamteSeitenAnzahl = ceil( $eintraege_gesamt / $eintraege_pro_seite ); // um's zu verdeutlichen, diese Variable enthät nun „2“  
      
    /*  
      da wir ein Array benötigen, um den Inhalt zu prüfen, jagen wir das ganze durch range, das gibt uns ein Array im gewünschten Format  
    */  
      range (1, $GesamteSeitenAnzahl); // wir fangen bei 1 an, da wir seite=0 nicht möchten  
    /*  
     range() gibt uns nun ein Array zurück mit jeweils einem Key,und einem Value  
    */  
      
    array(2) {  
      [0]=> int(1)  
      [1]=>  int(2)  
    }  
      
    /*  
     Diese Array können wir nun mittels in_array() prüfen, das war's schon ;)  
    */  
    
    

    Hoffe, war nicht zuviel auf einen schlag.

      if (isset($_GET["seite"])  
      AND [link:http://de.php.net/in_array@title=in_array]($_GET["seite"], [link:http://de.php.net/range@title=range] (1, [link:http://de2.php.net/ceil@title=ceil]( $eintraege_gesamt / $eintraege_pro_seite ) )) )  
      {  
        $seite = $_GET["seite"];  
      }  
      else  
      {  
        $seite = 1; // wenn uns der Wert in $_GET["seite"] nicht gefällt, immer „1“  
      }
    

    mfg

    --
    echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
    array(2) {
      ["SELFCODE"]=>
      string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
      ["Meaningful"]=>
      string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
    }
    1. Hello,

      Dieses kleine Tutorial ist recht verständlich, allerdings solltest du es nicht einfach so übernehmen sondern ein wenig erweitern.

      Nur um ein Beispiel zu nennen:

      $seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist

      Das solltest du reparieren, Beispielsweise kannst du erstmal die DB abfragen, wieviel einträge es insgesamt gibt, und die Anzahl dann in einer Variable speichern:

      Also vereinfacht: Im SELECT

      „COUNT(DB_Eintraege)   AS   eintraege_gesamt“

      Dafür würde ich dann lieber bein Select SQL_CALC_FOUND_ROWS einsetzen und die maximale Anzahl jeweils frisch ermitteln.
      http://dev.mysql.com/doc/refman/5.1/en/information-functions.html

      Und den Get-Parameter für die Seite würde ich auf alle Fälle durch intval() schicken, bevor ich ihn an das Query übergebe und nicht einfach stumpf und nutzlos in eine andere Scriptvariable kopieren.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. hi,

        Dafür würde ich dann lieber bein Select SQL_CALC_FOUND_ROWS einsetzen und die maximale Anzahl jeweils frisch ermitteln.
        http://dev.mysql.com/doc/refman/5.1/en/information-functions.html

        Diese Funktion kannte ich nicht, werde ich mir gleich mal anschauen.

        Und den Get-Parameter für die Seite würde ich auf alle Fälle durch intval() schicken, bevor ich ihn an das Query übergebe und nicht einfach stumpf und nutzlos in eine andere Scriptvariable kopieren.

        Mein Beispiel war in direktem Bezug zu diesem Blätternmenu, da ist die Prfung, ob der GET-Wert überhaupt mit den Datensätzen übereinstimmen kann durchaus Sinnvoll.

        Man könnte genauso gut auf is_numeric() prüfen, nur muss man dann an anderer Stelle wieder prüfen, ob Daten vorliegen oder nicht, das erspart meine in_array() prüfung im Vorfeld.

        mfg

        --
        echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
        array(2) {
          ["SELFCODE"]=>
          string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
          ["Meaningful"]=>
          string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
        }
    2. Ok danke mal für das Tutorial. Werdes mir mal etwas anschaun und dann wie beschrieben etwas verändern und hier posten.

      MfG
      Simon