.csv Datei auslesen und schreiben.fehler!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • .csv Datei auslesen und schreiben.fehler!

    Hallo,

    ich habe folgendes Problem:

    PHP-Code:
    $zeile=0;
    $bol=file_exists("newskommentare/".$newsid.".csv");
    if (
    $bol) {
    $datei fopen("newskommentare/".$newsid.".csv","r");
    if (
    $datei) {
    echo 
    "<tr><td bgcolor=\"#396A8F\" valign=\"top\" align=\"center\">\n";
    echo 
    "<span
    style=\"font-size:14px;color:#A7BECF;font-weight:bold;font-family:Verdana,
    Arial, Helvetica, sans-serif\">"
    ;
    echo 
    "Kommentare:</span>";
    echo 
    "<p style=\"margin-top:5pt;margin-bottom:0pt\"></p>";
    $dateigroesse=filesize("newskommentare/".$newsid.".csv");
    while((
    $data fgetcsv ($datei$dateigroesse";"))!=false) {
    $zeile++;
    echo 
    "<table width=\"580\" cellpadding=\"1\"><tr><td bgcolor=\"#000000\">\n";
    echo 
    "<table cellpadding=\"4\" cellspacing=\"0\"><tr>";
    echo 
    "<td width=\"1%\" bgcolor=\"#274B67\" align=\"left\">";
    echo 
    "<span class=\"news\">";
    echo 
    $zeile;
    echo 
    ".</span>";
    echo 
    "</td>\n";
    echo 
    "<td bgcolor=\"#274B67\" align=\"left\">";
    echo 
    "<span class=\"news\">";
    echo 
    $data[0];
    echo 
    " schrieb am ";
    echo 
    $data[2];
    echo 
    " um ";
    echo 
    $data[3];
    echo 
    " Uhr:</span";
    echo 
    "</td></tr>";
    echo 
    "<tr><td bgcolor=\"#386588\" align=\"left\"></td><td
    bgcolor=\"#386588\" align=\"left\">"
    ;
    echo 
    "<span class=\"news\">";
    echo 
    $data[1];
    echo 
    "</span>";
    echo 
    "</td></tr></table></td></tr><tr><td
    height=\"10\"></td></tr></table>"
    ;
    }
    fclose($datei)
    echo 
    "</td></tr>";
    }

    Dieser Code liest meine .csv Dateien aus und schreibt die Daten anschließend in
    eine .php Datei.
    Das funktioniert auch wunderbar. Nur habe ich folgendes Problem: Wird der erste
    Eintrag geschrieben schreibt dieser Code nach dem ersten Eintrag gleich noch
    eine leere 2te Tabelle.
    Diese wird dann angezeigt(Beispiel): 2. schrieb am um Uhr.
    Also ohne Inhalt. Wird dann aber ein 2ter Beitrag geschrieben wird dieser
    Inhalt in dieser leeren 2ten Tabelle angezeigt.
    Bei nachfolgenden Beitrag, also ab dem 2ten passiert dieser Fehler nicht mehr.
    Ich habe keine Ahnung woran es liegen kann, da dieser Fehler nur nach dem ersten
    Beitrag vorkommt.
    PS: vor und nach dem Code ist normalerweise noch HTML angehängt, deswegen fehlen
    ein paar table Attribute am Anfang und Ende.

    Ich hoffe mir kann jemand helfen.
    Vielen Dank,
    Gruß Maze

    EDIT:
    Hier einmal der Code der den Eintrag schreibt:

    PHP-Code:
    <?php
    $name
    =$HTTP_POST_VARS["name"];
    $kommentar=$HTTP_POST_VARS["kommentar"];
    $newsid=$HTTP_POST_VARS["newsid"];
    $punkt=".";
    $dpunkt=":";
    $trenner=";";
    $datum=date("d");
    $datum.=$punkt;
    $datum.=date("m");
    $datum.=$punkt;
    $datum.=date("Y");
    $zeit=date("G");
    $zeit.=$dpunkt;
    $zeit.=date("i");
    $zeit.=$dpunkt;
    $zeit.=date("s");
    //Neuer Datensatz
    if ($name==""$name="Unbekannt";
    if (
    $kommentar!="") {
    $datensatz=$name;
    $datensatz.=$trenner;
    $datensatz.=$kommentar;
    $datensatz.=$trenner;
    $datensatz.=$datum;
    $datensatz.=$trenner;
    $datensatz.=$zeit;
    $datensatz.="\n";
    //Neuer Datensatz an das Ende der *.csv Datei
    $datei=fopen("newskommentare/".$newsid.".csv","a");
    if (
    $datei) {
    $output=fwrite($datei,$datensatz);
    fclose($datei);
    echo
    "Vielen Dank für deinen Eintrag.<br>";
    echo
    "<input type=\"button\" value=\"Zurück\" 
    onclick=\"self.location.href='index.php?action=comments&newsid="
    .$newsid."'\">\n";
    }
    }
    else {
    echo
    "<p>Bitte gib einen Kommentar ein.<br>";
    echo
    "<input type=\"button\" value=\"Zurück\" 
    onclick=\"self.location.href='index.php?action=comments&newsid="
    .$newsid."'\">\n";
    }
    ?>
    Zuletzt geändert von VitaminB5; 03.04.2005, 09:14.

  • #2
    bitte http://www.php-resource.de/forum/sho...threadid=50454 beachten!

    die bedingung bei
    PHP-Code:
    while(($data fgetcsv ($datei$dateigroesse";"))!=false
    wird offensichtlich 2 mal true.
    liegt doch an dir zu überprüfen, ob es an den daten liegt oder an der bedingung..

    Kommentar


    • #3
      Original geschrieben von penizillin
      liegt doch an dir zu überprüfen, ob es an den daten liegt oder an der bedingung.. [/B]
      Tut mir leid, versteh dich nicht. Ich hab es doch schon zig mal überprüft und finde den Fehler einfach nicht. Deswegen komm ich doch hier ins Forum.

      Kommentar


      • #4
        Length muss größer sein als die längste in der CSV-Datei vorhandene Zeile (um das Erkennen von EndOfLine (Ende der Zeile) Zeichen zu ermöglichen).
        Aus dem Manual
        PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

        Kommentar


        • #5
          Hi Floriam!

          Erstmal danke für deine Antwort.
          Aber könntest du mir das ein bisschen näher erklären, weiß noch nicht was du damit meinst.
          Welches Manual meinst du denn?
          Und wo genau steht es?

          Vielen Dank, Gruß Vita

          Kommentar


          • #6
            Welches Manual meinst du denn?
            Dieses hier.

            Kommentar


            • #7
              Vielen Dank, werd es mir anschauen!

              EDIT: Ich versteh das mit dem length noch nicht so ganz, wo komm Length denn überhaupt vor, bzw. was ist damit gemeint?

              EDIT die 2te: Ok, habs gefunden, ist der 2te Parameter von fgetcsv.
              Vielen Dank für die Hilfe!!!
              Zuletzt geändert von VitaminB5; 03.04.2005, 11:23.

              Kommentar

              Lädt...
              X