wo kommt die leerzeile her?

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

  • wo kommt die leerzeile her?

    Hallo,

    vermutlich seh ich den Wald vor lauter Bäumen nicht - folgendes Problem:

    Aus einer Datei (users.cfg) möchte ich eine bestimmte Zeile herausfiltern, einen Teil in der Zeile (eine andere mailadresse) verändern und das ganze wieder neu in die users.dfg hineinschreiben. Alles funktioniert prima, aber wenn ich mir die users.cfg hinterher ansehe, dann ist vor die veränderte Zeile eine Leerzeile geschrieben worden - und ich raff nicht warum! Was ich schon alles getrimmt habe ... Weiß jemand weiter?

    Hier der Code
    PHP-Code:
     if (isset($_REQUEST['mail']))
                            
    // Daten kommen aus einem Formular 
                                
    {
                                    
    // erster Teil: Zusammenstellen der neuen Zeile
                                   // das ist die neu angegebene Mailadresse
                                    
    $mail =  $_REQUEST["mail"];
                                    
    // Mailadresse wird getrimmt ...
                                    
    $mail trim ($mail);
                                    
    // an die fünfte Stelle wird die neue Maildresse eingetragen
                                    
    $client[4] = $mail;
                                    
    // zur Sicherheit trimme ich mal hier ...
                                    
    $client[4] = trim($client[4]);
                                    
    // nun wird die Zeile mit den neuen Daten zusammengesetzt
                                    
    $refreshclient implode ("|",$client);
                                    
    // ich kann mir das trimmen nicht verkneifen ...
                                    
    $refreshclient trim($refreshclient);
                                    
    // nun kommt der zweite Teil: Einfügen der neuen Zeile
                                    // dat2 wird die users.cfg als array zugewiesen
                                    
    $dat1 "../Admin/users.cfg";
                                    
    $dat2 file($dat1);

                                    
    // an der richtigen Stelle wird die oben zusammengestellte Zeile eingefügt
                                    
    $dat2[$c] = $refreshclient;
                                    
    $dat2[$c] = trim($dat2[$c]);
                                    
    // in dieser for-Schleife werden die einzelnen Felder des
                                    // array getrimmt
                                    
    $i count("$dat2");
                                    for (
    $f 0$f <= $i$f++)
                                    {
                                    
    $dat2[$f] = trim($dat2[$f]);
                                    }
                                    
    // dritter Teil: wieder die users.cfg erneuern
                                    // nun wird die unsers.cfg zum Schreiben geöffnet
                                    
    $dat3 fopen ("../Admin/users.cfg" "w");
                                    
    // hier wird aus demm array $dat2 der string $dat4 gemacht
                                    
    $dat4 implode ("\n" $dat2);
                                    
    // dat4 hatte ich mal getrimmt, bringt aber nichts ..
                                    // über die users.cfg drübergeschrieben
                                    
    fwrite ($dat3 $dat4);
                                    echo 
    "<br>Ihre neue Mailadresse $mail ist eingetragen worden.";
                                    
    // und zum guten Schluß zugemacht
                                    
    fclose ($dat3);

                                }
                        }
    // Ende if
                     
    $c++; 
    Gruß!

    Elke

    EDIT:
    php-tags sponsored by wurzel
    Zuletzt geändert von Wurzel; 01.09.2004, 10:01.

  • #2
    kann es sein, dass in dem array, das du zurückschreibst ein _leerer_ eintrag existiert? ... mach mal vor dem fopen():
    PHP-Code:
    echo '<pre>';
    print_r($dat2);
    echo 
    '<pre>';
    exit; 
    Kissolino.com

    Kommentar


    • #3
      Hallo Wurzel,

      ja, das ist der Fall.

      Aber ich trimme doch vorher alle Felder des arrays und auch der Neueintrag wird getrimmt. Deshalb habe ich echt null Ahnung, woher das kommt.

      Wenn ich - ohne die users.cfg händisch wieder zu korrigieren - nochmals eine Änderung der selben Zeile mache, dann kommen immer mehr Leerzeilen dazu ...

      Gruß!

      Elke

      Kommentar


      • #4
        das trimmen ändert nichts an einem leeren arrayeintrag ... prüf in deiner for-schleife einfach, ob $dat2[$f] empty() ist, wenn ja, schmeiss es mit unset() raus. dann sollte es eigentlich passen.
        Kissolino.com

        Kommentar


        • #5
          PHP-Code:
          $i count("$dat2"); 
          was denkst Du, was in $i steht?
          naja, egal wie groß dein Array ist, aber $i ist immer 1.

          Ich sag's noch einmal ganz klar: benutzt keine Qzotes, wenn es kein
          literaler Ausdruck ist.
          Hiervon gibt es nur sehr wenige Ausnahmen, aber die kommen viel später.

          Warum setzt Du eine Variable in Anführungszeichen ? Los sag es!

          womit schaust Du Dir die users.cfg hinterher an, ist es viell. ein
          0x0d, 0x0a Problem zwischen verschiedenen OS?

          nice day
          Quickborner

          Kommentar


          • #6
            Erst mal Danke an Wurzel für seine Hilfe!

            Hallo Quickborner,

            das war es tatsächlich!

            Ganz profan: Es stand so in meinem Buch ... - als Newbie hab ich mir da noch keine Gedanken drüber gemacht (eher mit anderen Problemen gekämpft ...). Aber ich schreib es mir hinter die Ohren! Danke!

            Schönen Tag Euch allen!

            Elke

            Kommentar

            Lädt...
            X