alle Zeilen werden gelöscht

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by Abraxax; 28-07-2003, 16: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;???

    Comment


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

      Comment


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

        Comment


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

          Comment

          Working...
          X