Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabe in CSV als Array

Einklappen

Neue Werbung 2019

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

  • Ausgabe in CSV als Array

    Hallo,
    ich habe ein Eingabefeld (wird per Barcodescanner eingegeben), diese Daten werden in eine tmp_daten.csv geschrieben und zur verbesserten Übersicht auch gleich ausgegeben.

    Wenn alle Daten erfasst wurden, gibt es ein Button "abschließen", dann sollen diese temporären Daten in die Gesamtdatei "daten.csv" gespeichert werden.

    Und dabei hackt es bei mir.
    Die TMP Datei wird richtig angelegt:

    Zeile 1: xxx
    Zeile 2: yyy
    Zeile 3: zzz


    Wenn ich das jetzt in die Gesamt Datei übertrage, sieht es so aus:

    Zeile 1: xxx,yyy,zzz

    Es muss aber in 3 Zeilen wie in der TMP Datei ausgegeben werden.
    Ich hatte es schon mit explode probiert, kam aber zu keinem Ergebnis


    Seht ihr meinen Fehler?


    PHP-Code:
    <?php
    $barcode 
    $_POST['barcode'];

    echo
    "
    <html>
     <head>
      <title>Toner Ausgabe</title>
      <link href='style.css' rel='stylesheet' type='text/css'>
      <script language='Javascript'>
       function Cursorsetzen()
       {
        window.eingabe.barcode.focus();
       }
      </script>
     <head>
     
     <body onLoad='Cursorsetzen()'>
     
     <form method='POST' name='eingabe'>
     
     <table border=0>
      <tr>
       <td colspan='2'><nobr><img src='logo.gif' align='left'><h1>Toner Ausgabe</h1></nobr><br><hr></td>
      </tr>

      <tr>
       <td><b>Barcode einscannen:</b></td>
       <td><input type='text' name='barcode'> </b> &nbsp; <nobr> <input type='submit' value='hinzuf&uuml;gen'></td>
      </tr></form>"
    ;
       
       if(
    $barcode!="")
       {   
         
    //Schreiben in TEMP CSV
         
    $temp = array($_POST['barcode']);
         
    $temp_fp fopen('temp_daten.csv''a');
         
    fputcsv($temp_fp$temp);
         
    fclose($temp_fp);   
        
         
    // Ausgabe   
         
    echo "<tr><td colspan='2'><hr><br><b>Bereits eingescannte Toner / Patronen:</b><br>";
         
    $datei fopen("temp_daten.csv""r");
         
    $data fgetcsv($datei1000);
         echo 
    "<form method='POST'>";
         while (
    $data
         {
          
    $ausgabe implode(","$data);
          echo 
    "- $ausgabe <br>";
          
    $data fgetcsv($datei1000);
          
          echo 
    "<input type='hidden' name='barcode_save[]' value='$ausgabe'>";
         }
         echo 
    "<br><input type='submit' name='save' value='Ausgabe abschlie&szlig;en'>&nbsp;<input type='submit' name='delete' value='Abbrechen'></form></td></tr>";      
        }
        
       if(isset(
    $_POST['save']))
        {
         echo 
    "<div><h4><u>Datei abgespeichert!</u></h4></div><br>";
         
         
    //Schreiben in Gesamt CSV
         
    $daten $_POST['barcode_save']; 
         
    $fp fopen('daten.csv''a');
         
    fputcsv($fp$daten);
         
    fclose($fp);

         
    // TEMP CSV löschen
         
    unlink('C:\inetpub\wwwroot\import\toner\temp_daten.csv');      
        }
        
       if(isset(
    $_POST['delete']))
        {    
         
    // TEMP CSV löschen
         
    unlink('C:\inetpub\wwwroot\import\toner\temp_daten.csv');     
        }
        
        echo
    "   
      </tr>
     </table>   
       "
    ;

    ?>
    Vielen Dank und beste Grüße


  • #2
    Das
    PHP-Code:
    $daten $_POST['barcode_save']; 
         
    $fp fopen('daten.csv''a');
         
    fputcsv($fp$daten);
         
    fclose($fp); 
    gegen das

    PHP-Code:
    file_put_contents('daten.csv'implode("\n"$_POST['barcode_save'])); 
    ersetzen.

    Kommentar


    • #3
      Hallo,
      danke, nur jetzt wird bei jedem Abspeichern die Datei neugeschrieben und die vorhandene Daten werden gelöscht.
      Die Eingaben sollen nur angefügt werden.


      Vielen Dank

      Matze

      Kommentar


      • #4
        Ev. mal in die Doku schauen? http://php.net/manual/de/function.file-put-contents.php

        flags
        ...
        FILE_APPEND
        Falls die Datei filename bereits existiert, füge die Daten an die Datei an anstatt diese zu überschreiben.
        ...
        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


        • #5
          Danke, jetzt steh ich kurz vorm Ziel

          PHP-Code:
          file_put_contents('daten.csv'implode("\n"$_POST['barcode_save']), FILE_APPEND); 
          Die Datei sieht jetzt so aus:

          Zeile 1: xxx
          Zeile 2: yyy

          Wenn jetzt beim nächsten Mal "zzz" gespeichert wird, sieht es so aus und es wird keine neue Zeile erzeugt:

          Zeile 1: xxx
          Zeile 2: yyyzzz

          so klappt es auch nicht:

          PHP-Code:
          file_put_contents('daten.csv'implode("\r\n"$_POST['barcode_save']), FILE_APPEND); 

          Was kann das noch sein?


          Vielen Dank

          Kommentar


          • #6
            Zitat von matze-pe Beitrag anzeigen
            Was kann das noch sein?
            Das Problem ist jetzt auf zwei Funktion beschränkt. Soviele mögliche Fehlerquellen gibts da nicht... schau in die Dokumentation und benutzt dein Kopf.

            Kommentar


            • #7
              Mit implode("\r\n" klappt es auch nicht, steh gerade auf schlauch.


              Lock_Ex brauch ich nicht, da nur ich in der Datei alleine schreibe

              Kommentar


              • #8
                danke habs, manchmal sieht man den wald vor lauter bäumen nicht

                Kommentar


                • #9
                  Zeig uns bitte noch wie, falls jemand auch mal so ein Problem hat. Danke!
                  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


                  • #10
                    Die Zeile mit \n ändern und unten bei implode("\n"..) das \n rausnehmen

                    PHP-Code:
                    <Input type=hidden Name=barcode_save value='$ausgabe \n'
                    Danke und schönen Abend

                    Kommentar

                    Lädt...
                    X