Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP While-Schleifen-Problem

Einklappen

Neue Werbung 2019

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

  • PHP While-Schleifen-Problem

    Hallo,

    ich bins mal wieder.
    das eine Problem wurde gestern super schnell gelöst. Heute habe ich das nächste. Mit eine While-Schleife.

    Hab mir folgenden Code gebastelt.
    Er liest ein Verzeichnis aus, kürzt die Dateinamen und stellt diese in einem DropDown-Menü zur Verfügung.
    PHP-Code:
    <?php

    $i 
    0
    while(
    $datei readdir($verzeichnis))

      { 
    //Die Datein werden zeile für zeile  in die variable $datei geschrieben 
      
      //$datei = rename ($dateiorg, substr($dateiorg,-61,19));
      //echo $datei;
      

      
    if(substr($datei,-4)=='.wav' || substr($datei,-4)=='.dss')
      { 
            
      if (!
    is_dir($datei))
        {                 
    //Verzeichnisse sollen ja nicht dargestellt werden 
        
    $daten[$i] = "$datei";
            
    $i++;
        
    $filename "$verz$datei";


        if (
    file_exists($filename)) {
            
    //preg_match('Import-dss1@[a-zA-Z0-9_-]i{7}',$filename,$match);
            //$new_filename = $match[0] . end(explode(".", $filename));
            
    chmod($filename0777);
            
    $new_filename substr($filename,-12);
            
    rename($filename$verz $new_filename);
        }
        
        echo 
    "<option value=?cd=$ordner&data1=$new_filename>$new_filename</option>";
            
        
    //echo "<option value=?cd=$ordner&data1="; echo substr($datei,-61); echo ">"; echo substr($datei,-61); echo"</option>";
        


      } 
      }
    echo 
    "</select>";

    ?>
    Ich möchte jetzt dass bei dieser Schleife ein weiterer Befehl ausgeführt wird.
    für jede Datei einzeln.

    Der Befehl steht in der zip.php, wird dann also über Include eingefügt.
    Nur wo einfügen, dass für jede Datei der Befehl extra ausgeführt wird.
    Ich habe es nur geschafft, dass alles aus dem Verzeichnis immer verarbeitet wird, aber nicht jede Datei einzeln.

    Hoffe auf eure Hilfe.

    Danke.

  • #2
    der Befehl muss in den innersten Teil deiner While-schleife - da wo chmod (0777) gemacht wird und die Datei umbenannt wird ...
    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

    Kommentar


    • #3
      danke für die Antwort.
      leider hab ich das auch schon überall ausprobiert, auch dort in den innersten Teil der While-Schleife.

      Er erstellt zunächst immer ein komplettes Zip-Archiv.
      Erst nach auswahl der Datei legt der das passende Zip-Archiv an.

      Weitere Ideen? Kann doch nicht sein, dass das nciht zu lösen ist. Kostet mich alle smehr Zeit und Nerven als das komplette Projekt

      Danke im Voraus schon mal....

      Kommentar


      • #4
        wie ? komplettes Archiv - dann gib ihm doch die richtigen Parameter mit ...

        ich glaub mir dämmert langsam, was du eigentlich willst ...

        du musst die Datei packen, wo du das Formular verarbeitest ..

        also dessen Post-Daten ...
        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

        Kommentar


        • #5
          Ist das, wa in zip.php steht so geheim, dass du nicht darüber reden darfst?
          [PHP]if ($var != 0) {
          $var = 0;
          }[/PHP]

          Kommentar


          • #6
            so jetzt bin ich einen Schritt weiter.
            Hier mein Code:
            PHP-Code:
            <?php
            error_reporting
            (E_ALL);
            $i 0
            while(
            $datei readdir($verzeichnis))

              { 
            //Die Datein werden zeile für zeile  in die variable $datei geschrieben 
              
              //$datei = rename ($dateiorg, substr($dateiorg,-61,19));
              //echo $datei;
              
              
            if(substr($datei,-4)=='.wav' || substr($datei,-4)=='.dss')
              { 
                        
              if (!
            is_dir($datei))
                {                 
            //Verzeichnisse sollen ja nicht dargestellt werden 
                
            $daten[$i] = "$datei";
                
                
            $filename "$verz$datei";
                if (
            $ordner == TRUE)
                    {
                    include (
            "zip.php");
                    
            $i++;
                    }

                if (
            file_exists($filename)) 
                    {
                    
            //preg_match('Import-dss1@[a-zA-Z0-9_-]i{7}',$filename,$match);
                    //$new_filename = $match[0] . end(explode(".", $filename));
                    
            chmod($filename0777);
                    
            $new_filename substr($filename,-12);
                    
            rename($filename$verz $new_filename);
                    }

                echo 
            "<option value=?cd=$ordner&data1=$new_filename>$new_filename</option>";
                    
                
            //echo "<option value=?cd=$ordner&data1="; echo substr($datei,-61); echo ">"; echo substr($datei,-61); echo"</option>";
                
                
                
            }
                    
                

              } 

              }
            echo 
            "</select>";

            ?>
            beim Aufruf der Seite packt er jetzt die erste Datei im Verzeichnis (mit Orginal-Namen, so soll es sein). macht dies aber nicht weiter. erst beim erneuten Laden der Seite macht der die nächste Date und packt diese.
            Aber ein Reload kann ja nciht die Lösung sein.

            Wo hängt denn der Fehler? ich find ihn nicht?
            ich mit $i++ schon handtiert, aber ohne Erfolg (vllt auch falsch )

            Zähl auf euch.
            Danke....

            Kommentar


            • #7
              also langsam musst du lernen, dich zu entscheiden ..

              entweder willst du ALLE Dateien packen - oder nur 1 einzelne Datei ...

              offensichtlich nun doch das erstere - dafür hatten wir den Code doch schon ...

              schreib ihn nach deine rename-funktion im innersten - alles was du brauchst sind die richtigen Parameter, damit du für jede Quelldatei eine Zip-Datei bekommst ...
              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

              Kommentar


              • #8
                also das will ich schon von Anfang an.
                Jede Datei in eine Zip-Datei packen.

                Hab das auch schon ausprobiert nach dem rename, aber dann packt er auch nur die erste Datei. die 2. Datei wird nur umbenannt, aber nicht gezippt.

                Am besten wäre es, wenn das Zippen vor dem Umbenennen stattfindet, dann bleiben die Original-Datei-Namen in der Zip-Datei erhalten.

                Ich verzweifel langsam....

                Kommentar


                • #9
                  dann bau den Zip-Befehl vors rename ..
                  und dreh error-reporting hoch,

                  lass dir Fehlermeldungen der Zip-Bibliothek liefern - nicht unterdrücken mit @ ..
                  "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                  Kommentar


                  • #10
                    ok, dass kann ich machen.
                    Was meinst du mit error-reporting hochdrehen?

                    Wo soll ich das einfügen und vorallem was?
                    Danke.

                    Kommentar


                    • #11
                      Zitat von DJMaster Beitrag anzeigen
                      Was meinst du mit error-reporting hochdrehen?
                      error_reporting auf E_ALL und display_errors auf 1 stellen.

                      Informieren, wenn dir die Stichworte nichts sagen.
                      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                      Kommentar

                      Lädt...
                      X