webForumDet fria alternativet

Förbättra kompis listan.

ASP

39 svar · 740 visningar · startad av Bosse168 · sida 2 av 2

Frågan, av Bosse168

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='

Läs frågan i sin helhet →
Medlem sedan dec. 20003 887 inlägg
#21

Jo, men det fungerar nog inte om det är Access... :l Jag har för mig att Access inte fixar join med flera villkor.

Medlem sedan juni 200032 967 inlägg
#22

Kanske inte. Men man kan ju alltid roa sig med att prova. :)

red: men förresten, var det inte MySQL det gällde?

mvh

Medlem sedan dec. 20003 887 inlägg
#23

Ah, jo det var det ju :) Men det löser ju tyvärr inte problemet.

Medlem sedan nov. 20031 018 inlägg
#24

Nope den loopar fortfarande ut alla som att dom vore online.

Koden för loopen:

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

	RecSet.MoveNext
	Loop
  
End If

RecSet.Close : Set RecSet = nothing
Connect.Close : Set Connect = nothing
Medlem sedan dec. 20003 887 inlägg
#25

Det är inte loopen det är fel på utan värdet på members.status, som inte blir tilldelat rätt. Frågan väljer ut alla kompisar, som dels har status godkand = 'Ja' och dels status = 'online'. Så om status är något annat än online, så kommer medlemmen inte med i resultatet. Eftersom du hävdar att den även verkar visa dom som inte är online, så bör det handla om ett fel i datat.

När tilldelar du en medlem status = 'online' och när tilldelar du en medlem status = 'offline'?

Medlem sedan nov. 20031 018 inlägg
#26

kolumnen status får värdet online när man loggar in och värdet offline när man loggar ut.
Säker på att den SQL satsen kollar upp rätt medlems status (online/offline)?

Medlem sedan nov. 20031 018 inlägg
#27

Inte någom mer som vet vad som kan vara fel?
Fick reda på ett annat forum att members.status = 'online' ska flyttas inom WHERE...

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"

Men det är fortfarande samma problem och kan det inte vara så att den hämtar min online status istället för polarens?

Medlem sedan dec. 20003 887 inlägg
#28

Testa lite grand för att se vad som är fel, t.ex. hämta ut dom som är online i members.

SELECT namn FROM members WHERE status = 'online'

Det verkar ju onekligen vara den delen som inte fungerar.

Medlem sedan nov. 20031 018 inlägg
#29

jo det funkar men jag vet bara hur man gör med inner join i SQL satser

Medlem sedan nov. 20031 018 inlägg
#30

Ingen som kan hjälpa mig? :(

Medlem sedan dec. 20003 887 inlägg
#31

Det kan nog gå bra att hjälpa lite mer, men jag tror att jag ivarjefall skulle vilja se hur databasen är uppbyggd. Det känns ju som att det är något som inte stämmer, när frågan visar dom som är offline trots att den tydligen endast ska välja ut dom namn från tabellen members vars status är online.
Som frågan ser ut, så ska det problemet inte finnas. Är det någon annan som kan se något fel?

Medlem sedan nov. 20031 018 inlägg
#32

Ok databasen är uppbyggd så här:

Databasen members:
namn = användarnamnet
status = offline eller online

databasen kompis:
namn = användarnamnet på den som startade relationen.
namn2 = användarnamnet på den som har godkänt relationen.

Medlem sedan dec. 20003 887 inlägg
#33

Ok. Dags att tolka din struktur då...

SELECT namn2
FROM kompis k
INNER JOIN members m
  ON m.namn = k.namn
WHERE m.namn = [i]username[/i]
  AND status = 'online'

Jag har medvetet skippat lite saker här, men jag tänkte att om inte den frågan returnerar det du vill, så blir jag än mer förbryllad.

Medlem sedan nov. 20031 018 inlägg
#34

nej den loopar fortfarande ut alla fast dom inte är online

Medlem sedan nov. 20031 018 inlägg
#35

tog o skrev ut bara strSQL:

SELECT namn2 FROM kompis k INNER JOIN members m ON m.namn = k.namn WHERE m.namn = 'bosse' AND status = 'online'

fick dock ändra username till '"& username &"'

Medlem sedan dec. 20003 887 inlägg
#36

Va? Ja, frågan är det inte fel på, men din datastruktur verkar vara knasig.

SELECT namn2 FROM members WHERE namn = 'bosse' AND status = 'online'

Nu har jag inga fler förslag på samma sak. :l

Medlem sedan nov. 20031 018 inlägg
#37

kan det inte vara så på något sätt att SQL satsen kollar upp min online status så det är därför den tror att personen är online?

Medlem sedan nov. 20031 018 inlägg
#38

alltså jag vill kolla igenom databasen kompis där namnet namn eller namn2 stämmer överens med variablen username, och sedan kolla upp i databasen members statusen på användaren som inte stämmer överens med variablen username.

Medlem sedan dec. 20003 887 inlägg
#39

Ja, men vilken relation har dom två tabellerna? Den verkar inte vara helt rätt...

För att visa hur jag skulle lägga upp det

tblMembers
-lngUserID Long (PK) --unikt användarid
-strUsername Text (30) --användarens namn
-blnStatus Boolean (Yes/No) --True = online, False = offline

tblFriends
-lngMemberID Long --Relationen till medlemmen
-lngFriendID Long --Medlemmens kompis idnummer

För att välja ut en medlems vänner ur den strukturen

SELECT strUsername
FROM tblMembers tblM
INNER JOIN tblFriends tblF
  ON tblF.lngMemberID = tblM.lngUserID
WHERE blnStatus
  AND lngUserID = [i]användarid[/i]

Jag förstår faktiskt inte hur din data är lagrad, så jag har lite svårt för att hjälpa dig ytterligare. Tyvärr.

Medlem sedan nov. 20031 018 inlägg
#40

members
-username --unikt användarid & användarens namn
-status --varchar(7) antingen offline eller online står det där.

kompis
namn --varchar - namnet (username)på den som startade relationen.
namn2 --varchar - namnet (username) på den som har godkänt den.

274 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)