Zum Inhalt springen

Datenbankeinträge in select Box schreiben


Empfohlene Beiträge

Ahhh ich Dösbaddel!

Es ist richtig, dass die Hersteller 3mal ausgegeben werden. Für jedes gefundene Modell wird der zugehörige Hersteller mit ausgegeben. 3 Modelle - 3 Hersetller - mein Fehler.

Also am besten ist wohl, du machst 2 Schritte

Schritt 1:

Ausgabe der Hersteller:

strObj = "Selcet Hersteller_ID, Hersteller from THersteller";

dann sie Ausgabe in einer Listbox (Schleife)

<% while blabla

<option value='<% objRS("Hersteller_ID") %>'>

<% objRS("Hersteller") %>

</option>

<% wend %>
Schritt 2: Ausgabe der Modelle (neue listbox): strObj = "Selcet Modell_ID, Modell from TModelle"; dann sie Ausgabe in einer Listbox (Schleife)
<% while blabla

<option value='<% objRS("Modell_ID") %>'>

<% objRS("Modell") %>

</option>

<% wend %>
^^ Das müsste richtiger sein. Das mit den Fremdschlüsseln hast du richtig verstanden. Man kann in Access irgendwie die Fremdschlüssel angeben, ist aber eher unwichtig für die Abfragen (und ich weiß nicht wie). Du brauchst nur eine Spalte deren Inhalt der Primärschlüssel der zugehörigen Tabelle entspricht, z.B. Tabelle: Hersteller Primärschlüssel: Hersteller_ID Tabelle: Modelle Primärschlüssel: Modell_ID Fremdschlüssel: DeinName In DeinName steht dann immer die Hersteller_ID des Herstellers des jeweiligen Modells Mit
SELECT Modell FROM TModelle WHERE DeinName = '5'

bekommst du dann alle Modelle, die zum Hersteller mit der ID 5 gehören.

So wie es aus sieht, haben wir es bald :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

Ich habe jetzt folgendes gemacht:

Eine Tabelle HerstellerT mit folgenden Spalten:

ID_Hersteller Hersteller

1 Renault

2 VW

Eine Tabelle ModelleT mit folgenden Spalten:

ID_Modelle Modelle ID_Hersteller

1 Clio 1

1 Golf 2

2 Megane 1

3 Laguna 1

Eine Tabelle PST die aber momentan nicht das Problem ist.

Wenn ich auf Renault klick zeigt er mir alle Modelle an. Er soll mir aber alle außer den Golf anzeigen. Bei VW zeigt er nichts an.

Kann sich jemand mal den Quelltext anschauen und mir sagen was ich falsch mache?


<form name="open" action="index5.asp">


<%

strDB = "Data Source=" & Server.MapPath("store.mdb")


strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB

SET objCon = Server.CreateObject("ADODB.Connection")

objCon.Open strCon


strSQL = "SELECT * FROM HerstellerT ORDER BY Hersteller"


Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.open strSQL, objCon

%>



<!-- Selectbox für Hersteller -->

<select style="width:100px" onChange="document.open.submit()" name='Hersteller' size='10'>

<% While Not EOF and Err=0%>

<option value='<% =objrs("ID_Hersteller")%>'><% =objrs("Hersteller")%></option>

<%

ObjRS.MoveNext

EOF = objRS.EOF

Wend

EOF = false

'ObjRS.MoveFirst

%>

</select>


<%

strSQL = "SELECT * FROM ModelleT ORDER BY Modelle"

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.open strSQL, objCon

%>


<!-- Selectbox für Modelle-->

<select style="width:100px" onChange="document.open.submit()" name='Modelle' size='10'>

<%

[COLOR="Red"]While Not EOF

if  Request.Querystring("Hersteller")  = 1 then

   While Not EOF and Err=0%>

	<option value='<% =objrs("ID_Modelle")%>' & '<% =objrs("ID_Hersteller")%>'><% =objrs("Modelle")%></option>[/COLOR]	<%

	ObjRS.MoveNext

	EOF = objRS.EOF

   Wend

else

	ObjRS.MoveNext

	EOF = objRS.EOF

end if

wend

EOF = false

%>

</select>




<%

strSQL = "SELECT * FROM PST ORDER BY ID_PS"

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.open strSQL, objCon

%>


<!-- Selectbox für Modelle-->


<select style="width:100px" onChange="document.open.submit()" name='PS' size='10'>

<% While Not EOF and Err=0%>

<option value='<% =objrs("PS")%>'><% =objrs("PS")%></option>

<%

ObjRS.MoveNext

EOF = objRS.EOF

Wend

EOF = false

ObjRS.MoveFirst

%>

</select>



Lg

Sunflower84

Link zu diesem Kommentar
Auf anderen Seiten teilen

<%

strSQL = "SELECT * FROM ModelleT ORDER BY Modelle"

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.open strSQL, objCon

%>


<!-- Selectbox für Modelle-->

<select style="width:100px" onChange="document.open.submit()" name='Modelle' size='10'>

<%

While Not EOF

if  Request.Querystring("Hersteller")  = 1 then

   While Not EOF and Err=0%>

	<option value='<% =objrs("ID_Modelle")%>' & '<% =objrs("ID_Hersteller")%>'><% =objrs("Modelle")%></option>	<%

	ObjRS.MoveNext

	EOF = objRS.EOF

   Wend

else

	ObjRS.MoveNext

	EOF = objRS.EOF

end if

wend

EOF = false

%>

</select>
Dein SQL-Statement ist fehlerhaft. Du selektierst alle Modelle, deswegen werden auch alle angezeigt. Wie wär's mit:
strHerstellerID = Request.Querystring("Hersteller")

strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller = "

           + strHersteller + "ORDER BY Modelle"

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe es jetzt verbessert. Bekomme aber folgende Fehlermeldung:

Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ID_Hersteller ='.

/auswahl/index7.asp, line 38


<%


'strSQL = "SELECT * FROM ModelleT ORDER BY Modelle"


strHerstellerID = Request.Querystring("Hersteller")

strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller = " + strHerstellerID + "ORDER BY Modelle"


Set objRS = Server.CreateObject("ADODB.Recordset")

[COLOR="red"]objRS.open strSQL, objCon[/COLOR]

%>


<!-- Selectbox für Modelle-->

<select style="width:100px" onChange="document.open.submit()" name='Modelle' size='10'>

<%

While Not EOF

if  Request.Querystring("Hersteller")  = 1 then

   While Not EOF and Err=0%>

	<option value='<% =objrs("ID_Modelle")%>' & '<% =objrs("ID_Hersteller")%>'><% =objrs("Modelle")%></option>

	<%

	ObjRS.MoveNext

	EOF = objRS.EOF

   Wend

else

	ObjRS.MoveNext

	EOF = objRS.EOF

end if

wend

EOF = false

%>

</select>

Hab folgendes geändert. Denke das war ein Fehler von dir. Habe strHersteller in strHerstellerID geändert. Denke das war ein Tippfehler, oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe es jetzt verbessert. Bekomme aber folgende Fehlermeldung:

Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ID_Hersteller ='.

/auswahl/index7.asp, line 38


<%


'strSQL = "SELECT * FROM ModelleT ORDER BY Modelle"


strHerstellerID = Request.Querystring("Hersteller")

strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller = " + strHerstellerID + "ORDER BY Modelle"


Set objRS = Server.CreateObject("ADODB.Recordset")

[COLOR="red"]objRS.open strSQL, objCon[/COLOR]

%>

Hab folgendes geändert. Denke das war ein Fehler von dir. Habe strHersteller in strHerstellerID geändert. Denke das war ein Tippfehler, oder?

Ja das war einer.

Probier mal diese Version des Statements:

strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller = " + strHerstellerID + " ORDER BY Modelle"

Bei der vorherigen Version fehlte ein Leerzeichen vor ORDER BY.

Eventuell musst du noch einzelne Hochkommas (') in das Statement einbauen. (nach dem = und vor dem Leerzeichen von ORDER BY)

Ansonsten überprüf mal, was aus dem Request kommt.

LG René

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also das mit den Hochkommas klappt leider auch nicht.

Habe aber ein interessantes Phänomen entdeckt.

Wenn ich dieses = entferne macht er mir keinen Fehler, erst wenn ich auf VW oder Renault klick kommt eine Fehlermeldung.

Wenn ich danach das = wieder rein mache, funktioniert es. Dann kommt wenn ich Renault anklick alle Modelle außer der Golf, so wie es sein soll.

Wenn ich auf anderen Webseiten surf und die Seite danach wieder aufruf funktioniert es auch noch. Aber wenn ich den Browser schließe und erneut öffne funktioniert es nicht mehr.

strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller =" + strHerstellerID + " ORDER BY Modelle"

Erst wenn ich den gleichen Vorgang (erst "=" löschen,speichern dann "=" einfügen,speichern...) wiederhole funktioniert es wieder.

Also langsam werde ich verrückt. Kann mir das vielleicht jemand erklären?

Das ist doch total unlogisch.

Lg

Sunflower84

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab das jetzt so gemacht. Weiss aber nicht ob es das ist was du gemeint hast da der Fehler immer noch erscheint.


strHerstellerID = Request.Querystring("Hersteller")

strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller =" + strHerstellerID + " ORDER BY Modelle"



Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.open strSQL, objCon

%>


<!-- Selectbox für Modelle-->

<select style="width:100px" onChange="document.open.submit()" name='Modelle' size='10'>

<%


While Not EOF


if  Request.Querystring("Hersteller")  = 1 then

   While Not EOF and Err=0%>

	<option value='<% =objrs("ID_Modelle")%>' & '<% =objrs("ID_Hersteller")%>'><% =objrs("Modelle")%></option>

	<%

	ObjRS.MoveNext

	EOF = objRS.EOF

   Wend

else

	ObjRS.MoveNext

	EOF = objRS.EOF

end if

wend

[COLOR="Red"]if strHerstellerID= 0 then

	strHerstellerID=2

end if[/COLOR]EOF = false

%>

</select>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es ist schon das richtige, aber an der falschen Stelle und ein wenig falsch, wenn ich mich richtig an meine alten VB6-Zeiten erinnere...

strHerstellerID = Request.Querystring("Hersteller")

if strHerstellerID = "" OR strHerstellerID = null OR strHerstellerID = "0" Then

strHerstellerID = "2"

END IF

strSQL = "SELECT * FROM ModelleT WHERE ID_Hersteller =" + strHerstellerID + " ORDER BY Modelle"

Die IF-Abfrage muss vor der DB-Abfrage kommen, da tritt ja schließlich der Fehler auf. Und du musst bedenken das strHerstellerID ein String ist und kein Integer oder sonst was.

Das müsste eigentlich gleich klappen ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Super. Das klappt jetzt.:D

Jetzt muss ich das ganze nur noch mit den PS machen. Ich denke den Rest bekomme ich jetzt alleine hin.

Wenn nicht werde ich mich nochmal melden.

Vielen Dank Eytibi das du so viel Geduld mit mir gehabt hast. Werde mich auf jeden Fall per ICQ mal bei dir melden.

Lg

Sunflower84

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...