str_replace (doesn't write into file)

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

  • str_replace (doesn't write into file)

    Bei diesem Script soll der vorhandene Username $arr[0] durch den neuen Usernamen $new_username ersetzt werden. Habe schon geprüft ob $arr[0] oder $new_username leer sind. Dies ist aber nicht der Fall...
    Sieht jemand den Fehler, warum das Überschreiben der Datei nicht funktioniert?

    PHP-Code:
    <?php
    //Userdaten ändern

    if ($_POST["newusername"]) {

    $new_username $_POST["new_username"];

       
    $old_file fopen("user.txt","a");

    echo 
    "alter User: $arr[0]<br>";
    echo 
    "neuer User: $new_username<br>";

       while(
    $line=fgets($old_file,300)) {
       
    $arr explode("|",$line);

       
    $old_file str_replace($arr[0], $new_username$old_file);
                                      }

       echo
    "Daten geändert: $new_username";

       
    fclose($old_file);
    }

    else {
          echo
    "Datei konnte nicht zum Schreiben geöffnet werden! (CHMOD != 777)";
         }

    ?>

  • #2
    kommt eine fehlermeldung ?

    Kommentar


    • #3
      Re: str_replace (doesn't write into file)

      if ($_POST["newusername"]) {
      $new_username = $_POST["new_username"];

      dir fällt ein unterschied auf ...?

      wenn zweitere die richtige schreibweise der variabeln ist, dann geht er mit der ersten, falschen scheibweise sicher gar nicht erst in den if-zweig hinein.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        nein, keine Fehlermeldung..

        Kommentar


        • #5
          mh.. nur mal so, wo schreibst du in die datei ?

          Kommentar


          • #6
            Original geschrieben von MoRtAlAn
            mh.. nur mal so, wo schreibst du in die datei ?
            eine weitere gute frage *g*
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Original geschrieben von MoRtAlAn
              mh.. nur mal so, wo schreibst du in die datei ?
              Ich dachte, dass ich das mit ereg mache:

              str_replace($arr[0], $new_username, $old_file);

              Kommentar


              • #8
                Re: Re: str_replace (doesn't write into file)

                Original geschrieben von wahsaga
                if ($_POST["newusername"]) {
                $new_username = $_POST["new_username"];

                dir fällt ein unterschied auf ...?

                wenn zweitere die richtige schreibweise der variabeln ist, dann geht er mit der ersten, falschen scheibweise sicher gar nicht erst in den if-zweig hinein.
                Das ist schon richtig..., dass soll so

                <form action="<?php echo "$PHP_SELF"; ?>" method="POST">
                Username ändern: <input style="width:180;" type="Text" name="new_username" size="" maxlength="8">
                <input style="width:100;" type="Submit" name="newusername" value="Name ändern">
                </form>

                Kommentar


                • #9
                  Original geschrieben von alexs
                  Ich dachte, dass ich das mit ereg mache:

                  str_replace($arr[0], $new_username, $old_file);
                  str_replace != ereg

                  lies er mal hier:
                  http://de2.php.net/manual/de/function.fwrite.php

                  Kommentar


                  • #10
                    Original geschrieben von MoRtAlAn
                    http://de2.php.net/manual/de/function.fwrite.php [/B]
                    Dort finde ich nicht, wie ich ein vorhandenes Wort ersetzen kann...

                    Kommentar


                    • #11
                      mittels folgender vorgangsweise:

                      datei öffnen (mit dem richtigen parameter!! -> siehe manual)
                      string auslesen
                      string bearbeiten (ersetzen, was ersetzt werden muss)
                      datei neu schreiben (wenn es nicht angehangen werden soll -> siehe richtige parameter)
                      fliehandler schliessen.

                      damit kommst du ohne die stringbearbeitung auf 4 zeilen code...

                      wenn ich dich richtig verstanden habe, kommt die Ersetzung nochmal auf ca. 2-4 zeilen!

                      einfach ein bisschen ausprobieren!

                      gruss

                      Kommentar


                      • #12
                        Original geschrieben von alexs
                        Dort finde ich nicht, wie ich ein vorhandenes Wort ersetzen kann...
                        ach ja, du sollst das wort damit auch nicht ersetzen! außerdem war das nicht meine aussage!

                        ich zitiere mich mal:
                        mh.. nur mal so, wo schreibst du in die datei ?

                        Kommentar


                        • #13
                          Danke für deine Bemühungen, ich tüftle dann nochmal ein bißchen

                          Kommentar


                          • #14
                            Original geschrieben von alexs
                            Dort finde ich nicht, wie ich ein vorhandenes Wort ersetzen kann...
                            du solltest dir erst einmal klar machen, dass "wort in einem string ersetzen" und "string in eine datei" schreiben zwei unabhängig voneinander zu lösende teilaufgaben sind.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              Jetzt bin ich am Ende meiner Nerven
                              Kann sich jemand bitte nochmal bitte mein Replacement anschauen, dass ich hier überarbeitet und durchdacht habe?

                              PHP-Code:
                              //Userdaten ändern

                              $new_username $_POST["new_username"];

                              $file fopen("user.txt","w");
                              while(
                              $line=fgets($file,300)) {
                                 
                              $arr explode("|",$line);
                                                            }
                                 
                              $arr ereg_replace($arr[0], $new_username$line)

                                 
                              flock($file,2);
                                 
                              $split chr(13) . chr(10); //13 entspricht CR = Carriage Return = Wagenrücklauf
                                                                //und 10 entspricht LF = Line Feed = Zeilensprung
                                 
                              fwrite($file"$new_username|$password|$firstname|$surname|$email$split");
                                 
                              flock($file,3);
                              fclose($file); 

                              Kommentar

                              Lädt...
                              X