Jan: Such-Funktion, aber wie?

Hallo Leute!

Folgendes: Ich hab eine Seite, bei der man verschiedene Jahre und Monate (mit Checkboxen) "markieren" kann. Nun brauche ich eine Suchfunktion, die mir die Datensätze nach den markierten Bereichen heraussucht.
Ich möchte jetzt nicht, dass mir gleich jemand den gesamten Code präsentiert.
Doch weiß jemand vielleicht einen Ansatz, der mir weiterhelfen könnte? Oder eine Seite, auf der ein Beispiel-Script zu diesem Thema zu finden ist?

Gruß, Jan

  1. Hallo Leute!

    Folgendes: Ich hab eine Seite, bei der man verschiedene Jahre und Monate (mit Checkboxen) "markieren" kann. Nun brauche ich eine Suchfunktion, die mir die Datensätze nach den markierten Bereichen heraussucht.
    Ich möchte jetzt nicht, dass mir gleich jemand den gesamten Code präsentiert.
    Doch weiß jemand vielleicht einen Ansatz, der mir weiterhelfen könnte? Oder eine Seite, auf der ein Beispiel-Script zu diesem Thema zu finden ist?

    Gruß, Jan

    Hi Jan,

    äh ja, willst du das DB-basiert machen oder Textfile-basierend? Auf jeden Fall brauchst du irgendwo eine Art Informationskontainer, wo alle Infos drin stehen samt deinen Attributen, nach denen du suchen willst. Z. B. eine Tabelle in einer DB... Feld 1 = Referenz auf Ergebnis oder Ergebnis selbst, Feld 2 bis x = Attribute (Jahre, Monate etc)

    und dann läßt du dir eine Logik einfallen in welcher Weise du das Suchen beginnen willst. Nach dem Schema "SELECT FROM tbl WHERE ..... "
    und dann gehst du jede Suchvariable in einer Schleife durch, die jedes mal die Abfrage in der DB macht... und die Ergebnisse schreibst du immer mit Response.Write in die Ausgabe...

    Andere möglichkeit, Volltextsuche in Textdateien
    als Beispiel www.schaefer-it.com
    unter Produkte die Suchfunktion liest durch alle Produkt-htm's und listet alle auf, die das Suchwort beinhalten.

    Gruß, Frank

    1. Hallo Frank!

      Das basiert alles auf ner Access-Datenbank. Also das Grundgerüst steht, die ASP-Seiten sind alle gemacht, die Datenbankanbindung steht. Das hab ich alles hergebracht, nur wo ich eben auf dem Schlauch stehe, ist die Suchfunktion.
      Select from where ist logisch, das hat man mir schon geraten. Aber wie genau spreche ich die markierten Checkboxen an, die er dann für die Suche verwenden soll? Achja, es sind noch 3 Drop-Downfelder dabei.

      Gruß, Jan

      1. Hallo Frank!

        Das basiert alles auf ner Access-Datenbank. Also das Grundgerüst steht, die ASP-Seiten sind alle gemacht, die Datenbankanbindung steht. Das hab ich alles hergebracht, nur wo ich eben auf dem Schlauch stehe, ist die Suchfunktion.
        Select from where ist logisch, das hat man mir schon geraten. Aber wie genau spreche ich die markierten Checkboxen an, die er dann für die Suche verwenden soll? Achja, es sind noch 3 Drop-Downfelder dabei.

        Gruß, Jan

        Hi Jan,

        DB-basiert, na das ist doch n Anfang. Hast du deine Daten darin logisch strukturiert - jeder Datensatz muß dann mit Attributen ausgezeichnet werden, nach denen du suchen willst, z. b. Datum o.ä.

        Jetzt nimmst du dir die ASP-Seite, wo deine Checkboxen drauf sind. Mach ein abschickbares Formular draus. <form method=Post> - so ruft es sich selbst noch mal auf oder nimm ein neue Seite für die Auswertung. Für die Auswertung gehst du einfach jede abgesendete Variable in einer Schleife durch. <% for each varaible in Request.Form Next %> und in die Schleife baust du die Abfragefunktion für deine DB ein. So wird bei jedem Durchlauf die DB nach Ergebnissen durchsucht, die du dann mit Response.Write einfach untereinander schreibst und ggf. verlinkst.

        DIE LOGIK MUSS ZUERST KOMMEN, nur da herum kannst du dir deine Seiten programmieren.

        Viele Grüße, Frank

        P.S. schon mal auf www.aspin.com geschaut, da gibt es jede Menge Scripte, vielleicht kannst du dir dort eins abgucken...

        1. Hallo!

          DB-basiert, na das ist doch n Anfang. Hast du deine Daten darin logisch strukturiert - jeder Datensatz muß dann mit Attributen ausgezeichnet werden, nach denen du suchen willst, z. b. Datum o.ä.

          »»

          Ich geb den Datenfeldern immer leicht nachzuvollziehende Namen. So kann ich sie mir besser merken. Also von dem her passt es.

          Jetzt nimmst du dir die ASP-Seite, wo deine Checkboxen drauf sind. Mach ein abschickbares Formular draus.

          Ein Formular ist es schon, denn ohne <form> stellt der NS die Checkboxen und Dropdownfelder nicht dar. Nur ist es eben noch nicht abschickbar.

          Für die Auswertung gehst du einfach jede abgesendete Variable in einer Schleife durch. <% for each varaible in Request.Form Next %> und in die Schleife baust du die Abfragefunktion für deine DB ein. So wird bei jedem Durchlauf die DB nach Ergebnissen durchsucht, die du dann mit Response.Write einfach untereinander schreibst und ggf. verlinkst.

          Also das klingt doch recht einleuchtend. Es ist so bei uns, wir haben nen erfahrenen ASP-Programmierer, der diese Funktion locker könnte. Ich möchte aber doch versuchen, sie möglichst alleine zu machen.
          Mit diesen Ansätzen kann ich jetzt schon mal anfangen, im Notfall kann ich mich immer noch an den Kollegen wenden.

          Danke!

          Gruß, Jan

          P.S. schon mal auf www.aspin.com geschaut, da gibt es jede Menge Scripte, vielleicht kannst du dir dort eins abgucken...

          Die Seite gehört schon zu meinen Standards :o) Hab aber wirklich glatt vergessen, mich da genau umzusehen.

  2. Hallo Jan,

    Folgendes: Ich hab eine Seite, bei der man verschiedene Jahre und Monate (mit Checkboxen) "markieren" kann. Nun brauche ich eine Suchfunktion, die mir die Datensätze nach den markierten Bereichen heraussucht.

    Also, den Checkboxen im Formular der Aufrufedatei für die Monate eines Jahres gibst Du einen gemeinsamen Namen, z.B die Jahreszahl selbst. Die Jahre selbst benötigen dann keine checkbox!

    Die Werte lauten dann z.B

    <form ...>
    ...
    1997
    ...

    <p>Jahr 1998</p>

    Monate:
    <input type="checkbox" name="1998" value="Januar">Januar
    <input type="checkbox" name="1998" value="Februar">Februar
    usw.

    ...
    1999
    ...
    </form>

    In der auswertenden asp folgendes:

    <%for each name in request.form
    stmon = ""
    for each varvalue in request.form(name)
    if stmon = "" Then
      stmon =  "'" & varvalue & "'"
    else
      stmon = stmon & ",'" & varvalue & "'"
    end if
    sql = "select irgenwas from tabelle where jahrspalte in (" &   request.form(name) & ") and monatspalte in (" & varvalue & ")"
    rs.open sql, conn%>
    lies den recordset aus zb. in html-tabellenabschnitt
    rs.close
    <%Next%>

    So etwa würd ichs machen. Hoffe einen ungefähren Anstoss gegeben zu haben.

    Gruss
    Uwe Nohl

    rs.open
    Und für die Jahre analog.

    1. Hallo Jan,

      sorry, ich war mitten im Schreiben aus dem Netz geflogen und musste neu einloggen. Also jetzt vollständig:

      Also, den Checkboxen im Formular der Aufrufedatei für die Monate eines Jahres gibst Du einen gemeinsamen Namen, z.B die Jahreszahl selbst. Die Jahre selbst benötigen dann keine checkbox!

      Die Werte lauten dann z.B

      <form ...>
      ...
      1997
      ...

      Jahr 1998</p>

      Monate:
      <input type="checkbox" name="1998" value="Januar">Januar
      <input type="checkbox" name="1998" value="Februar">Februar
      usw.

      ...
      1999
      ...
      </form>

      In der auswertenden asp folgendes:

      <%for each name in request.form
      stmon = ""
      for each varvalue in request.form(name)

      »»  if stmon = "" Then

      stmon =  "'" & varvalue & "'"

      »»  else

      stmon = stmon & ",'" & varvalue & "'"

      »»  end if
      »»  sql = "select irgenwas from tabelle where jahrspalte in (" &   request.form(name) & ") and monatspalte in (" & varvalue & ")"
      »»  rs.open sql, conn%>
      »»  lies den recordset aus zb. in html-tabellenabschnitt
      »»  rs.close

      <%Next

      Next%>
      Nochmals MfG
      Uwe Nohl