Tolwin: Anzeige limitieren

Hallo Zusammen,

ich möchte gerne die Anzeige von News auf eine Anzahl - bspw. 25 Stück pro Seite - limitieren. Die News bekomme ich aus einer DB. Diesen News ordne ich noch eine Kategorie aus einem Textfile zu und schreibe die Daten in ein Array- und zwar so:

PHP:--------------------------------------------------------------------------------
$file = "muster2.csv";
$farray   =  file($file) or die("Fehler beim oeffnen der Datei muster2.csv)");
    if($farray)
    {
          foreach($farray as $line)
          {
               list($cat_id, $path, $sort) = split(";", $line);
              $kategorien[$cat_id]['cat_id'] = $cat_id;
              $kategorien[$cat_id]['path']   = $path;
              $kategorien[$cat_id]['sort']   = $sort;
              $kategorien[$data[0]] = array('cat_id' => $data[0], 'path' => $data[1], 'sort' => $data[2]);
        }
    }

--------------------------------------------------------------------------------

Danach gebe ich die News (hier auch noch nach einer Kategorie sortiert - aus.

PHP:--------------------------------------------------------------------------------
foreach($results as $db_key => $result)
{
    $datei = "/newsfsuche/".$result->news_nummer.".php";
       $results[$db_key]->path = $kategorien[$result->category_id]['path'];
       $results[$db_key]->sort = $kategorien[$result->category_id]['sort'];

if(isset($cat_select))
    {
        if((integer)$results[$db_key]->sort == (integer)$cat_select)
        {
            echo  "<tr><td valign="top" width="60" style="font-size:11px;font_weight:bold;background-color:#FFFFFF"><b>"  .$result->date_german.  "</b></td>";
               echo  "<td valign="top" width="500" style="font-size:11px;lighter:lighter;background-color:#FFFFFF;color:#000000;vertical-align:middle;height:18px;">"  .$results[$db_key]->path. "</td></tr>";
            echo  "<tr><td></td><td valign="top" style="font-size:11px;background-color:#FFFFFF;color:#000000;"><a href="http://"  .$server.  /newsfsuche/"  .basename($datei).  "" target="_new">"  .$result->titel.  "</a></td>";
            echo "<tr><td colspan="3"><hr color="#000000" size="1"></td></tr>";
            //$cat_select = (integer)$cat_select;
        }
    }
    if($cat_select == 9 || !isset($cat_select))
    {
            echo  "<tr><td valign="top" width="60" style="font-size:11px;font_weight:bold;background-color:#FFFFFF"><b>"  .$result->date_german.  "</b></td>";
               echo  "<td valign="top" width="500" style="font-size:11px;lighter:lighter;background-color:#FFFFFF;color:#000000;vertical-align:middle;height:18px;">"  .$results[$db_key]->path. "</td></tr>";
            echo  "<tr><td></td><td valign="top" style="font-size:11px;background-color:#FFFFFF;color:#000000;"><a href="http://"  .$server.  /newsfsuche/"  .basename($datei).  "" target="_new">"  .$result->titel.  "</a></td>";
            echo "<tr><td colspan="3"><hr color="#000000" size="1"></td></tr>";
    }

}

--------------------------------------------------------------------------------

Wie kann ich jetzt die Ausgabe auf 25 limitieren. Mit SQL Statements habe ich im Forum schon etwas finden können, aber nichts was auf mein Problem passen könnte.
Schon mal vielen Dank!

  1. hi,

    ich möchte gerne die Anzeige von News auf eine Anzahl - bspw. 25 Stück pro Seite - limitieren.

    http://www.php-faq.de/q/q-mysql-seitenweise.html sollte dir einen guten denkansatz geben können.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. LIMIT habe ich schon gefunden, aber da ich einmal Daten aus eine DB

      mit Daten aus einem TXTFile verbinde und in ein Array schreibe -
      um Zugriffe so gering wie möglich zu halten -
      bin ich dann schon einen Schritt nach der SQL Abfrage.

      1. Hi,

        bin ich dann schon einen Schritt nach der SQL Abfrage.

        Das ist schade denn moeglicherweise haette Dir dieser Tipp zu denken gegeben:
        "Es ist nicht effizient, alle n Datensätze der Tabelle zu selektieren und dann alle Datensätze vor Position s zu überlesen."

        Es ist sehr easy, mit LIMIT zu arbeiten.

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
  2. Moin!

    Wie kann ich jetzt die Ausgabe auf 25 limitieren. Mit SQL Statements habe ich im Forum schon etwas finden können, aber nichts was auf mein Problem passen könnte.

    Wie, du fragst selbst, wie du es "LIMITIEREN" kannst, bist aber nicht auf "LIMIT" gestoßen? Sehr seltsam...

    • Sven Rautenberg
  3. Hello,

    eine echte CSV-Datei kann man nicht mit file() einlesen, sondern muss sie zeilenweise mit fgetcsv() einlesen. Das liegt an der Art der Zeilenbegrenzung.

    In einer CSV-Datei können auch innerhalb der Felder (Spalten) Zeilenschaltungszeichen enthalten sein. Die Felder müsen dafür nur mit Delimitern (PHP nennt das Enclosure) begrenzt werden. Um auch Delimiter innerhalb der feldwerte benutzen zu können, müssen die durch Doppelung maskiert werden.

    Soviel erstmal zum Umgang mit CSV-Dateien.

    Da man nun sowieso die Datei "zeilenweise" lesen muss, kann man doch locker mitzählen. Man liest eben nur soviele Sätze ein, bis entweder EOF erreicht ist, oder die maximale Anzahl erreicht ist.

    Ich habe mir Dein Script nicht weiter angeschaut, weil es eine Zumutung ist, das zu lesen:
    1. wegen der Formatierung
    2. weil es für die Fragestellung mindestens 70% irrelevante Dinge enthält.

    Wenn Du das Script also auf das Wensentliche für die Fragestellung reduziert und kommentiert hast, dann schauen wir nochmal.

    Außerdem versuche formatierte Ausgabe und Datenbeschaffung und -manipulation strikt voneienander zu trennen.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau