---
title: "Förbättra kompis listan."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/89739-förbättra-kompis-listan"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Bosse168"
published: "2003-11-05T21:42:59.000Z"
updated: "2003-11-17T17:58:09.000Z"
replies: 39
views: 752
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/89739-förbättra-kompis-listan"
---

# Förbättra kompis listan.

_Sida 1 av 2._

## #1 — Bosse168, 2003-11-05T21:42Z

Någon som har lust att förbättra min "kompis lista"?
Skulle vara hemskt tacksam om jag kunde få bort lite IF satser och en o annan RecSet :)

```
<%@ LANGUAGE="VBSCRIPT" %>
<% Response.Expires=-1%>
<% Response.Buffer = True %>

<%
username=session("username")

Set RecSet = Connect.Execute("SELECT * FROM kompis WHERE namn='" & username & "' AND godkand='Ja' OR namn2='" & username & "' AND godkand='Ja'")

If RecSet.EOF Then

response.write("<br>Din kompis lista är tom<br><br>")
Else

response.write("<table border='0' cellpadding='0' cellspacing='0' width='100%'>" & _
"<tr><td width='100%' colspan='3'><img border='0' src='bilder/polare-on.gif' width='79' height='10'></td></tr>")

countF=0
Do Until RecSet.EOF
countF=countF+1

if RecSet("namn")=username then

Set RecSet2 = Connect.Execute("SELECT * FROM members WHERE username='" & RecSet("namn2") & "' AND status='online'")

If not RecSet2.EOF Then

%>

  <tr>
    <td width="88%">&nbsp;<a href="plejs.asp?se=<%=RecSet("namn2")%>"><%=RecSet("namn2")%></a></td>
    
<td width="7%">
<a href="plejs/gastbok.asp?se=<%=RecSet("namn2")%>">
<img src="bilder/lillegb.gif" alt="Gå till gästboken" border="0" width="14" height="10"></a>&nbsp;

    </td>
<td width="5%">
<a href="mail/skapamail.asp?till=<%=RecSet("namn2")%>&direkt=ja">
<img src="bilder/brev.gif" alt="Skicka ett meddelande till <%=RecSet("namn2")%>" border="0" width="14" height="10"></a>
</td>
  </tr>

<%
End If

RecSet2.Close
Set RecSet2 = Nothing

else if RecSet("namn2")=username then

Set RecSet2 = Connect.Execute("SELECT * FROM members WHERE username='" & RecSet("namn") & "' AND status='online'")

If not RecSet2.EOF Then
%>

  <tr>
    <td width="88%">&nbsp;<a href="plejs.asp?se=<%=RecSet("namn")%>"><%=RecSet("namn")%></a></td>
    
<td width="7%">
<a href="plejs/gastbok.asp?se=<%=RecSet("namn")%>">
<img src="bilder/lillegb.gif" alt="Gå till gästboken" border="0" width="14" height="10"></a>&nbsp;
    </td>
<td width="5%">
<a href="mail/skapamail.asp?till=<%=RecSet("namn")%>&direkt=ja">
<img src="bilder/brev.gif" alt="Skicka ett meddelande till <% =RecSet("namn")%>" border="0" width="14" height="10"></a>
</td>
  </tr>
<%
RecSet2.Close
Set RecSet2 = Nothing
End If
end if
end if

RecSet.MoveNext
Loop

Response.Write("</table>")

If countF="0" Then
Response.Write("<i>Inga polare online</i>")
End If

End If
RecSet.Close : Set RecSet = nothing
%>
```

Permalänk: https://www.webforum.nu/p/89739

## #2 — mozilla, 2003-11-05T22:55Z

kompislista

kollade inte igenom så noga, men du borde kunna lösa det med

```
Set RecSet= Connect.Execute("SELECT kompis.namn2,members.namn,members.status FROM kompis INNER JOIN members ON members.namn = kompis.namn2 WHERE kompis.namn='" & username & "' AND godkand= 'Ja' OR namn2='" & username & "' AND godkand='Ja' ORDER BY members.status")

If RecSet.EOF Then
  Response.Write("<br>Din kompislista är tom!<br><br>")
Else
  Do until RecSet.EOF
    Response.Write RecSet("status") &" - <a href=""plejs.asp?se="& RecSet("namn2") &""">"& RecSet("namn2") &"</a>"
    RecSet.MoveNext
  Loop
End If

RecSet.Close : Set RecSet = nothing
```

