Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Dürchsuchen einer SQL Datenbank mit asp??? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Dürchsuchen einer SQL Datenbank mit asp???


 
Karsten
19-03-2001, 11:07 
 
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.

 
Xena
19-03-2001, 13:13 
 
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

 
Karsten
19-03-2001, 13:57 
 
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???

 
Xena
19-03-2001, 14:04 
 
*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

 
Karsten
19-03-2001, 14:12 
 
hmmmmmmm,

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

Danke dir.

 
Karsten
19-03-2001, 14:23 
 
Und was wenn ich in ein Feld nicjts reinschreibe, was dann. Wird das ignoriert oder muss ich eine If Abfrage machen???

 
Karsten
19-03-2001, 14:29 
 
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.

 
Xena
19-03-2001, 14:51 
 
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

 
Morpheus
19-03-2001, 21:55 
 
ä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

 
Titus
20-03-2001, 09:46 
 
ü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!

 
Xena
20-03-2001, 10:32 
 
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

 
Xena
20-03-2001, 12:46 
 
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 ^_^°

 
Morpheus
20-03-2001, 15:00 
 
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 ?

 
Xena
20-03-2001, 15:43 
 
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]

 
Morpheus
20-03-2001, 15:59 
 
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 ?

 
Xena
20-03-2001, 16:11 
 
Ja ich glaub du hast recht, ich mach mir da jetzt nicht noch weiter nen Kopf drum, ich brauch mein Gehirnschmalz noch um ein anderes schwierigeres Problem zu lösen :)
Ja, ich benutze Dreamweaver UltraDev 4 *g* aber bis auf ein paar recordsets die ich mit dreamweaver generiere programmiere ich fast alles per hand, weil dreamweaver doch nicht alles kann ^_^°
immerhin hab ich schon fast einen kompletten e-shop programmiert *stolzbrustschwell*
und das ganz alleine!
:)
Gruß Xena <3

 
Morpheus
20-03-2001, 16:19 
 
ja ist ja auch egal, musst halt sehen das es für dich passt. Bei Fragen etc kannste ja noch mal Posten.

noch 2 Buchtipps :
Active Serverpages lernen und Beherschen von Microsoft-Press
ISBN 3-86063-611-1 99DM

Jetzt lern ich ASP von Markt und Technik 49,95


Habe beide Bücher gelesen (bzw gefressen) kann auch beide nur empfehlen.

 
Xena
20-03-2001, 16:25 
 
Cool, das erste Buch hab ich auch hier liegen und dann noch
MS SQL Server 7.0 im Webserver aus dem Hanser Verlag
ISBN: 3-446-21099-7
das erklärt teilweise sogar besser als "Active Server Pages lernen und beherrschen"
kann ich also nur empfehlen!
dann noch

http://www.aspgerman.com

ein sehr gutes Forum über ASP, vorallem sehr gut wegen der großen Zahl an Mitgliedern, hab dort auch schon sehr schnelle Antworten bekommen!

Gruß Xena

 
Morpheus
20-03-2001, 16:33 
 
wenn diese verdammt Bücher nichgt nur so teuer wären... mann mann mann... Fürn schüler eben mal so 99DM... tolll

 
Titus
21-03-2001, 09:37 
 
select *
from Tabelle1
where Spalte1 = 2
(Spalte1 sei int)
dann kann ich doch nicht das in einfachen Hochkommata setzen ' ?

Wen der phpMyAdmin das kann, kannst du das auch.

 
Xena
21-03-2001, 10:06 
 
Vielen Dank Titus für diese fachlich fundierte Erklärung!

 
Morpheus
21-03-2001, 11:00 
 
versteh ich jetzt auch nicht, was im himmelswillen hat das MyPHPadmin zu tun ? Wir sprechen von ASP mit Access und nicht von MySQL-Datenbanken

 
Xena
21-03-2001, 11:54 
 
Eigentlich ja von MS SQL und nicht Access, aber ich glaub die beiden sind sich sehr ähnlich (is ja beides Microsoft!)
Aber MySQL hat bestimmt eine etwas andere Syntax.
Ich hab das ja schon beim Umstieg von Oracle auf MS SQL gemerkt, das da vieles anders ist.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:38 Uhr.