Hoppas jag skriver i rätt forum annars får ni rätta mig! Själva felet hittar ni på http://www.streetcars.se/fastlane.asp Klicka på t.ex. T så dyker ett felmeddelande upp. Klicka på D så fungerar det hur bra som helst. Skulle tippa på att det inte finns några på T. Det finns en hel del medlemmar på T. Tar jag bort all kod som hämtar medlemmarnas namn/profil så visas deras bilar och inga felmeddelanden. Kan det vara som så att du skickar in ett litet t men de är sparade med stort T i databasen? Jag har kikat i din kod. JAg får lov att säga att du med spänning kan se fram emot mycket att lära dig. Ett jättestort tack Micke! Vet att jag har mycket att lära, särskilt att optimera koden. Jag utgår oftast bara från det jag har i huvudet och det blir ofta "ful" kod men det fungerar för det mesta. Problem med databas. SQL-fråga?
Nu var det ett tag sedan jag skrev koden men jag hittar inte felet. Finns säkert ett bättre sätt att göra SQL-frågorna som ni kanske kan hjälpa mig med. Jag lägger inte in all kod här utan länkar till ett textdokument: http://www.streetcars.se/fastlane.txt
Det verkar som om det blir fel när jag försöker hitta namnet på en medlem i en annan tabell. Alltså jag hämtar namnet ur en tabell och vill ha ut info med det specifika namnet ur en annan tabell.
Hoppas jag förklarat hyffsat..Sv: Problem med databas. SQL-fråga?
Har för mig att sådana felmeddelanden kommer då.
Så kolla om recordet du hämtar har några poster innan du börjar anända dem.
/MickeSv:Problem med databas. SQL-fråga?
Sv: Problem med databas. SQL-fråga?
Edit: Det går inta att söka på t i sökfältet heller...Jag tror att det ligger något felaktigt värde i en post med T och att den posten orsakar att inga t alls går att hämtaSv: Problem med databas. SQL-fråga?
Jag ser det som den troligaste anledningen att det saknas en post i din tblAuthor tabell. Detta skulle ge det felmedelande du beskriver.
Jag har renskrivit din kod lite och lagt till lite optimeringar:
<!--#include file="htmlhead.asp" -->
<!--#include file="dbconn.asp" -->
<%
Function StripName(Name)
StripName = Replace(Name,".","-")
StripName = Replace(StripName,"å","a",,,vbTextCompare)
StripName = Replace(StripName,"ä","a",,,vbTextCompare)
StripName = Replace(StripName,"ö","o",,,vbTextCompare)
StripName = Replace(StripName,":","",,,vbTextCompare)
End Function
%>
<table width='80%'>
<tr>
<td>
<img src='bilder/cube.gif'>
<b class='rubrik'>Fastlane</b>
<br>
Här hittar du gatbilar som tillhör streetcars medlemmar.<br>
<%
if Request.cookies("namn") <> "" then
Response.write "Din Fastlane kontrollpanel"
end if
startmapp = Server.MapPath("fastlane")
%>
<form name="search" method="post">
Sök medlem eller bil: <input name="ord" type="text" size="30"><%=Request.Form("ord")%></input> <input name="action" type="submit" value="Sök">
</form><br>
Visa medlemmar:
<%
Dim fso
Dim Temp
Dim Data()
Dim strFilter
Dim ValidFilter
Set fso = CreateObject("Scripting.FileSystemObject")
Data = Array("Alla", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö")
ValidFilter = false
strFilter = Request.querystring("visa")
For Each Temp In Data
Response.write "" & Server.HTMLEncode(Temp) & ""
'Validerar querystring värdet visa
If Temp = strFilter Then
ValidFilter = true
End If
Next
%>
<br><br><br>
</td>
</tr>
</table>
<%
'Sök på namn eller bilmodell
If Request.Form("action") = "Sök" then
%>
<table width='60%'>
<tr>
<td><b class='rubrik'>Medlemsprofil:</b>
</td>
<td><b class='rubrik'>Fastlane:</b>
</td>
</tr>
<%
'Sök på medlemsnamnet
Dim strSQL
Dim strFind
strFind = Replace(request.form("ord"), "'", "''")
strSQL = "SELECT tblFastlane.*, tblAuthor.Author_ID" & vbCrLf & _
"FROM tblFastlane LEFT JOIN tblAuthor ON tblFastlane.fastUser = tblAuthor.Username" & vbCrLf & _
"WHERE fastUser LIKE '%" & strFind & "%' OR fastModell LIKE '%" & strFind & "%'" & vbCrLf & _
"ORDER BY fastUser ASC"
Set RS = Conn.Execute(strSQL)
Dim fldAuthorID
Dim fldFastUser
Dim fldFastModell
Set fldAuthorID = RS("Author_ID")
Set fldFastUser = RS("fastUser")
Set fldFastModell = RS("fastModell")
Do Until RS.EOF
%>
<tr><td>
<%
strFastUser = StripName(fldFastUser.Value,".","-")
Response.write Server.HTMLEncode(strFastUser) & "</td>"
Response.write "<td>" & Server.HTMLEncode(fldFastModell) & ""
'Sök om medlemmen lagt upp ett foto
'Sökväg till foto1.jpg
foto = startmapp & "\" & strFastUser & "\foto1.jpg"
'Visa foto1 om filen finns
If (fso.FileExists(foto)) Then
Response.write "<img src='bilder/kamera.gif'></td></tr>"
End if
RS.Movenext
Loop
RS.close
%>
</table>
<%
Elseif Len(strFilter) > 0 then
%>
<table width='60%'>
<tr>
<td><b class='rubrik'>Medlemsprofil:</b>
</td>
<td><b class='rubrik'>Fastlane:</b>
</td>
</tr>
<%
If ValidFilter Or strFilter <> "Alla" Then
strSQL = "SELECT tblFastlane.*, tblAuthor.Author_ID" & vbCrLf & _
"FROM tblFastlane LEFT JOIN tblAuthor ON tblFastlane.fastUser = tblAuthor.Username" & vbCrLf & _
"WHERE fastUser LIKE '" & strFilter & "%'" & vbCrLf & _
"ORDER BY fastUser ASC"
Else
strSQL = "SELECT tblFastlane.*, tblAuthor.Author_ID" & vbCrLf & _
"FROM tblFastlane LEFT JOIN tblAuthor ON tblFastlane.fastUser = tblAuthor.Username" & vbCrLf & _
"ORDER BY fastUser ASC"
End if
Set RS = Conn.Execute(strSQL)
Do Until RS.EOF
%>
<tr><td>
<%
strFastUser = StripName(fldFastUser.Value,".","-")
Response.write Server.HTMLEncode(strFastUser) & "</td>"
Response.write "<td>" & Server.HTMLEncode(fldFastModell) & ""
'Sök om medlemmen lagt upp ett foto
'Sökväg till foto1.jpg
foto = startmapp & "\" & strFastUser & "\foto1.jpg"
'Visa foto1 om filen finns
If (fso.FileExists(foto)) Then
Response.write "<img src='bilder/kamera.gif'></td></tr>"
End if
RS.Movenext
Loop
RS.close
%>
</table>
<%
Else
%>
<img src='bilder/fastlanefoto.gif'>
<br>
<br>
<%
End if
Set RS = nothing
Conn.close
Set Conn = nothing
Set fso = Nothing
%>
<!--#include file="htmlfoot.asp" -->
Här är några av punkterna jag adresserat:
* VIKTIGT! Stäng dina recordset. Även om du öppnar dem med execute metoden.
* VIKTIGT! Kontrolera informationen klienter skickar till dig.
* VIKTIGT! Formatera information du visar på skärmen. Användaren kan annars publicera kod som förvränger eller elak kod. Till din hjälp har du Server.HTMLEncode(), Server.URLEncode().
* Optimering: Joins istället för flera recordset.
* Optimering: Skapa (FSO) objekt utanför loop
* Optimering: Använda fältvariabler.
* Optimering: Använda WHERE satsen i SQL.
* mm...
Sv:Problem med databas. SQL-fråga?
Har rensat ut en massa onödig kod (sajten skrevs för ett år sedan och jag har bättrat mig en del sedan dess..) och kollat på hur du löst det. Felet ligger, som sagt, troligtvis i tblAuthor tabellen. Läste om Joins i en bok för några månader sedan men hittade nu inget bra exempel på nätet. Skulle vara tacksam för ett tips till någon bra sajt att lära sig mer om SQL-frågor!
Jag brukar använda Server.HTMLEncode() men måste missat det här. Fältvariabler är jag bara slarvig med... Återigen tack för alla bra tips!