Så kanske, nu är jag inte så jätte inställd i hur din databas ser ut, och jag antar att namn2(i kompis) är samma som finns i namn(i members). Det skulle iofs vara bättre att spara id, och på så sätt länka dem.

Koden är också helt otestat, och kan behöva modifieras lite, men förhoppningsvis ska den funka bättre.

Permalänk: https://www.webforum.nu/p/1198408

## #3 — Bosse168, 2003-11-06T00:38Z

Funkar bra fast ett litet problem, den loopar ut även dom som är offline. Alltså den ska kolla i members.status om personen är online och bara loopa ut dom som är online.
Din loop hämtar även ut sitt egna namn, ibland hamnar man som namn2 och ibland som namn (beroende på vem som startade relationen).

Permalänk: https://www.webforum.nu/p/1198446

## #4 — mozilla, 2003-11-06T18:18Z

för att bara hämta dem som är online kan du lägga till "AND members.status = 'online'

Nu vet jag inte riktigt exakt vad du vill göra. Men för att hämta ut alla kompisar som "namn" har som är online, kan man göra så här:

```
SELECT kompis.namn2,members.status FROM kompis INNER JOIN members ON members.namn = kompis.namn2 WHERE kompis.namn='" & username & "' AND kompis.godkand= 'Ja' AND members.status ='online'")
```

Fast du borde i fortsättningen skapa bättre namn på tabellerna(namn,namn2) kan bli lite förvirrande, speciellt för utomstående. 
Det vore bättre att dels spara personerna med deras ID(istället för namn) samt att döpa tabellerna till "mittID" o "kompisID", eller liknande.

Permalänk: https://www.webforum.nu/p/1198780

## #5 — Bosse168, 2003-11-09T17:59Z

Det som blir lurigt med den SQL satsen är att det är inte alltid som ens egna namn(ID) hamnar i kolumnen namn, beroende på vem som startar relationen. Om t.ex. jag startar den så hamnar mitt ID i kolumnen namn och om någon annan startar den så hamnar ju mitt namn i kolumnen namn2.
Är helt nollställd på hur jag ska göra då.

Permalänk: https://www.webforum.nu/p/1203057

## #6 — Engine^, 2003-11-10T11:53Z

Målar du inte in dig i ett hörn nu? Poängen med att lista 'mina kompisar' är väl att jag ska få en lista med dom jag har markerat som kompis. Att sedan andra kan ha valt att vara kompis med mig och jag inte valt att vara kompis med dom ska väl inte innebära att jag vill få upp dessa namn, när jag listar mina kompisar?

Permalänk: https://www.webforum.nu/p/1203349

## #7 — Bosse168, 2003-11-10T12:10Z

man måste först godkänna dom (kompis.godkand= 'Ja').

Permalänk: https://www.webforum.nu/p/1203354

## #8 — Engine^, 2003-11-10T12:41Z

Jo, men jag antar att det är den som vill bli kompis, som måste få ett godkännande. Men om du verkligen vill ha upp alla så kanske detta kan fungera.

```
SELECT k.namn2, m.status
FROM kompis k
INNER JOIN members m
  ON m.namn = k.namn2
WHERE k.namn = '[i]username[/i]'
  AND k.godkand = 'Ja'
  AND m.status = 'online'
UNION SELECT k.namn, m.status
FROM kompis k
INNER JOIN members m
  ON m.namn = k.namn
WHERE k.namn2 = '[i]username[/i]'
  AND k.godkand = 'Ja'
  AND m.status = 'online'
ORDER BY 1
```

Permalänk: https://www.webforum.nu/p/1203374

## #9 — Bosse168, 2003-11-11T17:19Z

Funkar ju inte alls.
Funkar den koden till en MySQL databas?

Permalänk: https://www.webforum.nu/p/1204050

## #10 — Engine^, 2003-11-11T17:31Z

Ingen aning, tyvärr... jag testade mot Access. :l  Jag vet inte om MySQL hanterar UNION.

