andi: datei auslesen und anzahl fest stellen

hallo,

ich lese eine textdatei aus jetzt gibt es einträge die nicht mit gezählt werden sollen.

wie fange ich das an

if (file_exists("datei.csv"))
{
  $lines=file("datei.csv");
  $num = sizeof($lines);
}

damit erhalte ich alle einträge

datei.csv
name | titel | meldung | datum

alles nicht anzeigen mit einem bestimmten namen

wie geht das?

danke

  1. Hallo,

    wie geht das?

    Ich verstehe nicht so ganz was du eigendlich willst. Aber wenn du mit csv Datein arbeitest solltest du dir vielleicht fgetcsv ansehen.

    Gruß,
    Severin

    --
    They that can give up essential liberty to obtain a little temporary safty deserve neither liberty nor safty.
    -- Benjamin Franklin
    1. hi,

      was ich will?

      ich will nicht alle datensätze aus der textdatei zählen sondern nur bestimmte.

      also eine bedingung z.b. alle die den namen müller haben bitte zählen

      wie stelle ich das an???

      1. Hello,

        ich will nicht alle datensätze aus der textdatei zählen sondern nur bestimmte.

        also eine bedingung z.b. alle die den namen müller haben bitte zählen

        wie stelle ich das an???

        Indem Du nur die zählst, die nicht den Namen 'müller' enthalten ;-)

        Achte ggf. auch auf Groß-Kleinschreibung.

        Da muss die Bedingung dann eventuell so aussehen:

        $ausschlusswert = strtolower($ausschlusswert);

        while ... -->

        if (strtolower($_rec[$col]) != $ausschlusswert) $num++;

        <--

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

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  2. Hello,

    Die Funktion file() ist nicht für CSV-Dateien geeignet, da CSV-Dateien auch Zeilenumbrüche innerhalb der eingeschlossenen Feldwerte haben können, die NICHT das Datensatzende bedeuten.

    File() reagiert aber auf jeden Zeilenumbruch als Satzende.

    Wenn Deine CSV-Datei sauber aufgebaut ist, alos alle Felder jeweils in Begrenzer eingeschlossen sind, Begrenzerzeichen innerhalb eines Datenfeldes durch Doppelung maskiert sind, dann kannst Du die Daten aus der Datei folgendermaßen in ein zweidimensionales Array übertragen:

    $maxrecsize = 10000;   #(Maximale Datensatzgröße)
    $seperator  = ',';     # Feld-Trennzeichen
    $enclosure  = '"';     # Feldwert-Begrenzer
    $_data = array();

    $fh = fopen($dateiname,'r');
      if ($fh)
      {
        while (!feof($fh))
        {
          $_data[] = fgetcsv($fh,$maxrecsize,$seperator,$enclosure);
        }
      }

    in $_data[$n][$col] findest Du dann den Feldwert.
    $n ist die lfd. Nummer des Datensatzes im Array (beginnend bei 0) und
    $col ist die Feldnummer im Datensatz (beginnend bei 0).

    Wenn Du nun weißt, in der wievielten Spalte der gesuchte Wert steht, kannst Du ja ganz einfach zählen:

    $num = 0;
      if(is_array($_data))
      {
        foreach($_data as $key => $_rec)
        {
          if ($_rec[$col] != $ausschlusswert) $num++;
        }
      }

    echo "Die Datei enthält $num Datensätze ohne den Begriff $ausschlusswert in der $col"."ten Spalte";

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

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. hi,

      danke

      ja genau was ich suchte und vielen dank für die zusatz infos