Toon posts:

[asp] drop down menu search

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb de volgende code gemaakt...

het is een deel van mijn asp file zonder de layout.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<%
Dim objDC, objRS

' Create and establish data connection
Set objDC = Server.CreateObject("ADODB.Connection")
objDC.ConnectionTimeout = 15
objDC.CommandTimeout = 30

'Use this line to use Access
objDC.Open "DBQ=" & Server.MapPath("db\kenniskaart.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;MaxBufferSize=8192;Threads=20;", "", ""


' Create recordset and retrieve values using the open connection
Set objRS = Server.CreateObject("ADODB.Recordset")
' Opening record set with a forward-only cursor (the 0) and in read-only mode (the 1)

' If a request for a specific id comes in, then do it o/w just show pulldown
If Len(Request.QueryString("kennisgebiedId")) <> 0 Then
    ' request record for requested id
    objRS.Open "SELECT * FROM dbo_kennisgebied INNER JOIN (dbo_medewerker INNER JOIN dbo_kt_mk ON dbo_medewerker.medewerkerId = dbo_kt_mk.medewerkerId) ON dbo_kennisgebied.kennisgebiedId = dbo_kt_mk.kennisgebiedId WHERE kennisgebiedId = " & Replace(Request.QueryString("kennisgebiedId"), "'", "''") & " ORDER BY kennisgebied", objDC, 0, 1
    ' Show selected record
    If Not objRS.EOF Then
        objRS.MoveFirst
        %>

<table border="0" cellspacing="0" cellpadding="0">
<tr>
    <td><b><font face="Verdana" size="2"><%= rstSearch.Fields("aanhef").Value %>&nbsp<%= rstSearch.Fields("titel").Value %>&nbsp<%= rstSearch.Fields("tussenvoegsel").Value %>&nbsp<%= rstSearch.Fields("achternaam").Value %>,&nbsp<%= rstSearch.Fields("voorletters").Value %></font></b><br>[img]"<%=[/img]" align="left" border="1" bordercolor="#000000"></td>
</tr>
<tr>
    <td><table border="0" cellspacing="0" cellpadding="0">
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Roepnaam:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= rstSearch.Fields("roepnaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Functie:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= rstSearch.Fields("functienaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Sector/Onderdeel:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= rstSearch.Fields("sectornaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Afdeling:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= rstSearch.Fields("afdelingnaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Kamernummer:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= rstSearch.Fields("kamernummer").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Telefoon:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= rstSearch.Fields("telefoonnummer1").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>E-mail:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= rstSearch.Fields("emailadres1").Value %></font></td>
</tr>
    </table></td>
  </tr></table><br><br>

        <%
    End If
    objRS.Close
End If

objRS.Open "dbo_kennisgebied", objDC, 0, 1
' Loop through recordset and display results
If Not objRS.EOF Then
    objRS.MoveFirst
    ' the form below calls this file only this time with an id in the QueryString
    %>
    <form action="zoekopkennisgebied3.asp" method="get">
    <select name="id">
        <option></option>
    <%
    ' Continue until we get to the end of the recordset.
    Do While Not objRS.EOF
        ' For each record we create a option tag and set it's value to the employee id
        ' The text we set to the employees first name combined with a space and then their last name
        %>
        <option value="<%= objRS.Fields("kennisgebiedId") %>"><%= objRS.Fields("kennisgebied") %></option>
        <%
    ' Get next record
    objRS.MoveNext
    Loop
    %>
    </select>
    <input type="Submit" value="Zoeken" class="borderbutton" />
    </form>
    <%
End If

' Close Data Access Objects and free DB variables
objRS.Close
Set objRS =  Nothing
objDC.Close
Set objDC = Nothing
%>


er is een tabel Medewerker met alle medewerkergegevens.
er is een tabel Kennisgebied, met de id + het bijhorende kennisgebied.
er is een koppeltabel MK, met het kennisgebiedid gekoppeld aan een medewerkerid.

met een drop down menu heb ik alle kennisgebieden geladen en worden
geladen uit de kolom kennisgebied. een soortgelijk script werkt prima voor
een smoelenboek. maar als ik nu een kennisgebied selecteer en ik submit
laadt hij niet de tabel met de resultaten.

ik ontvang geen errors. ziet iemand mijn fout?

  • party42
  • Registratie: Oktober 2000
  • Laatst online: 11:17
1. je post een form
2. vervolgens vraag je het kennisgebiedid uit met een Request.QueryString

volgens mij werkt dat niet :)

Everyday's an endless stream, of cigarettes and magazines...


Verwijderd

Topicstarter
het form post niet, hij staat op get en verwijst naar dezelfde pagina.
zoekopkennisgebied3.asp dus.

de fout zit in de querie?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 10:37

mulder

ik spuug op het trottoir

- check recordcount
- response.write van die querystring
- kan soms verschil maken : Len("" & Request.QueryString("kennisgebiedId")) <> 0

oogjes open, snaveltjes dicht


Verwijderd

Je doet dit:
Len(Request.QueryString("kennisgebiedId"))

Terwijl in je form dit staat:
<select name="id">

Lijkt me toch niet werken....
De querystring die je opvraagt is gewoon altijd niks. Dus ook geen resultaten.

Verwijderd

Topicstarter
<select name="id">

verandert in <select name="kennisgebiedId">

na het kiezen van een kennisgebied krijg ik de melding dat:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] The specified field 'kennisgebiedId' could refer to more than one table listed in the FROM clause of your SQL statement.

/stagevb/zoekopkennisgebied10.asp, line 114

misschien moet ik de query anders formuleren.

Verwijderd

dat zit hem dus in je query : op deze plaats:

WHERE kennisgebiedId = " & Replace(Request.QueryString("

Daar moet je je tabelnaam nog ff voorzetten. Er worden namelijk in meerdere tabellen het object "kennisgebiedId" gevonden!
;)

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Verwijderd schreef op 12 mei 2004 @ 14:34:
een stuk niet al te fraaie code
ik kan het toch niet laten hoor :)

- maak eens wat meer gebruik van CSS, want <font /> kan echt niet meer...


daarnaast is de ASP die je produceert behoorlijk lek

wanneer je omgaat met een numeriek waarde moet je doe gewoon afvangen door een IsNumeric oid

wil je het echt mooi doen dan maak je gebruik van parameterized queries en daarover is de afgelopen maanden genoeg voorbij gekomen op dit forum...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
het is mij al gelukt !

4 advanced: je antwoord was een deel van de oplossing.
niet alleen in de query moest ik de tabelnaam nog erbij
plakken, maar ook op sommige andere plaatsen moest
ik dbo_kennisgebied nog plakken voor kennisgebiedId.

faabman: tuurlijk maak ik gebruik van css, ik maak eerst
het technische gedeelte en dan de layout en css technieken.

parameterized queries gaat mij te ver, omdat ik simpelweg
niet genoeg kennis heb m.b.t. dit onderwerp. de tijd is er
nu niet om mij daarin te verdiepen. thx voor je verwijzing,
misschien iets voor de toekomst.

topic kan dicht!
Pagina: 1