Probelm mit Schreiben in csv-Datei

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probelm mit Schreiben in csv-Datei

    Hi,

    ich möchte Daten aus einer cvs-Datei einlesen, dann das erste Feld einer jeden Zeile durch den Inhalt eines Textfeldes ersetzen, und in eine zweite Datei schreiben.
    Hier erst einmal mein Code:
    PHP Code:
    $lines file ('datei1.csv');

    $file fopen('datei2.csv','w');

    foreach (
    $lines as $line) {
    $i++;
    list (
    $Zusagen$Personen$Name$Strasse$PLZ$Ort$Vorwahl$Telefon) = split(';'$line);
    $list = array($Anzahl+$i$Name$Strasse$PLZ$Ort$Vorwahl$Telefon);
    fputcsv($file,$list);
    }
    fclose($file); 
    Mein Problem ist nun, dass er "" um einige Einträge in der neuen csv-Datei gesetzt hat. Wie bekomme ich die wieder weg?

    Mein zweites Problem betrifft die Textfelder. So erzeuge ich sie, wenn ich die Datei lese:
    PHP Code:
    echo"<input type='Text' name='Anzahl",i,"' value='",$Daten[0],"' size='2'>"
    i läuft bei jedem Zeilendurchlauf. Doch wie muss ich das $Anzahl+$i richtig schreiben, damit ich den Inhalt des Textfeldes bekomme?

    Jetzt schon einmal vielen Dank im Voraus!!!

  • #2
    Doch wie muss ich das $Anzahl+$i richtig schreiben, damit ich den Inhalt des Textfeldes bekomme?
    zeichenkettenverknüpfung -> grundlagen!!!
    PHP Code:
    echo '<input type="text" name="Anzahl'.$i.'"  value="'.$Daten[$i][0].'" size="2">'
    so sol das wohl aussehen, oder?

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Comment


    • #3
      Re: Probelm mit Schreiben in csv-Datei

      Original geschrieben von Ozzy
      Mein Problem ist nun, dass er "" um einige Einträge in der neuen csv-Datei gesetzt hat. Wie bekomme ich die wieder weg?
      RTFM:
      http://www.php.net/manual/de/function.fputcsv.php

      Probiere, ob sich für den Parameter enclosure auch ein Leerstring übergeben lässt (wenn nicht, musst du dir wohl selber eine simple Funktion zum schreiben basteln).


      Der möglichen Konsequenzen eines fehlenden enclosure um Datenfelder wo es nötig wäre sei dir dabei aber bitte bewusst ...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Comment


      • #4
        Hatte ebenfalls das Problem mit den "". Ein leerzeichen als enclosure geht leider nicht.

        Habe dann einfach die Datei n 2. Mal geöffnet und die "" durch nix ersetzt.

        PHP Code:
        //Reinigen der fertig.csv von den Gänsefüßchen
        //LESEN
        $fh fopen('fertig.csv''r');
        $gelesen fread($fh,10000000);
        fclose($fh);
        //Ersetzen der Gänsefüsschen durch nichts
        $ersetzt str_replace('"','',$gelesen);
        //SCHREIBEN
        $fh fopen('fertig.csv''w');
        fwrite($fh$ersetzt);
        fclose($fh);
        echo(
        'Fertig!!!'); 
        Funktionier bei mir ohne Probleme.

        PS: Bei CSV Dateien ist es u. U. eh egal ob "" oder nicht, solange das Trennzeichen einzigartig als Trennzeichen bleibt.

        Mfg Takeliner

        Comment


        • #5
          Schon einmal vielen Dank für die ganze Hilfe!

          Doch wie komme ich an den Inhalt der Felder ran? Hatte das hier probiert:
          PHP Code:
          $j=1;
          if (isset(
          $_REQUEST['speichern'])) {
             echo (
          $Anzahl.$j);

          Aber da gibt er mir auch nicht den Inhalt des Textfeldes "Anzahl1" wieder...

          Könnt Ihr mir dabei vielleicht noch einmal helfen?

          MfG, Ozzy

          Comment


          • #6
            Schau dir mal die Beispiele auf http://php.net/fgetcsv und http://php.net/fputcsv an.

            Comment


            • #7
              Hab ich gemacht; aber da stand auch nicht das, was ich suche...

              Comment


              • #8
                so richtig weisst du doch garnicht was du da machst oder?
                tutorial: peterkropff.de schattenbaum.de tut.php-quake.net
                documentation: php.net mysql.com framework.zend.com

                Die Nachtwache!

                Comment


                • #9
                  Doch, eigentlich schon.
                  Also das mit der csv-Datei habe ich nun hinbekommen, also, dass ich keine "" mehr habe. Aber ich habe immer noch das Problem, meine Textfelder auszulesen, die dann ja auch in die Datei reingeschrieben werden sollen. Vielleicht kann ich es ja noch einmal besser erklären:

                  ich öffne die csv-Datei, und die erste Spalte wird in ein Textfeld geschrieben, was bei mir so aussieht:
                  PHP Code:
                  echo"<input type='Text' name='Anzahl".$j."' value='".$Daten[0]."' size='2'>"
                  So, nun will ich die (geänderten) Daten ja auch wieder in meine Datei zurückschreiben, und das gelingt mir nicht, da ich nicht weiß, wie ich an den Inhalt des Textfeldes rankomme, bzw., wie ich das schreiben muss. Hatte es mit
                  PHP Code:
                   echo $Anzahl.$j
                  probiert, mir mal den Inhalt anzugeben, aber das funzt nicht.

                  Könnt Ihr mir da vielleicht noch einmal weiterhelfen?
                  Vielen Dank schon einmal im Voraus!!!

                  Comment


                  • #10
                    PHP Code:
                    echo $_GET['Anzahl'.$j];
                    // bzw. echo $_POST['Anzahl'.$j]; 
                    Die Alternative wäre ein Array:

                    PHP Code:
                    echo '<input type="Text" name="Anzahl['.$j.']" value="'.$Daten[0].'" size="2">'
                    und dann greifst du so darauf zu
                    PHP Code:
                    echo $_GET['Anzahl'][$j];
                    // bzw. echo $_POST['Anzahl'][$j]; 

                    Comment


                    • #11
                      Jo, danke für Eure ganzen Bemühungen; ich habe es jetzt bis auf eine kleine Sache auch geschafft...

                      Das einzige Prob was ich noch habe, ist, dass er mir jetzt ans Ende einer jeden Zeile 3 Kästchen setzt, und ich ich nicht weiß, wie man die weg bekommt. Also hier noch einmal mein Code:
                      PHP Code:
                      <?
                      if (isset($_REQUEST['speichern'])) {

                      $i=0;
                      $lines = file ('datei.csv');

                      $file = fopen('datei.csv','w');

                      foreach ($lines as $line) {
                          $i++;
                          list ($Zusagen, $Personen, $Name, $Strasse, $PLZ, $Ort, $Vorwahl, $Telefon) = split(';', $line);
                          $list = array($_POST[Feld][$i], $Name, $Strasse, $PLZ, $Ort, $Vorwahl, $Telefon);
                          fputcsv($file,$list);
                      }
                      fclose($file);

                      //Reinigen der fertig.csv von den Gänsefüßchen
                      //LESEN
                      $fh = fopen('datei.csv', 'r');
                      $gelesen = fread($fh,10000000);
                      fclose($fh);
                      //Ersetzen der Gänsefüsschen durch nichts
                      $ersetzt = str_replace('"','',$gelesen);
                      //SCHREIBEN
                      $fh = fopen('datei.csv', 'w');
                      fwrite($fh, $ersetzt);
                      fclose($fh);
                      }
                      ?>
                      Habt Ihr da vielleicht noch eine Idee zu?

                      MfG, Ozzy

                      Comment

                      Working...
                      X