ron: Suchabfragen mit ASP

Hallo,

ich wollte gerne 2 Suchabragen auf einer Seite einbauen, die auf Unterschiedliche Ordnerverzeichnisse zugreifen ?
Das ist der Code für die Allgemeine Suche auf jeder Seite
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
 Option Explicit

Dim strDocsPath, strDocsPhysicalPath
 Dim objFSO, objFolder, objFiles, objFile
 Dim strName, strFile, strType, lngSize
 dim subfolder

' NOTE: set the following line to the folder to display
 strDocsPath = "."

' map the folder to a physical path
 strDocsPhysicalPath = Server.MapPath(strDocsPath)

' create a system file object
  Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

' create an object for the folder
 Set objFolder = objFSO.GetFolder(strDocsPhysicalPath)

subfolder = objFolder.SubFolders.count

%>

Wo und wie kann ich nun die zweite Suche ansteuern und wie kann ich auch PDF-Files durchsuchen lassen ?

  1. Halihallo ron

    ich wollte gerne 2 Suchabragen auf einer Seite einbauen, die auf Unterschiedliche Ordnerverzeichnisse zugreifen ?

    [...]

    ' NOTE: set the following line to the folder to display
     strDocsPath = "."

    [...]

    ' create an object for the folder
     Set objFolder = objFSO.GetFolder(strDocsPhysicalPath)

    subfolder = objFolder.SubFolders.count

    intSubfolderCount wäre etwas sinnvoller. Count liefert nämlich nur einen Integer.

    Wo und wie kann ich nun die zweite Suche ansteuern und wie kann ich auch PDF-Files durchsuchen lassen ?

    zur ersten Frage:
    Einfach ein zweiter strDocsPath anlegen (eg. ./my-docs) und diesen dann mit objFolder2 = objFSO.GetFolder(strDocsPhysicalPath2) durchsuchen. Womit hast du denn Probleme? - Mit der Datenübergabe vom Formular? - Mit dem Handling diverser objFolder* Instanzen?

    zur zweiten Frage:
    Hier wirds wohl etwas komplizierter, da ASP per se keine Möglichkeit bietet, PDF Files zu durchsuchen. Dazu müsstest du ein COM-Komponente finden (diese liesse sich dann über PDFCom = Server.CreateObject("Application.AcrobatReader") verwenden), welche dies ermöglicht (vielleicht kommt AcrobatReader gleich mit einer solchen?). Ich kenne leider keine.

    Viele Grüsse

    Philipp

    1. Halihallo ron

      zur zweiten Frage:
      Hier wirds wohl etwas komplizierter, da ASP per se keine Möglichkeit bietet, PDF Files zu durchsuchen. Dazu müsstest du ein COM-Komponente finden (diese liesse sich dann über PDFCom = Server.CreateObject("Application.AcrobatReader") verwenden), welche dies ermöglicht (vielleicht kommt AcrobatReader gleich mit einer solchen?). Ich kenne leider keine.

      http://www.15seconds.com/component/pg001050.htm, PDF-Komponente zum erstellen und auslesen von PDF-Files. So weit ich gelesen/gesehen habe, kann man den Inahlt jedoch nicht durchsuchen!? - Zudem kostenpflichtig ;(
      Eine AcrobatReader-interne-Komponenten-Referenz konnte ich bislang nicht ausfindig machen. Aber vielleicht kennt sonst jemand was...

      Viele Grüsse

      Philipp

    2. Halihallo ron

      ich wollte gerne 2 Suchabragen auf einer Seite einbauen, die auf Unterschiedliche Ordnerverzeichnisse zugreifen ?

      [...]

      ' NOTE: set the following line to the folder to display
       strDocsPath = "."

      [...]

      ' create an object for the folder
       Set objFolder = objFSO.GetFolder(strDocsPhysicalPath)

      subfolder = objFolder.SubFolders.count

      intSubfolderCount wäre etwas sinnvoller. Count liefert nämlich nur einen Integer.

      _________________________________
      Danke erstmal für die Antwort
      heisst das, daß ich das Script hier jeweils doppelt schreibe mit Folder1 und Folder2?

      Bin noch Anfänger daher die Frage...

      1. Halihallo Ron

        heisst das, daß ich das Script hier jeweils doppelt schreibe mit Folder1 und Folder2?

        Das kannst du so machen, wie es dir sinnvoll erscheint, ich würde dir jedoch dazu raten, alles in einem Script zu halten. Zudem macht das sonst eigentlich auch keinen Sinn, da du ja zwei Verzeichnisse auf _einen Schlag_ durchsuchen möchtest, oder?
        Du musst einfach in beiden SubDirs das ganze gleichermassen durchlaufen und passende Dokumente ausgeben. Ich würde es so machen, dass du eine Funktion erstellst, welche ein bestimmtes (als Parameter übergebenes) Verzeichnis entgegen nimmt und die passenden Dokumente zurückgibt; so musst du nicht zweimal den selben Code schreiben und verhinderst so Redundanz und Fehler (Änderungsanomalie ;)).

        Viele Grüsse

        Philipp

        1. Hi Philipp,

          nein, das kam falsch rüber. Ich habe eine Generelle Suche oben auf meiner Seite. (die Sucht also alle Dokumente durch)

          Eine andere Suche soll im Body einer bestimmten Seite nur in einem bestimmten Ordner suchen..(wobei dei Generelle Suche eben auch auf der Seite oben rechts ist)

          ron

          1. Halihallo ron

            nein, das kam falsch rüber. Ich habe eine Generelle Suche oben auf meiner Seite. (die Sucht also alle Dokumente durch)

            Eine andere Suche soll im Body einer bestimmten Seite nur in einem bestimmten Ordner suchen..(wobei dei Generelle Suche eben auch auf der Seite oben rechts ist)

            Dann würde ich einen entsprechenden Parameter für das Script übergeben:

            suche.asp?where=all
            suche.asp?where=meine_projekte

            ersteres sucht über die ganze Site, letzteres nur über das Verzeichnis, wo alle deine Projekte enthalten sind. Mach jedoch nicht den Fehler absolute Pfadnamen zu übergeben, das ist ein Sicherheitsloch (neben der Verwendung von ASP sowieso ;))!

            Viele Grüsse

            Philipp

            1. »

              Dann würde ich einen entsprechenden Parameter für das Script übergeben:

              suche.asp?where=all
              suche.asp?where=meine_projekte

              ersteres sucht über die ganze Site, letzteres nur über das Verzeichnis, wo alle deine Projekte enthalten sind. Mach jedoch nicht den Fehler absolute Pfadnamen zu übergeben, das ist ein Sicherheitsloch (neben der Verwendung von ASP sowieso ;))!

              Viele Grüsse

              Philipp

              mmm wo übergebe ich die WHERE anweisung ???????

              1. Halihallo ron

                mmm wo übergebe ich die WHERE anweisung ???????

                Gar nirgens, das wäre auch nicht sinnvoll (welcher Besucher kennt schon SQL?). Aber du darfst gerne noch einen Parameter query=xxx anhängen ;)
                Und was btw. sprichst du jetzt von SQL? - Ich dachte es geht um Dateien durchsuchen?

                Viele Grüsse

                Philipp

                1. Hi Philipp,

                  so, jetzt hab ich dich auch verloren.

                  Nochmal von vorne.

                  Ich habe auf allen meinen Seiten eine generelle Suchabfrage oben auf der Seite. (es lebe das Template)

                  Nun möchte ich aber auf einer Unterseite eine weitere Suchabfrage einbauen, die nur auf einen bestimmten Ordner zugreift.

                  ron

                  1. Halihallo Ron

                    so, jetzt hab ich dich auch verloren.

                    Na, dann versuch ich mal, dich dort abzuholen wo du im Moment stehst. Aber vergiss nie: Wenn wir uns verlieren, immer dort stehen bleiben, wo du mich zuletzt gesehen hast, ja? :-)

                    Ich habe auf allen meinen Seiten eine generelle Suchabfrage oben auf der Seite. (es lebe das Template)

                    ACK ;)

                    Nun möchte ich aber auf einer Unterseite eine weitere Suchabfrage einbauen, die nur auf einen bestimmten Ordner zugreift.

                    ACK ;)

                    ---

                    oben (template) hast du:

                    <form action="/suche.asp">
                       <input type="text" name="wonach" />
                       <input type="hidden" name="where" value="all" />
                    </form>

                    unten (Unterseite) hast du:

                    <form action="/suche.asp">
                       <input type="text" name"wonach" />
                       <input type="hidden" name="where" value="SportBereich" />
                    </form>

                    ---

                    suche.asp :

                    Der strSearchPath wird nun aufgrund des Formularfeldes "where" gebildet. Also z. B. für where="all" => strSearchPath="." oder für where="SportBereich" => strSearchPath="/sport"

                    so, wenn du nu die Verzeichnisse durchsuchst, wird dir bei where="SportBereich" auch wirklich nur das Verzeichnis /sport durchsucht. Bei where="all" alles (bzw. das aktuelle; alles, wenn rekursiv alle Unterverzeichnisse durchlaufen).

                    ---

                    Haben wir uns wieder gefunden?

                    'Tschuldige das blabla vonwegen dem SQL-Zeug, irgendwie hat mich das grossgeschriebene WHERE in eine falsche Richtung gelenkt, was ich eigentlich hätte wissen müssen (naja, ich lese zuviele Threads und bringe dann einiges durcheinander). Sorry also.
                    Das where kannst du z.B. als hidden-Field übergeben (s. oben). Du musst ja sowieso ein Formular haben, wo der Benutzer seine Suchwörter eigeben kann (neben dem normalen Eingabefeld, eben noch ein unsichtbares, wo du das where übergibst).

                    Viele Grüsse

                    Philipp