Kolommencombinatie in ASP classic lukt niet

leifoet

Gebruiker
Lid geworden
7 okt 2007
Berichten
336
Bedoeling : 2 kolommen tonen
linkerkolom : vaste weergave van lijst met (aanklikbare) namen
rechterkolom : telkens de details op basis van de aangeklikte naam

Onderstaande code loopt niet zoals verwacht

>met veld Leden-Id (primair) : too few parameters. Expected 2
>indien ik dit veld vervang door een gewoon numeriek veld bijvoorbeeld «ledendnr» (zelfde nummering als Leden-Id) => geen error maar ook geen lijst in het linkervak (blijkbaar toch een verschil - zou hier het omgekeerde verwachten?).

Waar loopt de code fout?
Dank voor tips.

<%
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs2 = Server.CreateObject("ADODB.Recordset")


' Ophalen van geselecteerde ID (indien aanwezig)
selectedID = Request.QueryString("Leden-Id")

' Ophalen van lijst met namen (linkerkolom)
Sql = "SELECT leden-Id, Familienaam FROM Leden"
rs.Open sql, Conn

' Ophalen van details van geselecteerde persoon (rechterkolom)
If selectedID <> "" Then
Sql2 = "SELECT * FROM Leden WHERE Leden-Id=" & selectedID
rs2.Open sql2, Conn
End if
%>

<html>
<head>
<title>Personenlijst</title>
</head>
<body>
<table border="1" width="100%">
<tr>
<!-- Linkerkolom: Lijst met namen -->
<td width="30%" valign="top">
<h3>Namen</h3>
<ul>
<% Do While Not rs.EOF %>
<li>
<a href="programma.asp?id=<%=rs("Leden-Id")%>">
<%=rs("Familienaam")%>
</a>
</li>
<% rs.MoveNext %>
<% Loop %>
</ul>
</td>

<!-- Rechterkolom: Details van geselecteerde naam -->
<td width="70%" valign="top">
<% If Not rs2 Is Nothing And Not rs2.EOF Then %>
<h3>Details</h3>
<p><strong>Naam:</strong> <%=rs21("Familienaam")%></p>
<p><strong>Voornaam</strong> <%=rs2("Voornaam")%></p>
<p><strong>Email:</strong> <%=rs2("Emailadres")%></p>
<% ElseIf selectedID <> "" Then %>
<p>Geen details gevonden.</p>
<% Else %>
<p>Klik op een naam om details te zien.</p>
<% End If %>
</td>
</tr>
</table>
</body>
</html>
 
Ik ben zelf niet zo van de ASP(.net) en meer into PHP. Maar ik heb het 'magische orakel ChatGPT' even laten kijken.

Die melde het volgende:

In je ASP-code zijn er drie hoofdproblemen die het correct functioneren verhinderen. Ten eerste is er een mismatch tussen de parameternaam in de URL en de naam waarmee je deze uitleest. Je link bevat id=..., terwijl je in de code Request.QueryString("Leden-Id") gebruikt. Hierdoor wordt de parameter niet herkend. Beide moeten exact overeenkomen, bijvoorbeeld door Leden-Id=... te gebruiken in de URL.

Het tweede probleem heeft te maken met de veldnaam Leden-Id. Deze bevat een koppelteken (-), wat door SQL wordt geïnterpreteerd als een minteken (rekenkundige operator). Daardoor ontstaat er een foutmelding zoals "too few parameters". Dit los je op door veldnamen met speciale tekens tussen blokhaken te plaatsen, bijvoorbeeld [Leden-Id].

Tot slot zit er een typfout in de variabele die het recordset-object bevat. Je gebruikt rs21 terwijl het object in je code rs2 heet. Hierdoor wordt er geprobeerd data op te vragen uit een niet-bestaande variabele. Dit corrigeer je eenvoudig door overal consequent rs2 te gebruiken.

Met deze drie aanpassingen zou je code correct moeten werken.​
Give it a try......
Of stap over naar PHP... 😁

Verder kan je prima op dit forum je codeblokken mooi opmaken.
 
Terug
Bovenaan Onderaan