Dürchsuchen einer SQL Datenbank mit asp???

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

  • Dürchsuchen einer SQL Datenbank mit asp???

    Hallo,

    ich habe meine MusikCd Sammlung in eine Sql Datenbank eigetragen, jetzt möchte ich eine Suchmachine schreiben mit der ich die SQL Datenbank durchsuchen kann.

    Es soll die Möglichkeit geben nach 4 Kriterien zu suchen.

    1 : Interpret (Gruppe)
    2 : Titel
    3 : Datum (wann die CD rauskam)
    4 : Meine Favorits (Cds die ich gut finde)

    wenn man z.B dann Punkt 1 ausläßt soll das Script nach den andern Fragen suchen.

    Kann mir da einer helfen, oder weis jemand obs irgendwo ein fertiges Script oder Tutorial gibt.

    Danke und Gruß

    KARSTEN.

  • #2
    Hallo Karsten,
    entschuldige bitte, aber das ist nun wirklich einfach.
    du erstellst ein Formular, in diesem fragst du die Suchkriterien ab ( <form name="Suchkriterien" method="get" action="such_asp_skript.asp">.
    dann schreibst du dir eine .asp seite:

    //such_asp_skript.asp
    <%
    Interpret=request.querystring("Interpret")
    Titel=request.querystring("Titel")
    Datum=request.querystring("Datum")
    Favorit=request.querystring("Favorit") %>
    //dann bastelst du sql-abfrage
    sql="select * from CD-Datenbank where Interpret like '"&Interpret&"' and Titel like '"&Titel&"' and Favorit like '"&Favorit&"' and Datum like '"&Datum&"'"
    //dann öffnest du ein recordset
    <%
    set CDs = Server.CreateObject("ADODB.Recordset")
    CDs.ActiveConnection = "dsn=CD-Datenbank;uid=sa;"
    CDs.Source = sql
    CDs.CursorType = 0
    CDs.CursorLocation = 2
    CDs.LockType = 3
    CDs.Open()
    CDs_numRows = 0
    %>

    <% while not CDs.eof
    response.write(CDs.Fields.Item("CDName").Value)
    // und so weiter
    CDs.movenext
    wend %>

    <%
    CDs.Close()
    %>


    So das wars

    Mit freundlichen Grüßen
    Xena

    Kommentar


    • #3
      Sorry

      Sorry aber ich bin ein absoluter Anfänger in ASP.

      das &Datum&, das si´nd doch die Textfelder in den ich was eingeben kann, oder???

      Kommentar


      • #4
        *g*
        Entschuldigung angenommen, ich hab auch erst vor kurzem damit angefangen, nur hab ich viel Zeit zum ausprobieren, da ich das während meines Praktikums mache.

        Also, du weisst, wenn man ein Formular mit "get" abschickt, werden die Daten über einen Querystring verschickt.
        den Querystring lese ich am Anfang des Skriptes aus, und speichere die Daten in gleichnamigen Variablen ( sonst müsstest du immer wenn du die Daten brauchst auf den Querystring zugreifen request.querystring("variable") und das ist zu lang . . . ) die Variablen hab ich dann in den sql-string eingefügt. Mit & verbindet man den string mit der variablen.
        sql="string"&variable

        Mit freundlichen Grüßen
        Xena

        Kommentar


        • #5
          hmmmmmm

          hmmmmmmm,

          ich probiere mal rum, und wenn ich nicht weiter komme dann melde ich mich bei dir:-)

          Danke dir.

          Kommentar


          • #6
            ???

            Und was wenn ich in ein Feld nicjts reinschreibe, was dann. Wird das ignoriert oder muss ich eine If Abfrage machen???

            Kommentar


            • #7
              ????;-)

              noch ne Frage.

              wie schauts mit der Volltextsuche aus, wenn ich jetzt z.B DieAerz angebe, soll er halt alle die mit DieAerz anfangen ausgeben.

              Kommentar


              • #8
                du musst eine if abfrage machen, damit hatte ich auch schon lange rumgefummelt, und hatte keine lust das jetzt alles nochmal aufzuschreiben ^_^' (sorry) aber das bekommst du bestimmt hin. man kommt da nur leicht durcheinander.

                Also wenn ich das richtig verstanden habe, müsste sich das lösen lassen, indem du vor und nach dem Suchbegriff ein "%" Zeichen hinschreibst. Das ist in SQL gleichbedeutend mit dem "*" also beliebig viele Zeichen oder auch keins.
                sql="select * from CD-Datenbank where Interpret like '%"&Interpret&"%' and Titel like '%"&Titel&"%' and Favorit like '%"&Favorit&"%' and Datum like '%"&Datum&"%'"

                übrigens, die einfachen Hochkommata ' brauchst du nur wenns ein String ist, sonst musst du sie weglassen. Ich hatte einfach angenommen, dass alles Strings sind.


                Mit freundlichen Grüßen
                Xena

                Kommentar


                • #9
                  äm Xena, ich würde in deiner SQL-Abfrage statt AND lieber OR benutzen denn sonst würdest garantiert kein Datensatz finden.
                  Richtig ist :

                  sql="select * from CD-Datenbank where Interpret like '%"&Interpret&"%' OR Titel like '%"&Titel&"%' OR Favorit like '%"&Favorit&"%' OR Datum like '%"&Datum&"%'"

                  ach ja ein Feld aus der Datenbank wird so einfacher ausgedrückt

                  cd.fields("Feldname") statt response.write(CDs.Fields.Item("CDName").Value)

                  ich werd morgen noch mal einen kompletten Text posten wo man DSN-Lose Datenbankverbindungen schnell und einfach auslesen kann. Komme heute nicht mehr dazu, hab nämlich noch zu arbeiten

                  MFG Morpheus

                  Der Computer rechnet mit allem -
                  nur nicht mit seinem Besitzer
                  Dieter Hildebrandt
                  www.slware.de - Scripts & Tutorials für professionelles Webdesign

                  Kommentar


                  • #10
                    übrigens, die einfachen Hochkommata ' brauchst du nur wenns ein String ist, sonst musst du sie weglassen.

                    Ist nicht ganz korrekt - richtig ist:
                    ..., sonst kannst du sie weglassen.

                    Viel Spaß noch beim Basteln!
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar


                    • #11
                      hmm,
                      also Titus, ich weis ja nicht ob ich genug von sql verstehe, aber wenn ich eine sql-abfrage habe wie z.B.:
                      select *
                      from Tabelle1
                      where Spalte1 = 2
                      (Spalte1 sei int)
                      dann kann ich doch nicht das in einfachen Hochkommata setzen ' ?

                      wie z.B. hier:
                      select *
                      from Tabelle1
                      where Spalte1 = '2'

                      wenn doch, darfst du es mir gerne mal erklären

                      achja, ich glaub das mit dem or statt and ist glaub ich richtig, bin ja eigentlich auch noch anfänger ^_^°

                      und das mit dem cd.fields("Feldname") kann gut sein, ich hatte nur schnell ein stück quellcode aus meinem projekt kopiert, und das stückchen war von Macromedia Dreamweaver UltraDev 4 generiert.

                      Mit freundlichen Grüßen
                      Xena

                      Kommentar


                      • #12
                        So, da muss ich mir mal selber antworten
                        weil das mit den and's stimmt so, denn sonst würde bei der abfrage ja immer nach Interpret ODER Titel ODER Datum . . .
                        gesucht werden, wenn man aber etwas kombinieren möchte wie
                        CD mit Titel '%Die Aerz%' und Datum = 12.01.1986
                        dann sucht der ja entweder das eine oder das andere, ich weis auch nicht genau wie MS SQL darauf reagiert, da ja beide eventuell ein ergebnis liefern!
                        Mann muss nur zu Anfang des Skriptes auslesen ob etwas eingegeben wurde,
                        wenn ja : string=" and Titel like '"&Titel&"'"
                        wenn nein : string=""

                        Mit freundlichen Grüßen

                        Xena ^_^°

                        Kommentar


                        • #13
                          moment !

                          wenn du denn Operator AND benutzt muss ein Datensatz alle Kriterien wonach du suchst erfüllen.

                          Also suche den Datensatz Wo Titel like request.form("titel")
                          UND
                          interpret like request.form("interpret") UND Datum like request.form("datum") UND Favorits like request.form("favorits") . Also müssen ALLE Kriterien erfüllt sein sonst findet er keinen Datensatz ! deshalb würde ich OR benutzen ! okay ?

                          Ach ja soll ich jetzt noch den Aufbau einer DSN-Losen Datenbankverbindung erklären und wie man damit umgeht ?
                          MFG Morpheus

                          Der Computer rechnet mit allem -
                          nur nicht mit seinem Besitzer
                          Dieter Hildebrandt
                          www.slware.de - Scripts & Tutorials für professionelles Webdesign

                          Kommentar


                          • #14
                            Hallo
                            klar morpheus kannst du gerne erklären, mich interessiert es aufjedenfall wie das geht.

                            und nun zum AND versus OR *g*
                            ich hab mich vielleicht schlecht ausgedrückt, ich meinte, das man sich die sql-abfrage zusammenbaut.
                            ich poste mal ein beispiel welches ich selber geschrieben hab:
                            <% 'auslesen des Querystrings %>
                            <% Suchwort=request.querystring("Suchwort")
                            Preis=request.querystring("Preis")
                            Artikelgruppe=request.querystring("Artikelgruppe")
                            Artikelnummer=request.querystring("Artikelnummer")
                            %>
                            <% 'zusammensetzen der where-Bedingung %>
                            <% if not Artikelnummer="" then
                            Artikelnummer=" and NR='"&Artikelnummer&"'"
                            else Artikelnummer=""
                            end if
                            if not Artikelgruppe="nothing" then
                            Artikelgruppe=" and AGR_ID="&Artikelgruppe&" "
                            else Artikelgruppe=""
                            end if
                            if not Preis="" then
                            Preis=" and wv_vp3_inkl < "&Preis&" "
                            else Preis=""
                            end if
                            if not Suchwort="" then
                            Suchwort=" and (bez1 like '%"&Suchwort&"%' or bez2 like '%"&Suchwort&"%' or bez3 like '%"&Suchwort&"%') "
                            else Suchwort=""
                            end if
                            if not request.querystring("HerstellerID")="" then
                            HerstellerID=" and HER_ART_NR like '"&request.querystring("HerstellerID")&"' "
                            else HerstellerID=""
                            end if %>

                            <%
                            Dim Produktegefunden__q_Artikelgruppe
                            Produktegefunden__q_Artikelgruppe = "/*Artikelgruppe*/"
                            if (Artikelgruppe <> "") then Produktegefunden__q_Artikelgruppe = Artikelgruppe
                            %>
                            <%
                            Dim Produktegefunden__q_Preis
                            Produktegefunden__q_Preis = "/*Preis*/"
                            if (Preis <> "") then Produktegefunden__q_Preis = Preis
                            %>
                            <%
                            Dim Produktegefunden__q_Suchwort
                            Produktegefunden__q_Suchwort = "/*Suchwort*/"
                            if (Suchwort <> "") then Produktegefunden__q_Suchwort = Suchwort
                            %>
                            <%
                            Dim Produktegefunden__q_HerstellerID
                            Produktegefunden__q_HerstellerID = "/*HerstellerID*/"
                            if (HerstellerID <> "") then Produktegefunden__q_HerstellerID = HerstellerID
                            %>
                            <%
                            Dim Produktegefunden__q_Artikelnummer
                            Produktegefunden__q_Artikelnummer = "/*Artikelnummer*/"
                            if (Artikelnummer <> "") then Produktegefunden__q_Artikelnummer = Artikelnummer
                            %>
                            <%
                            Dim Produktegefunden__q_Order
                            Produktegefunden__q_Order = "/*Reihenfolge*/"
                            if request.querystring("sortieren") <> "" then Produktegefunden__q_Order = " order by "&request.querystring("sortieren")
                            %>

                            <%
                            set Produktegefunden = Server.CreateObject("ADODB.Recordset")
                            Produktegefunden.ActiveConnection = MM_eshop_STRING
                            Produktegefunden.Source = "SELECT NR, BEZ1, BEZ2, BEZ3, WV_VP3_INKL FROM dbo.T_ARTIKEL where HER_ID=7 "&Produktegefunden__q_Artikelgruppe&Produktegefunden__q_Suchwort & Produktegefunden__q_HerstellerID & Produktegefunden__q_Artikelnummer & Produktegefunden__q_Order
                            Produktegefunden.CursorType = 0
                            Produktegefunden.CursorLocation = 2
                            Produktegefunden.LockType = 3
                            Produktegefunden.Open()
                            Produktegefunden_numRows = 0
                            %>

                            und das funktionietr einwandfrei mit AND, wenn man kein, nur ein oder mehrere Felder ausfüllt!
                            Ich hoffe anhand dieses Beispiels wurde klarer was ich meinte.

                            Liebe Grüße
                            Xena


                            [Editiert von Berni am 20-03-2001 um 15:48]

                            Kommentar


                            • #15
                              klar funktionier es, nur das suchergebniss ändert sich

                              Beispiel

                              Nummer Titel Interpret Datum
                              1 Im Osten Niemann 2001
                              2 Im Westen Niemann 2001
                              3 Im Westen Morpheus 2000

                              so jetzt sich mal so
                              Select where Titel like "Osten" and interpret like "niemann"

                              dann gibt er dir nur denn Datensatz 1 aus !

                              suchst du aber so
                              Select where Titel like "Osten" or interpret like "niemann"
                              bekommnst du 1 und 2

                              Denn Karsten sucht mehrere Titel von einen Interpreten oder anders. Das ist ja der Sinn einer Musiksammlung und deren Abfrage ! wir können jetzt noch weiter diskutieren welcher OPerator wo besser eingesetzt werden kann, macht natürlich keinen sinn ;-)

                              ach ja, den ASP-Code den du unten gepostet hast sieht mir doch sehr nach Dreamweaver aus, kann das sein ?







                              MFG Morpheus

                              Der Computer rechnet mit allem -
                              nur nicht mit seinem Besitzer
                              Dieter Hildebrandt
                              www.slware.de - Scripts & Tutorials für professionelles Webdesign

                              Kommentar

                              Lädt...
                              X