25. juni 2006 - 00:36Der er
9 kommentarer og 1 løsning
problem ved søgning
Hvordan undgår jeg at få 3 udfald ved søgning på eksempelvis mark, grunden er at markm står i brugernavn, mark står i navn, og mark står i email i databasen.
Jeg ønsker kun ET udfald selvom jeg findes i 3 kolonner.
koden ser ud som følger
<% sog = request.form("soeg") response.write felt Set conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db.mdb") Sql = "SELECT distinct * FROM bruger WHERE (brugernavn LIKE '%" & sog & "%' or navn like '%" & sog & "%' or mail like '%" & sog & "%' or fodselsdag like '%" & sog & "%' or bynavn like '%" & sog & "%' or postnr like '%" & sog & "%' or profilbillede like '%" & sog & "%')" Set rs = Conn.Execute(sql) if rs.EOF or rs.BOF then response.write "Ingen med de indtastede oplysninger" else Do While Not rs.EOF %> <% birth = rs("fodselsdag") aar = datediff("yyyy",birth,date) temp = dateadd("yyyy",aar,birth) if datediff("d",temp,birth)<0 then aar = aar - 1 %> <b><font face="Arial" size="2"> <a href="default.asp?menu=VisProfil&id=<%=rs("id")%>"> <span style="text-decoration: none"><font color="#000000"><%=rs("navn")%> - <%=aar & " år"%> - <%=rs("postnr")%> <%=rs("bynavn")%></font></span></a></font></b><br> <% rs.movenext loop end if %>
DISTINCR bruges hvis der er dubletter af den samme post; Med mindre at du har flere poster ofer den samme bruger i din database, så er det ikke den du skal bruge.
Hvis det kun er én post du ønsker at få ud, så skal du bruge TOP 1 i stedet:
Sql = "SELECT TOP 1 * FROM bruger WHERE brugernavn LIKE '%" & sog & "%' OR navn LIKE '%" & sog & "%' OR mail LIKE '%" & sog & "%' OR fodselsdag LIKE '%" & sog & "%' OR bynavn LIKE '%" & sog & "%' OR postnr LIKE '%" & sog & "%' OR profilbillede LIKE '%" & sog & "%'"
Siden at jeg spørger, så er jeg nok ikke enig med dig i at det er forklaret godt nok. jokkejensen lydder heller ikke for sikker på at han har forstået spørgsmålet...
Din SQL-sætning:
Sql = "SELECT DISTINCT * FROM bruger WHERE brugernavn LIKE '%" & sog & "%' OR navn LIKE '%" & sog & "%' OR mail LIKE '%" & sog & "%' OR fodselsdag LIKE '%" & sog & "%' OR bynavn LIKE '%" & sog & "%' OR postnr LIKE '%" & sog & "%' OR profilbillede LIKE '%" & sog & "%'"
- bør ikke give dig dubletter. I hvert fald ikke hvis der ikke allerede er flere poster på samme bruger i din bruger-tabel.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.