Probleme beim Schreiben von text....

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

  • Probleme beim Schreiben von text....

    Hallo auch habe Problem mit Textbearbeitung mit PHP
    Hier das script, wenn ich bei // anfügen der Daten in den zeilen... die variabel $datei2 durch echo ersteze zeigt er das ergebniß richtig an.
    aber abspeichern tut er was anderes. Hat jemand eine idee was falsch mache ??
    PHP-Code:
    // anfügen der Daten in den zeilen... 
    $lines file ($uploaddir.$filename);
    foreach (
    $lines as $line_num => $line) {
    $ln sprintf ("%04d"$line_num);
    $str $line;
    $str1 strlen($line);
    $str2 $str1+11;
    $datei2 str_pad($line$str2 ';"'.$ln.'";"0"');

    }
     
    // datei neu schreiben
    $fp=fopen($uploaddir.$filename,"w");
    for(
    $i=0;$i<$l;$i++){
    fputs($fp,$datei2[$i]);
    }
    fclose($fp);

    $lines file ($uploaddir.$filename);
    foreach (
    $lines as $line_num => $line) {
    echo 
    "Line #<b>{$ln} länge #{$str1}</b> : " htmlspecialchars($line1) .   "<br>\n";

    Also bevor die die routine läuft sieh der text so aus:
    "";"9";"Zimny Marion"
    "";"9";"Zwingmann Michael"

    Dann nach der routine kommt der rest an jede zeile:
    "";"9";"Zimny Marion" ;"0207";"0"
    "";"9";"Zwingmann Michael" ;"0208";"0"

    Die anzeige innerhalb der routine läuf korrekt, nur abspeichern macht er,
    Line #0209 länge #11 :
    Line #0209 länge #11 :

    Das sind in dem beispiel 209 zeilen nur der name ändert sich, ich möchte dann im nächsten programmabschnitt die daten so aufbereitet in eine sql tabelle importieren.

  • #2
    weil du in der ersten foreach-schleife jedesmal die variablen überschreibst. nutze dafür ein array. btw: wo kommt das $l her?
    PHP-Code:
    for($i=0;$i<$l;$i++) 
    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      AW: Probleme datei schreiben...

      // datei neu schreiben
      $L=count($lines);
      $fp=fopen($uploaddir.$filename,"w");
      for($i=0;$i<$L;$i++){
      fputs($fp,$datei2[$i]);
      }
      fclose($fp);

      So das mit $l hab ich auch geändert, der hatte noch nen anderen und falschen wert. Aber das ändert leider nicht mein Problem.

      Was ich jetzt allerdings nicht ganz verstehe ist wieso ein echo das richtige ergebnis mit 210 Zeilen liefert aber $datei diese nicht aufnimmt ? Ich dachte ich würde so $datei zum array machen ?


      Kommentar


      • #4
        1. teste erst mal folgendes:
        PHP-Code:
        ...
        $fp=fopen($uploaddir.$filename,"w");
        print_r($datei2); 
        2. und dann mal das hier:
        PHP-Code:
        foreach ($lines as $line_num => $line) {
           ...
           
        $datei2[] = str_pad($line$str2 ';"'.$ln.'";"0"');
        }
        ...
        $fp=fopen($uploaddir.$filename,"w");
        print_r($datei2);
        ... 
        bemerkst du einen unterschied? lies ggf. mal mein tutorial zum thema fehlersuche

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

        Kommentar


        • #5
          AW: Probleme datei schreiben...

          ok das mit dem array habe ich nun auch verstanden ...
          print_r gibt auch das aus was ich gerne hätte.
          $i zählt auch richtig, nun bekomme ich 210 zeilen
          Line #0209 länge #11 immer das gleiche.

          Ich denke die funktion schreibt nun Zeile für Zeile aus array $datei2 in meine Datei... tut sie aber nicht !?
          Warum überscheibt er beim schreiben alles mit der letzten zeile in der anzeige ?
          Und in der datei wenn ich diese öffne ist alles beim alten stand.
          Also gar nix verändert.
          Grummel...


          PHP-Code:
          // anfügen der Daten in den zeilen... 
          $lines file ($uploaddir.$filename);
          foreach (
          $lines as $line_num => $line) {
          $ln sprintf ("%04d"$line_num);
          $str $line;
          $str1 strlen($line);
          $str2 $str1+11;
          $datei2[] = str_pad($line$str2 ';"'.$ln.'";"0"');

          }
           
          // datei neu schreiben
          $L=count($datei2);
          echo 
          $L;
          $fp=fopen($uploaddir.$filename,"w");
          print_r($datei2);
          for(
          $i=0;$i<$L;$i++){
          fputs($fp,$datei2[$i]);
          }
          fclose($fp);

          $lines file ($uploaddir.$filename);
          foreach (
          $lines as $line_num => $line) {
          echo 
          "Line #<b>{$ln} länge #{$str1}</b> : " htmlspecialchars($line1) .   "<br>\n";

          Kommentar


          • #6
            schau dir mal genau die parameter für fopen an, besonders a und a+

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

            Kommentar


            • #7
              AW: Probleme datei schreiben...

              Grummel...
              egal was ich mache, habe alles mit print_r und echo gescheckt, die inhalte sind ok. egal ob mit a r w usw...

              wenn ich print_r oder echo $fp mache kommt:
              Resource id #15
              was heist das ?

              Die ausgabe sowie die datei bleiben unverändert

              Schreib und leserechte sind gegeben ....

              bin ratlos.
              Zuletzt geändert von ronaldl; 17.10.2007, 07:08.

              Kommentar


              • #8
                mal daran gedacht, die letzten schleife in die vorletzte zu packen und dort die entsprechenden ausgaben zu machen?

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

                Kommentar


                • #9
                  Ich verstehe nicht, warum du zuerst deine Dtei in einen Array liest, dann diesen Array in einer Schleife mit Ergänzungen in einen andern Array schreibst und schliesslich in einer neuen Schleife diesen erzeugten Array wieder in eine Datei schreibst (und wahrscheinlich später diese Datei in einer neuen Schleife noch in die DB schreibst). Das geht doch alles in einem und ergibt dann (ohne Ausgabe), grosszügig gerechnet, sechs Zeilen:
                  PHP-Code:
                  $lines file($uploaddir.$filename);
                  $fp fopen($uploaddir $filename"w");
                  foreach (
                  $lines as $line_num => $line) {
                      
                  fprintf($fp'%s;"%04d";"0"'$line$line_num);
                  }
                  fclose($fp); 
                  Und rücke bitte deinen Code ein, ich habe keine Lust, immer den Anfang und das Ende einer Schleife zu suchen.
                  Gruss
                  H2O

                  Kommentar


                  • #10
                    AW: Probleme datei schreiben...

                    Nee nee da habt Ihr was falsch verstanden.

                    1te Scleife bearbeitet Text das funkioniert laut print_r

                    Das speichern verweigert den Dienst, er speichert aus mir unverständlichen Gründen $datei2 nicht ab.

                    Die dritte schleife verschwindet wieder sobald das speichern geht, und wird durch einen sql-import esetzt. Diese ist praktisch nur kontrollfunktion.

                    mfg Ronny

                    Kommentar


                    • #11
                      Re: AW: Probleme datei schreiben...

                      Original geschrieben von ronaldl
                      Nee nee da habt Ihr was falsch verstanden.
                      Ich habe überhaupt nichts falsch verstanden, aber du hast entweder meinen Code nicht verstanden, oder gar nicht angeschaut. Der macht genau dasselbe, wie deine ersten zwei Schleifen. Und das die dritte wieder verschwindet hab ich angenommen, darum ist sie auch nicht da. Aber du kannst die Datei ja auch mit
                      PHP-Code:
                      echo file_get_contents($uploaddir $filename); 
                      zu Kontrolle ausgeben.
                      Gruss
                      H2O

                      Kommentar

                      Lädt...
                      X