Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] csv-Datei Zeile ändern

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] csv-Datei Zeile ändern

    Moin Forum,

    ich versuche gerade, in einer CSV-Datei eine bestimmte Zeile zu ändern.
    Die Datei ist wie folgt aufgebaut:
    PHP-Code:
    1;1-2;
    2;4-11;
    3;5-10;
    4;6-9;
    5;7-8;
    6;9-5;
    7;8-6
    Mit folgendem Code versuche ich, eine bestimmte Zeile anhand der 1. Spalte zu identifizieren und diese dann um einen weiteren eintrag zu ergänzen, dass nachher folgender Eintrag entsteht:
    PHP-Code:
    1;1-2;
    2;4-11;
    3;5-10;
    4;6-9;1:1
    5
    ;7-8;
    6;9-5;
    7;8-6
    PHP-Code:
    if(($fp fopen($tdatei,"r+")) !== false)
    {
        while ((
    $data fgetcsv($fp,5000,";"))!== false)
        {
            if (
    $data[0]==$_POST['spiel'])
        {
            
    fputs($fp$data[0] . ";" $data[1] . ";" $_POST[$sa] . ":" $_POST[$sb]);
        }
        }
    }
    fclose($fp); 
    Es wird zwar was eingetragen, aber irgendwie haut der Pointer da wohl nicht genau hin. Vielleicht kann mir jemand einen Tipp geben...
    Danke schon mal...
    lg micha


  • #2
    Habs hinbekommen, ich hatte die falsche Funktion am Wickel

    PHP-Code:
            if(($fp fopen($tdatei,"r")) !== false)
            {
                
    $csv_array = array();
                while ((
    $data fgetcsv($fp10000";")) !== FALSE
                {
                    
    $csv_array[] = $data;
                }
                
    fclose($fp);
            }
            foreach (
    $csv_array as &$line
            {
                if(
    $line[0] == $_POST['spiel'])
                {
                    
    $line = array($line[0],$line[1],$_POST[$sa] . ":" $_POST[$sb]);
                }
             }
            
    $fp fopen($tdatei'w');
            foreach ( 
    $csv_array as $fields 
            {
                
    fputcsv$fp$fields";" );
            }
            
    fclose($fp); 
    Vom Prinzip her recht einfach, ...
    * datei in array einlesen
    * array durchsuchen, bearbeiten,
    * datei wieder zurückschreiben...

    Danke lg micha

    Kommentar


    • #3
      Dein Dateizugriff ist nicht ganz sauber (Fehlerbehandlung im zweiten Fall, Locking insgesamt) und $csv_array = array(); müsste vor der ersten if-Zeile stehen, da es sonst möglicherweise weiter unten nicht deklariert ist.

      Zudem wäre es blöd, wenn das Auslesen nicht klappt, das Schreiben dann aber schon.

      Wenn ich halbwegs richtig interpretiere, was du machst[1]: Nutze eine Datenbank. Das zahlt sich üblicherweise nahezu sofort aus. Muss ja nicht PostgreSQL oder MySQL sein. Eine dateibasierte Lösung wie SQLite wäre auch denkbar.



      1: Ablegen von Spielergebnissen zwischen zwei Mannschaften für etwa Fußball?

      Kommentar


      • #4
        Bitte keine alten (2012!) Threads missbrauchen. Ich verschiebe das in einen neuen Thread.

        MOD: Geschlossen
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar

        Lädt...
        X