Permalänk: https://www.webforum.nu/p/1204062

## #11 — Inferis, 2003-11-11T21:51Z

Blev fel...

Permalänk: https://www.webforum.nu/p/1204217

## #12 — Bosse168, 2003-11-12T16:03Z

Ingen som vet hur man gör detta mot en MySQL databas?

Permalänk: https://www.webforum.nu/p/1204489

## #13 — mozilla, 2003-11-12T20:00Z

Jo, men jag förstår inte vad du vill göra? Den koden jag skrev fungerar(vad jag vet) bra för att ta ut någons kompisar som är online. Och den fungerar mot mySQL. 

> Målar du inte in dig i ett hörn nu?

Kanske bättre att tänka om i så fall?

Permalänk: https://www.webforum.nu/p/1204603

## #14 — Bosse168, 2003-11-12T20:28Z

får det här fel messet:
\[TCX\]\[MyODBC\]You have an error in your SQL syntax near 'UNION SELECT k.namn, m.status FROM kompis k INNER JOIN members m ON m.namn = k.n' at line 1

Permalänk: https://www.webforum.nu/p/1204621

## #15 — Engine^, 2003-11-12T20:37Z

Ah, men det är min lilla SQL-sats, **mozilla**s såg ut såhär

```
strSQL = "SELECT kompis.namn2,members.namn,members.status " & _
  "FROM kompis " & _
  "INNER JOIN members " & _
  "  ON members.namn = kompis.namn2 " & _
  "WHERE (kompis.namn='" & username & "' " & _
  "  OR namn2='" & username & "') " & _
  "  AND godkand='Ja' " & _
  "ORDER BY members.status"

Set RecSet= Connect.Execute(strSQL)
```

Permalänk: https://www.webforum.nu/p/1204630

## #16 — Bosse168, 2003-11-12T23:09Z

Den funkade men den loopar ändå ut alla fast dom inte är online.

Permalänk: https://www.webforum.nu/p/1204720

## #17 — Engine^, 2003-11-12T23:12Z

Jag klippte och klistrade lite klantigt...

```
strSQL = "SELECT kompis.namn2,members.namn,members.status " & _
  "FROM kompis " & _
  "INNER JOIN members " & _
  "  ON members.namn = kompis.namn2 " & _
  "WHERE (kompis.namn='" & username & "' " & _
  "  OR namn2='" & username & "') " & _
  "  AND godkand='Ja' " & _
  "  AND members.status = 'online'" & _
  "ORDER BY members.namn"

[blue]  ' "ORDER BY member.status" är meningslös, eftersom alla är online...[/blue]
Set RecSet= Connect.Execute(strSQL)
```

Permalänk: https://www.webforum.nu/p/1204725

## #18 — Bosse168, 2003-11-12T23:29Z

loppar fortfarande ut alla.

Permalänk: https://www.webforum.nu/p/1204733

## #19 — Engine^, 2003-11-12T23:41Z

Då är det du som har ett bekymmer med det sätt du sparar medlemmens status.

```
AND members.status = 'online'
```

Säger tydligt att frågan väljer ut alla ur databasen som har status online.

Permalänk: https://www.webforum.nu/p/1204739

## #20 — @nders, 2003-11-13T07:04Z

Man kan ju alltid roa sig med att försöka flytta status-villkoret från WHERE-delen till JOIN-instruktionen:

```
strSQL = "SELECT kompis.namn2,members.namn,members.status " & _
  "FROM kompis " & _
  "INNER JOIN members " & _
  "  ON members.namn = kompis.namn2 " & _
  "  AND members.status = 'online' " & _
  "WHERE (kompis.namn='" & username & "' " & _
  "  OR namn2='" & username & "') " & _
  "  AND godkand='Ja' " & _
  "ORDER BY members.namn"
```

Inte för att jag vet om det hjälper, men roa sig kan man alltid. ;)

Mvh

Permalänk: https://www.webforum.nu/p/1204764

---

Tråden på webben: https://www.webforum.nu/amne/asp/89739-förbättra-kompis-listan  
Nästa sida: https://www.webforum.nu/amne/asp/89739-förbättra-kompis-listan/page2.md
