alle Zeilen werden gelöscht

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

  • alle Zeilen werden gelöscht

    hallo forum,
    hab mich schon im forum umgeschaut, auch schon viel gefunden, aber irgendwie will es nicht so richtig klappen.
    ich habe eine emailliste in einer textdatei. per formular übergebe ich eine emailadresse, die aus dieser liste gelöscht werden soll.

    bei mir werden aber immer alle email adressen gelöscht. warum?

    PHP-Code:
    if ( $submit == "austragen" )
        {
        echo 
    $newemail;                                                
        
    $fp fopen "emailliste.txt""r" );
        if ( 
    $fp <= )
            {
            echo 
    " Die Textdatei ist nicht vorhanden oder defekt!";
            }
        else
            {
            
    $nfp fopen "emailliste.txt.tmp""w");            
            while ( 
    feof $fp ) == )
                {
                echo 
    $email chop fgets $fp255 ));
                if ( 
    $email == "" )
                    {
                    continue;
                    }
                }
                
                if ( isset ( 
    $newemail ))
                    {
                    echo 
    "Sie wurden aus dem Emailliste gelöscht!";
                    } 
                else
                    {
                    
    fputs $nfp$newemail."\n" );                
                    }
            }
        
    fclose $fp );
        
    fclose $nfp );
        
    unlink "emailliste.txt" );
        
    rename "emailliste.txt.tmp""emailliste.txt");
        
        
        } 
    danke für eure hilfe!


    EDIT:
    php.tags by Abraxax
    Zuletzt geändert von Abraxax; 28.07.2003, 17:07.

  • #2
    blick noch nicht ganz durch, was du machst.


    ich würds so machen

    1) komplette datei in array schreiben (zeilenweise)
    2) emailadresse aus array löschen
    3) array in textdatei schreiben

    BTW: was macht continue;???

    Kommentar


    • #3
      Zuerst weißt Du den Dateinamen Deiner eMail-Liste einer Variablen zu.

      PHP-Code:
      $mesdat "emailliste.txt"
      Mit der folgenden Funktion auslesen() liest Du den gesamten Inhalt der Datei in ein Array.

      PHP-Code:
      <?
      function auslesen()
      {
      global $mesdat;
      global $dat;
      global $daten;
      global $PHP_SELF;
      if(file_exists($mesdat))
      {
      $dat=file($mesdat);
      $daten= array();
      for($i=0;$i<count($dat);$i++)
      {
      $daten[]=split("\*\|\*",$dat[$i]);
      }
      }
      }
      ?>
      Dann fügst Du folgenden Code ein. In diesem Fall wurden die Einträge in jeder Zeile durch *|* getrennt. Du musst also die Zeile
      PHP-Code:
      fputs($tempdat,$daten[$i][0]. "*|*" .$daten[$i][1]. "*|*" .$daten[$i][2]. "*|*" .$daten[$i][3]. "*|*" .$daten[$i][4]. "*|*\n"); 
      Deinem Skript anpassen.

      PHP-Code:
      auslesen();
      $tempdat=fopen($mesdat,"w"); #Datei zum überschreiben öffnen
      for($i=0;$i<count($daten);$i++)
      {
      if(
      $daten[$i][0]!=$loeschnr#nicht zum löschen markierte Daten zurückschreiben
      {
      fputs($tempdat,$daten[$i][0]. "*|*" .$daten[$i][1]. "*|*" .$daten[$i][2]. "*|*" .$daten[$i][3]. "*|*" .$daten[$i][4]. "*|*\n");
      }
      }
      fclose($tempdat); 

      Kommentar


      • #4
        hab es jetzt mal so gelöst,
        es werden die entsprechenden emails gelöscht, aber der Zeilenumbruch wird nicht entfernt
        PHP-Code:
        if ( $submit == "austragen" )
            {
            
        $fp fopen "emailliste.txt""r" );
            if ( 
        $fp <= )
                {
                echo 
        " Die Textdatei ist nicht vorhanden oder defekt!";
                }
            else
                {
                
        $nfp fopen "emailliste.txt.tmp""w");            
                while ( 
        feof $fp ) == )
                    {
                    
        $email chop fgets $fp255 ));
                    if ( 
        $email == $newemail )
                            {
                            echo 
        $email;
                            }
                    else
                        {
                        
        $new $email;
                        
        fputs $nfp$new."\n" ); 
                        }            
                    }
                    
                }
            
        fclose $fp );
            
        fclose $nfp );
            
        unlink "emailliste.txt" );
            
        rename "emailliste.txt.tmp""emailliste.txt");
            echo 
        "<meta http-equiv='refresh' content='0;URL=index.php'>";    
            } 
        wie kann ich den Zeilenumbruch der entfernten emailadresse noch verschwinden lassen?

        Kommentar


        • #5
          danke,
          hat sich erledigt, hab nur nicht gesehen, dass die zeilenumbrüchen nicht entfernt werden können, sondern nur nicht eingetragen werden sollen!

          Kommentar

          Lädt...
          X