Avatar billede ossian Nybegynder
03. maj 2004 - 22:51 Der er 6 kommentarer og
1 løsning

ASP og MySQL: Post fra DB hentes random og må ikke vises to gange

Hej Folkens ;-)

Jeg har en problemstilling jeg ikke helt kan regne ud:

Fra en tabel (pictures) henter jeg en post ud med følgende SQL:

Set ProfileRS = Conn.Execute("SELECT * FROM pictures where gender = '" & strgender & "' ORDER BY rand() ")

Her kan man så stemme på billedet og følgende kode tager imod stemmen og smider det ind i en anden tabel (votes):

strUserID = request.cookies("userid")
StrPID = request("pid")
StrRating = request("rating")


strSQL = "INSERT INTO votes (pid,created,uid,rating) VALUES ("
            strSQL = strSQL & "'" & strPID & "',"
            strSQL = strSQL & "'" & Convertdate(now(),0) & "',"
            strSQL = strSQL & "'" & strUserID & "',"
            strSQL = strSQL & "'" & strRating & "');"
            & "',"

            Conn.Execute strSQL

%>


Dog vil jeg undgå at folk får den samme post at se 2 gange.. altså hvis det findes en post i votes hvor strUserID (ligger i en cookie) tidligere har stemt på strPid (billede-id) så køres random-funktionen igen...

På forhånd tak :-)
Avatar billede ellebaek Nybegynder
03. maj 2004 - 22:56 #1
hmm...

hvis din cookie er , sepereret kan du så ikke bare sige..

Set ProfileRS = Conn.Execute("SELECT * FROM pictures where gender = '" & strgender & "' and not id in " & cookienavn & " ORDER BY rand() ")
Avatar billede ossian Nybegynder
03. maj 2004 - 23:00 #2
hmmm..det lyder fornuftigt.. det prøver jeg lige at rode med.. tak ;-)
Avatar billede ossian Nybegynder
03. maj 2004 - 23:06 #3
Har prøvet med:

Set ProfileRS = Conn.Execute("SELECT * FROM pictures where gender = '" & strgender & "' AND NOT UID IN '" & StrUserID & "' ORDER BY rand() ")

Og får:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''vbgpnuxhebtdkkbnncdfeorsyjevhj' ORDER BY rand()' at line 1
/makelove/inc/vote.asp, line 41
Avatar billede ossian Nybegynder
03. maj 2004 - 23:19 #4
Hmm.. har tænkt lidt ;-)

Det vil jo ikke virke da den skal læse fra [votes] om strUserID findes i  en post sammen med PID.. Cookien indeholder ikke alle stemmer, kun et userid..
Avatar billede ossian Nybegynder
03. maj 2004 - 23:56 #5
Nu har jeg prøvet med:

<%

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER=mysql ODBC 3.51 driver; SERVER=" & sql_Server & "; DATABASE=" & sql_DB & "; UID=" & sql_UID & "; PWD=" & sql_PWD   



strUserID = request.cookies("userid")
if request("vote") = "yes" then

StrPID = request("pid")
StrRating = request("rating")
strUserID = request.cookies("userid")


strSQL = "INSERT INTO votes (pid,created,uid,rating) VALUES ("
            strSQL = strSQL & "'" & strPID & "',"
            strSQL = strSQL & "'" & Convertdate(now(),0) & "',"
            strSQL = strSQL & "'" & strUserID & "',"
            strSQL = strSQL & "'" & strRating & "');"


            Conn.Execute strSQL

%>

Done..

<%

else

strGender = request("gender")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER=mysql ODBC 3.51 driver; SERVER=" & sql_Server & "; DATABASE=" & sql_DB & "; UID=" & sql_UID & "; PWD=" & sql_PWD   




Set ProfileRS = Conn.Execute("SELECT * FROM pictures, votes where pictures.gender = '" & strgender & "' AND votes.uid <> '" & StrUserID & "' AND votes.pid <> pictures.pid ORDER BY rand() ")
If NOT (ProfileRS.BOF AND ProfileRS.EOF) Then 

%>
<center>
<br>
<%=request.cookies("userid")%>
<br>
<form name="frmVote" action="default.asp?action=vote&gender=<%=strGender%>" method="post">
<input type="hidden" value="yes" name="vote">
<input type="hidden" value="<%=ProfileRS("uploadid")%>" name="votedfor">
<input type="hidden" value="<%=ProfileRS("pid")%>" name="pid">
<input type="hidden" value="" name="">

<% For Index = 1 To 10 %>
<input type="radio" name="rating" value="<%=Index%>" onclick="document.frmVote.submit();"><%=Index%>
<% Next %><br>

</form><br><img src="pictures/<%=profileRS("filename")%>">
<br>
<%=profileRS("pid")%>
</center>
<%
ProfileRS.Close
  Set ProfileRS = Nothing
End If

end if
%>

Men jeg bliver ved med at få det samme pid ud, selvom billeder skifter...højst mystisk...
Avatar billede ossian Nybegynder
04. maj 2004 - 10:39 #6
Der må da være nogen der kan hjælpe...evt´. komme med forslag til andre måder at løse problemet på...
Avatar billede ossian Nybegynder
06. maj 2004 - 23:03 #7
Jeg lukker og slukker :(
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester