Probelm mit Schreiben in csv-Datei

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

  • 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

    Kommentar


    • #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.

      Kommentar


      • #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

        Kommentar


        • #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

          Kommentar


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

            Kommentar


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

              Kommentar


              • #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!

                Kommentar


                • #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!!!

                  Kommentar


                  • #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]; 

                    Kommentar


                    • #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

                      Kommentar

                      Lädt...
                      X