Suchabfragen mit ASP
ron
- asp.net
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 ?
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
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
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...
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
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
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
»
Dann würde ich einen entsprechenden Parameter für das Script übergeben:
suche.asp?where=all
suche.asp?where=meine_projekteersteres 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 ???????
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
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
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