Verzeichnis nach bestimmten Dateien suche ???

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

  • Verzeichnis nach bestimmten Dateien suche ???

    Hallo allerseits,

    nachdem ich heute den ganzen Tag mit Suchereien nach dem Thema "Verzeichnisse nach Dateien suchen" verbracht habe und eigentl. keine brauchbare Infos darüber gefunden habe, möchte ich meine Frage hier stellen:

    Also, ich möchte über ein Such-Formular Dateiname oder Teil des Dateinamens z.B. 000012012*.tif für 000012012-1ABC23DD.tif usw. an den PHP-Script übergeben und dann in vorgegebenen Verzeichnisen (vielleicht auch in Unterverzeichnissen) nach den Dateien suchen und das Ergebnis bei Erfolg als Link auflisten, so daß man auf ein Link anklickt und die Datei öffnet bzw. speichert.

    Ich habe es bis jetzt soweit geschaft, daß man feststellt, ob eine bestimmte Datei existiert, fals ja, dies als Link anzeigen.

    PHP-Code:
    <?php
        $Dateiname 
    $_REQUEST['Dateiname'];
        echo(
    "
                <html>
                <head>
                <title>Dateisuche</title>
                </head>
                <body>
                <table border=0 width=80%>
                    <tr>
                        <td><b>Dateien Auflisten</b></td>
                    </tr>
                    <tr>
                            <td>&nbsp;</td>
                    </tr>
                    <tr>
                            <td>Bitte geben Sie den Dateinamen ein:</td>
                    </tr>
                    <tr>
                        <td>
                            <form name=frm_kdalfn action=
    $PHP_SELF?Dateiname method=get>
                                <input name=Dateiname type=text size=30 maxlength=30>
                                <input name=bt_kdalfn type=submit value=Öffnen>
                            </form>
                        </td>
                    </tr>
                   <tr>
                          <td>&nbsp;</td>
                    </tr>
            "
    );
        
    $vz "C:\\Backup\\ABC\\";
        
        
    $a chdir($vz);
        
            if(
    $Dateiname!="")
                {
                    if(
    file_exists($Dateiname))
                        {
                            echo
                                (
    "
                                    <tr>
                                        <td align=center><a href=
    $vz$Dateiname>$Dateiname</a></td>
                                    </tr>
                                    <tr>
                                        <td>&nbsp;</td>
                                    </tr>
                                "
    );
                        }
                    else
                        {
                            echo
                                (
    "
                                    <tr>
                                        <td>Datein: 
    $Dateiname existiert nicht!</td>
                                    </tr>
                                    <tr>
                                        <td>&nbsp;</td>
                                    </tr>
                                "
    );
                        }
                }
        echo
            (
    "
                    </table>
                </body>
                </html>
            "
    );
    Hoffe Ihr könnt mir auch hier helfen.
    Danke vorab für jede Hilfe

    Gruß

    Otto

  • #2
    http://de.php.net/manual/de/function.opendir.php
    http://de.php.net/manual/de/function.readdir.php
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      vielleicht noch die codeschnipsel ... "rekursiv löschen" sollte sich auch anpassen lassen ...
      Kissolino.com

      Kommentar


      • #4
        alle Dateien rekursiv ausgeben von :
        PHP-Code:
        <?php
        function echodir($path ".")
        {
          
        $suche "^000012012.*\.tif$";  // für suche
          // Der Punkt ist das aktuelle Verzeichnis
          // .. kennt man als "Verzeichnis höher"
          // dir/ als "Verzeichnis tiefer"
          
        $dir dir($path);
          while(
        false !== ($file $dir->read()))
          {
            if((
        "."  == $file) OR
              (
        ".." == $file))
              continue;
              if(
        is_dir($path."/".$file)) {
                
        echodir($path."/".$file);
              } else {
                if(
        preg_match("/$suche/",$file)){  // für suche
                  
        echo($file." im Verzeichnis: " $path "<br >\n");
               }  
        // für suche
              
        }
           }
           
        $dir->close();
          }
        echo 
        "Im aktuellen Verzeichnis liegt: <br />\n";
        echodir(".");
        ?>
        EDIT:
        Suche eingefügt


        Offe
        Zuletzt geändert von Offe1; 19.02.2004, 01:32.

        Kommentar


        • #5
          Original geschrieben von Offe1
          Suche eingefügt
          hehe. wenn schon dann richtig... also als parameter...
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Hallo alle miteinander,

            @Wurzel
            vielleicht noch die codeschnipsel ... "rekursiv löschen" sollte sich auch anpassen lassen ...
            Tut mir leid, aber ich habe dich wieder nicht verstanden. ;-) Wie meinst du es?

            Ja, gestern habe ich opendir() und readdir() gefunden, aber ich dachte, es wäre für mein Problem nicht so ganz das passende. Ich habe damit keine Erfahrung, aber ist es nicht problematisch - performanzmäßig - nach einer Datei oder ein paar Dateien einen Verzeichnis mit vielleicht über 10.000 Dateien zu durchsuchen?

            @Offe1
            Danke für das detailierte Beispiel-Code.
            Es gibt allerdings ein Problem: Ich habe deinen Code 1:1 in eine leere PHP-Datei übernommen. Beim ausführen des Codes bekomme ich folgende Fehlermeldung:
            OffTopic:
            Parse error: parse error, unexpected T_VARIABLE in d:\programme\apache group\apache\htdocs\dateisuche.php on line 4

            Zeil 4:
            PHP-Code:
            $suche "^000012012.*.tif$";  // für suche 
            Ich kann keinen Fehler im Code feststellen. Woran kann es denn liegen?

            Danke nochmal an alle

            Gruß, Otto

            Kommentar


            • #7
              Original geschrieben von otto-mueller
              Tut mir leid, aber ich habe dich wieder nicht verstanden. ;-) Wie meinst du es?
              langfassung ... in den codeschnipseln gibt es ein solches welches
              schnipsel, das irgendwie "rekursiv löschen" heisst ... danach solltest du
              schauen und dich inspirieren lassen... und offes beispielcode läuft
              einwandfrei.
              Kissolino.com

              Kommentar


              • #8
                hehe. wenn schon dann richtig... also als parameter...
                hatte ich zuerst, aber dann mußte ich es im rekursiven Aufruf auch übergeben und das hat mich geärgert . Da mir nix besseres eingefallen ist, hab ich es halt auf die einfache Art gemacht

                Offe

                Kommentar


                • #9
                  wo ist das problem bei der rekursion? du hast den wert doch. oder?
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    wo ist das problem bei der rekursion? du hast den wert doch. oder?
                    damit ich den Wert der Variablen, nach dem rekursiven Aufruf, habe muß ich den Wert bei jedem rekursiven Aufruf mit übergeben. Das widerstrebt mir einfach, da ich denke, daß es eine einfachere Lösung geben muß..

                    Offe

                    Kommentar


                    • #11
                      du machst dir zu viele gedanken. mache noch einen 2.para rein und gib im einen defaultwert z.b. NULL.

                      den rest machst du in der fkt. punkt. fertig. aus.

                      los. schreib um.
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        PHP-Code:
                        <?php
                        function echodir($path "."$suche"")
                        {
                        __// Der Punkt ist das aktuelle Verzeichnis
                        __// .. kennt man als "Verzeichnis höher"
                        __// dir/ als "Verzeichnis tiefer"
                        __$dir dir($path);
                        __while(false !== ($file $dir->read()))
                        __{
                        ____if(("."__== $file) OR
                        ______(".." == $file))
                        ______continue;
                        ______if(is_dir($path."/".$file)) {
                        ________echodir($path."/".$file$suche);
                        ______} else {
                        ________if(preg_match("/$suche/",$file)){__
                        __________echo
                        ($file." im Verzeichnis: " $path "<br >\n");
                        _______}__// für suche
                        ______}
                        ___}
                        ___$dir->close();
                        __}

                        $suche "^000012012.*.tif$";__
                        echo "Im aktuellen Verzeichnis liegt: <br />\n";
                        echodir("."$suche);
                        ?>
                        besser?

                        Offe

                        Kommentar


                        • #13
                          keine Bedenken hinsichtlich stack overload ?

                          Kommentar


                          • #14
                            hallo,

                            der Code geht wieder! Es lag daran, daß ich den Code mit Strg+C/Strg+V kopiert hatte und nicht druckbare Zeichen sich darin geschlichen hatten. Deswegen meckerte PHP.

                            Aber dennoch ein Vorschlag:
                            PHP-Code:
                            function echodir($path$suche
                            PHP-Code:
                            while(($file $dir->read())) 
                            So ist es besser oder

                            Gruß, Otto

                            Kommentar


                            • #15
                              Netzlaufwerk geht nicht

                              Hallo,

                              wenn ich an dir() ein Netzlaufwerk überbebe, dann bekomme ich die Fehlermeldung, daß der Verzeichnis oder Datei nicht existert. Das Laufwerk ist aber verbunden und ist auch online!
                              Mit lokalen Laufwerken geht es einwandfrei!
                              Gibt es da ein Trick dafür?

                              Danke vorab
                              Gruß, Otto

                              Kommentar

                              Lädt...
                              X