rekursives Löschen wird nicht ausgeführt

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

  • rekursives Löschen wird nicht ausgeführt

    Hallo,

    Hab einige Dateien in der 1. Ordnerebene. Da liegt auch die index.php
    Ich habe alles in einer Datei (der Index.php)
    Ich versuche eine der Dateien zu löschen, samt Unterverzeichnissen.
    Leider passiert garnichts, außer meine Bestätigung, dass ein vorher eingegebener Ordner gelöscht sei. Leider ist der Ordner samt Unterverzeichnissen noch vorhanden.

    PHP-Code:
    }else if(isset($delverz)){    
    if(!isset(
    $proj)){



    echo
    "
                      Ein Projekt löschen
                        <br>
                        <br>
                          <form action=\"./index.php?unter=&indexseite=admin\" method=\"post\" name=\"form3\">
                            Name des Projektes:
                              <input type=\"text\" name=\"proj\">
                              <input type=\"submit\" name=\"Submit\" value=\"löschen\">
                              <input type=\"hidden\" name=\"pwd\" value=\"
    $pwd\">
                              <input type=\"hidden\" name=\"delverz\" value=\"delverz\">
                                <br>  
                                <br>
                           </form>
                              <a href=\"./index.php?pwd=
    $pwd&indexseite=admin&unter=\">
                                  zur&uuml;ck zum Adminbereich
                              </a>"
    ;

    }else{   

    function 
    rmdir_rekursive($proj// Aufruf mit dem zu löschenden Verzeichniss
    {
       
    $verzeichnisseintraege glob($proj.'/*'); // ganzes Verzeichniss einlesen
        
    foreach($verzeichnisseintraege as $opfer//alle Einträge durchlaufen
        
    {
            if (
    is_file($opfer)) // ist $opfer eine reguläre Datei?
            
    {
              
    unlink($opfer);    // dann  lösche es
            
    }elseif (is_dir($opfer))  // oder wenn $opfer ein Verzeichnis ist
            
    {
                
    // rufe dich selbst mit dem zu löschenden Verzeichniss wieder auf
                
    rmdir_rekursive($opfer);
                
    rmdir($opfer); // dann lösche das leere Verzeichnis
            
    }
        }
    }

           echo
    "
              Das Projekt \"
    $proj\" wurde erfolgreich gelöscht
              <br>
              <br>
                 <a href=\"./index.php?pwd=
    $pwd&indexseite=admin\">
                    zur&uuml;ck zum Adminbereich
                 </a>"
    ;


    Ausgabe der Funktion (Ausschnitt aus einer Tabelle weiter unten im Skript)

    PHP-Code:
    <td width="158\">
                                <div align=\"center\">
                                  <a href=\"./index.php?unter=&indexseite=admin&pwd=
    $pwd&delverz=\">
                                    <img src=\"http://www.\">
                                  </a>
                                </div>
                              </td> 
    Wer Rechtschreibfehler findet, darf sie behalten

  • #2
    Die Funktion wird nirgends aufgerufen.

    Kommentar


    • #3
      ? kannst du was deutlicher werden?
      was muss denn da sein um sie aufzurufen?
      Wer Rechtschreibfehler findet, darf sie behalten

      Kommentar


      • #4
        Original geschrieben von fx001
        ? kannst du was deutlicher werden?
        was muss denn da sein um sie aufzurufen?
        rmdir_rekursive($proj) wäre der funktionsaufruf.

        du hast die funktion lediglich definiert: function rmdir_rekursive($proj){...} aber nirgends aufgerufen.

        Kommentar


        • #5
          Danke für den Hinweis! Leider immer nochn Problem.

          Nach deinem Hinweis wird die Funktion endlich ausgeführt, nur leider löscht der nur das was in dem Ordner ist, aber nicht sich selbst.
          Die letzten 2 Befehle in der Funktion sollten das doch eigentlich machen oder?

          Falls was am Ziel falsch sein sollte
          Ordnerstruktur

          index.php
          Projektordner 1 (mit Inhalt)

          Das Skript soll jetzt $proj und seinen Inhalt löschen. Der Inhalt wird gelöscht, nicht aber der eigentliche Ordner selbst.
          Was muss ich ändern?
          Wer Rechtschreibfehler findet, darf sie behalten

          Kommentar


          • #6
            Was muss ich ändern?
            Ich vermute mal dass dieser Verzeichnis noch leere Unterverzeichnisse enthält. Und solange die vorhanden sind kann das Verz imho nicht gelöscht werden.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              ne, sind nur ne index.php drin und ne .txt, kein weiterer Ordner.
              Wer Rechtschreibfehler findet, darf sie behalten

              Kommentar


              • #8
                Ist das Verzeichnis nun leer oder nicht ? Wenn nicht dann ist nix mit löschen.

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  nachdem ich den Ordner in angegeben habe und auf löschen bin, löscht der den Ordnerinhalt. Dann ist Projektordner 1 leer aber selber nicht gelöscht!
                  Wer Rechtschreibfehler findet, darf sie behalten

                  Kommentar


                  • #10
                    PHP-Code:
                    function rmdir_rekursive($proj// Aufruf mit dem zu löschenden Verzeichniss
                    {
                       
                    $verzeichnisseintraege glob($proj.'/*'); // ganzes Verzeichniss einlesen
                        
                    foreach($verzeichnisseintraege as $opfer//alle Einträge durchlaufen
                        
                    {
                            if (
                    is_file($opfer)) // ist $opfer eine reguläre Datei?
                            
                    {
                              
                    unlink($opfer);    // dann  lösche es
                            
                    }elseif (is_dir($opfer))  // oder wenn $opfer ein Verzeichnis ist
                            
                    {
                                
                    // rufe dich selbst mit dem zu löschenden Verzeichniss wieder auf
                                
                    rmdir_rekursive($opfer);
                                
                    rmdir($opfer); // dann lösche das leere Verzeichnis
                            
                    }
                        }
                        try{
                            
                    rmdir($proj);
                        }catch(
                    Exception e){
                        
                        }

                    funzt es denn so ? Denn rmdir($proj) wird von der Fkt nicht aufgerufen. Am Anfang ist der Ordner ja nicht leer.

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Sitzen die Klammern richtig? Der sagt mir inder Zeile try wär ne unerwartete {
                      Wer Rechtschreibfehler findet, darf sie behalten

                      Kommentar


                      • #12
                        mal ne andere vermutung:
                        liegen in den verzeichnissen versteckte dateien? .htaccess z.b.
                        die werden von glob per default nämlich nicht angezeigt.

                        Kommentar


                        • #13
                          Müssten eigentlich ok sein. Alternativ könntest du noch folgendes probieren
                          PHP-Code:
                          @rmdir($proj); 
                          ohne try.. catch

                          Gruss

                          tobi
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            ahh, seh schön funktioniert endlich !

                            Besten Dank fx
                            Wer Rechtschreibfehler findet, darf sie behalten

                            Kommentar

                            Lädt...
                            X