Avatar billede plato Juniormester
27. september 2002 - 10:32 Der er 34 kommentarer og
1 løsning

Speciel afstemning i ASP

<Genbrug> -->Jeg skal bruge et stemmesystem som på alfanexus, eller lign. Hvor en bruger kan give sin mening, og så ændrer 'stjernerne' status alt efter hvad der bliver stemt. (Der må kun være én status bar)
Det skal bruges til http://www.trailersiden.dk , til hver eneste film.<-- </Genbrug>

Er der virkelig ikke nogen der kan hjælpe???
Jeg har oprettet spm før, men jeg mangler det virkelig.
Og lad nu være med at henvise til andre sider. Sidst var det solutions2all, men der henviser de også til andre sider. Og der henvises til poll's, til alm. brug. DET KAN JEG IKKE BRUGE.

Hvis bare der er nogen som kan give mig scriptet, finder jeg selv ud af resten.

Mvh en håbende Plato
Avatar billede askhoej Praktikant
27. september 2002 - 10:37 #1
på Filippinerne koster en programmør kun 16 kroner i timen, prøv at spørg der, herhjemme koster en programmer 1000 kr timen :-)

/askhoej
Avatar billede plato Juniormester
27. september 2002 - 10:39 #2
Jeg kunne jo også håbe på, at en eller anden ligger inde med et script de gerne vil dele... ;)
Avatar billede phineas_phreak Nybegynder
27. september 2002 - 10:40 #3
:D askhoej ... Plato er det noget lignende det system de har på www.edbpriser.dk til anmeldelse af hardware ?
Avatar billede plato Juniormester
27. september 2002 - 10:43 #4
Jeps..Nemlig lige på den måde. Dog behøver man ikke at skrive navn, email m.m. Kun stemme muligheden.
Avatar billede phineas_phreak Nybegynder
27. september 2002 - 11:11 #5
vil gerne prøve. skal nemlig også selv bruge noget lignende :D men kan ik love at det bliver lige med det samme :( Håber nogle andre kan hjælpe dig imens
Avatar billede plato Juniormester
27. september 2002 - 11:20 #6
Okies..Håber du finder ud af noget, og at du giver lyd. ;)
Avatar billede eagleeye Praktikant
27. september 2002 - 19:29 #7
Jeg vil måske godt prøve at lave spørger lige lidt til hvad du vil havde..:

1. Hvad er min/max karakter som du har idag men 0-5 stjernet?

2. Når karakteren udskrive skal det væred med grafik?
  Hvis Ja: Hvad er opløsningen på stjernene? Eks hvis 2 har stem og ialt givet 5 stjerner så giver det 2,5... Skal det vises som 2,5 stjerne eller rudnes op/ned?

3. Hvilken Database bruger du?

4. Hvis du bruger grafik, levere du alle grafik filerne for stjerne, 0,1,2,3,4,5 stjerne valgt + evt halve 0.5,1.5,2.5 ovs?
Avatar billede eagleeye Praktikant
27. september 2002 - 19:32 #8
5. Skal der bygges sikring ind i det så eks man ikke kan stemme 7 gange i træk?
Avatar billede plato Juniormester
27. september 2002 - 23:30 #9
eagleeye..

Dejligt du vil kigge på det. Her er lidt svar.

1: Karakter - 0-5. Tænkte på at 0 skal være skrevet som 'Ingen stemmer'

2: Hvis 2 har stemt og det giver 5 , ja, så skal det være 2,5.

3: Jeg bruger access 2000.

4: Jeg har nogle stjerner som du kan kigge på. Se om det dur. Ellers må jeg lige lave noget andet. Smid din mail (hvis du vil) til admin@trailersiden.dk, så sender jeg stjernerne til dig.

5. Folk skal helst kun kunne stemme én gang.

Mvh Plato
Avatar billede excession Nybegynder
28. september 2002 - 00:05 #10
lytter med
Avatar billede eagleeye Praktikant
28. september 2002 - 00:09 #11
Skal man kunne give 1-5 point eller 0-5 point?

5. Folk skal helst kun kunne stemme én gang....
Er man logget ind for at få lov at stemme eller hvordan havde du tænkt en sådan sikring ville virke..?
Avatar billede plato Juniormester
28. september 2002 - 00:27 #12
0 = Tekst  'Ingen stemmer'
1 = en stjerne
osv.

5. Kan det ikke laves på ip? Man skal ikke være logget ind.
Avatar billede plato Juniormester
28. september 2002 - 00:35 #13
Ved godt at nogen har dynamisk IP.Men det er der ikke noget at gøre ved.
Avatar billede eagleeye Praktikant
28. september 2002 - 11:26 #14
Hej igen ..

Hvis man vil gemme IP for hver stemme bliver tabellen hurtig meget lang/stor hvis du har mange besøgne, IP logning er et valg man tager og der er fordele/ulemper ved det, bare husk på hvis en stor flok mennesker sidder bag en proxy/firewall vil de alle havde samme IP adresse så kun en kan stemme....


Jeg forstiller mig en tabel som indeholder samme stemmerne som vi kan kalde stemmeTbl:
IP : text
stjerner : tal
givetTil : tal  .. denne skal være unik ID på det produkt/film man har stemt på.
Avatar billede plato Juniormester
28. september 2002 - 13:41 #15
Hey...

Må indrømme jeg tænkte nærmere over det efter jeg havde skrevet det.
Tabellen bliver lang.
Men spørgsmålet er også om folk overhovedet stemmer flere gange. De får jo ikke noget ud af at en film f.eks bliver stemt på 20 gange.

Måske skulle man nok lade ip loging være, og måske hvis man finder det nødvendigt, bygge det til senere.


Det sidste lyder godt.
Avatar billede eagleeye Praktikant
28. september 2002 - 13:51 #16
Det førte jeg havde tænkt på var nemlig at havde en kolonne for hver film i tabellem og så talte man en counter for hvor mange der havde stemt og en kolonne hvor man summerede stjerne som var givet.
Så kunne man let regne gennemsnittet ud ved at dividere de to kolonner. Men det giver så ingen sikkerhed for mange stemmer, dog kunne man lave en cookien som genner ID på den man har stemt på for at fange de fleste som ville stemme to gange.
Avatar billede eagleeye Praktikant
28. september 2002 - 15:39 #17
Første udgave af koden, som du kan se af kommentarne skal det flettes ind i den kode du har som udskiver filmne.. I første omgang kan dette eks bare copy/pasted ind i en ny fil med navnet spm263120.asp og så skal database forbindelsen rettes til.


En tabel med navnet  stemmeTbl:
id : autonummer
stemmer : tal
totalStjerner : tal
givetTil : tal




<html>
<head>
<title>Stem</title>
</head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("db9.mdb")
Conn.Open ConnStr
Set rs = Server.CreateObject("ADODB.RecordSet")


if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  stempaa = Request.Form("stempaa")
  karakter = Request.Form("karakter")
  strSQL = "SELECT id FROM stemmeTbl WHERE givetTil = " & stempaa
  set rs = Conn.Execute (strSQL) 
  'Tjek om der er stem på filmen før eller det er føtste gang.
  if rs.EOF then
    strSQL = "INSERT INTO stemmeTbl (stemmer, totalStjerner, givetTil) VALUES (1, " & karakter & ", " & stempaa & ")"
  else 
    strSQL = "UPDATE stemmeTbl SET stemmer = stemmer + 1, totalStjerner = totalStjerner + " & karakter & " WHERE givetTil = " & stempaa
  end if
  Conn.Execute (strSQL) 
end if
%>




<%
'Denne del udskriver stemmebox og antal stjerne givet..:

'Finder med en SQL antal stjerner for en film.
'Denne SQL skal nok indarbejes i den SQL du har som hendter de film som skal vises på en side
'så man kun hendter data en gang.
strSQL = "SELECT stemmer, totalStjerner FROM stemmeTbl WHERE givetTil = 1"
set rs = conn.Execute (strSQL)
if rs.EOF then
  billede = "s0"
else
  stemmer = 1*rs("stemmer")
  totalStjerner = 1*rs("totalStjerner")
  if stemmer = 0 then
    billede = "s0"
  else
    snit = Round(totalStjerner / stemmer,3) * 2
    snit = round(snit) / 2
    snit = replace(snit, ".", "k")
    snit = replace(snit, ",", "k")
    billede = "s" & snit
  end if
end if

Response.Write "<img src=""" & billede & ".gif"">"
%>

<%
  'Stemme formen den skal også bygges ind i den fil hvor du udskriver filmene
  'Bland andet skal hidden feltet stempaa's values ændre til ID på den film som vises
%>
<form action="spm263120.asp" method="post">
<input type="hidden" name="stempaa" value="1">
<input type="radio" name="karakter" value="1">1
<input type="radio" name="karakter" value="2">2
<input type="radio" name="karakter" value="3" checked>3
<input type="radio" name="karakter" value="4">4
<input type="radio" name="karakter" value="5">5<br>
<input type="submit" name="Stem" value="Stem">
</form>


<%
Conn.Close
%>

</body>
</html>
Avatar billede eagleeye Praktikant
28. september 2002 - 16:47 #18
Jeg glemte lige at skrive hvad billede filerne hedder, de slutter alle på.gif :

s0  : 0 stjerner
s1  : 1 stjerne
s1k5 : 1 ½ stjerne
s2  : 2 stjerner
s2k5 : 2 ½ stjerner
s3  : 3 stjerner
s3k5 : 3 ½ stjerner
s4  : 4 stjerner
s4k5 : 4 ½ stjerner
s5  : 5 stjerner
Avatar billede plato Juniormester
28. september 2002 - 20:14 #19
eagleeye..

Det ser godt ud, men jeg tænkte nu mere på et selvstændigt script, hvor hver stemme boks har sin egen unikke ID. Så man kan oprette flere stemme bokse i samme database. Problemet er at alle film siderne hos mig er i .html (Ved godt det er lamt)..

Nej...jeg gemmer sgu scriptet, laver alle mine filmsider til asp, som jeg længe har ville gjort. Så kan jeg også få orden i skridtet. Og få stemme-stjernerne med.
Avatar billede plato Juniormester
28. september 2002 - 20:14 #20
Her btw alle 10 stjerne-formater i gif.
Avatar billede eagleeye Praktikant
29. september 2002 - 14:10 #21
Jeg er ikke helt med på hvordan du havde tænkt afstemningen skulle komme ind på en siden for hver film???  Skulle det være en pop-up hvor man kunne stemme, men hvordan skulle resultatet så vises?....
Avatar billede plato Juniormester
29. september 2002 - 17:37 #22
Selve scriptet skal være en script for sig selv. En selvstændig database. I databasen kan man så selv tilføje afstemninger som man vil, med en givet ID som man bruger på siden.

Et script på en enkelt side bruges til visningen, hvor det henviser til det ID som passer til den afstemning man har oprettet i databasen.
Avatar billede eagleeye Praktikant
29. september 2002 - 18:25 #23
Ok men det er faktisk næsten sådan det virker.

Her er tabellen med stemme sammen tællingen. Så kan man fjeren kolonnen givetTil som var tænkt som ID på den film man stemte på. Så skal du bare bruge ID til at bestemme hviken afstemning man har gang i..:

ID : autonummer   
stemmer : tal
totalStjerner : tal



Så kan koden rettes til dette:


<%
'Her skriver du i SQL ID=xx på det nummer som du vil havde vist + stemme på
strSQL = "SELECT stemmer, totalStjerner FROM stemmeTbl WHERE ID = 1"
set rs = conn.Execute (strSQL)
if rs.EOF then
  billede = "s0"
else
  stemmer = 1*rs("stemmer")
  totalStjerner = 1*rs("totalStjerner")
  if stemmer = 0 then
    billede = "s0"
  else
    snit = Round(totalStjerner / stemmer,3) * 2
    snit = round(snit) / 2
    snit = replace(snit, ".", "k")
    snit = replace(snit, ",", "k")
    billede = "s" & snit
  end if
end if

Response.Write "<img src=""" & billede & ".gif"">"
%>
<form action="spm263120.asp" method="post">
<input type="hidden" name="stempaa" value="<%=rs("ID")%>">
<input type="radio" name="karakter" value="1">1
<input type="radio" name="karakter" value="2">2
<input type="radio" name="karakter" value="3" checked>3
<input type="radio" name="karakter" value="4">4
<input type="radio" name="karakter" value="5">5<br>
<input type="submit" name="Stem" value="Stem">
</form>
<%
Conn.Close
%>
Avatar billede eagleeye Praktikant
29. september 2002 - 19:03 #24
Glemte lige det som opdater stemmeboxen.. koden kan laves om det til dette så man bruger ID og ikke givetTil i SQL sætningen:



if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  stempaa = Request.Form("stempaa")
  karakter = Request.Form("karakter")
  strSQL = "UPDATE stemmeTbl SET stemmer = stemmer + 1, totalStjerner = totalStjerner + " & karakter & " WHERE ID = " & stempaa
  Conn.Execute (strSQL) 
end if
%>
Avatar billede plato Juniormester
29. september 2002 - 20:13 #25
Nu er jeg ikke helt med..Koden ser fin ud..Men hvordan skal databasen se ud?..

(Ved godt jeg er sløv) ;)
Avatar billede eagleeye Praktikant
29. september 2002 - 20:20 #26
Database tabellen til den sidste kode:

tabellen skal hedde stemmeTbl med disse kolonner:
ID : autonummer
stemmer : tal
totalStjerner : tal

ID er nummeret på afstemingen som bruge i SQL sætniger finde den bestemte afstening. stemmer er antalet af afgivne stemmer. totalStjerner er antallet af det totale antal stjerne givet.

Det er hvad der skal til som minimun så kan du evt tilføje flere kolonner hvis du vil havde en overskrift/test tilknyttet til afstemningen.
Avatar billede plato Juniormester
29. september 2002 - 21:13 #27
Det er sgu bare fornemt..Jeg vil kigge på det..Og få det til at virke hvor det skal. ;)
Avatar billede plato Juniormester
30. september 2002 - 05:25 #28
Hmmm, nu har jeg siddet hele natten og jeg kan ikke få det smækket sammen. Hvis du får 200 point oveni, vil du så lave tabellen og asp filen?..
Avatar billede plato Juniormester
02. oktober 2002 - 06:33 #29
Tabellen har jeg lavet, men det virker ikke.
Avatar billede eagleeye Praktikant
02. oktober 2002 - 08:42 #30
Jeg kan da sende den ASP filen jeg og database fil jeg har lavet...
Avatar billede plato Juniormester
02. oktober 2002 - 09:17 #31
Eagleeye..

Det er lige meget..Det virker fint. Jeg fandt et lille tegn som ikke skulle være der. Det drillede mig bare en del. ;)

Du kan selv tjekke. http://www.trailersiden.dk /klik på trailers /klik på Z / klik på teksten "Zoolander" eller "Zorro". SÅ kan du se det.

Men er det svært at lave sådan man kun kan stemme én gang?
Avatar billede eagleeye Praktikant
02. oktober 2002 - 09:23 #32
Nej det skal bare laves på en anden måde. Skal det være med IP logning?? for man kan oprette en ny table med disse kolonner som så sikre man ikke kan stemme flere gange på den samme...

stemt
IP : text
stemmeID : tal  som er lig den stemmebox/film man har stemt på
Avatar billede plato Juniormester
02. oktober 2002 - 09:45 #33
Det er egenlig lidt lige meget hvordan det gøres. Bare på den nemmeste måde.
Avatar billede eagleeye Praktikant
03. oktober 2002 - 21:26 #34
hej og undskyld vendtetiden....


Jeg har lavet en ny tabel i samme database fil som ser sådan ud:

tabelnavn:  ipLog
id : autonummer
ipadr : text
boxId : den stemmebox man har stemt på




if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  Set rsTest = Server.CreateObject("ADODB.RecordSet")
  stempaa = Request.Form("stempaa")
  karakter = Request.Form("karakter")
  strSQL = "SELECT id FROM ipLog WHERE IPadr = '" & Request.ServerVariables("REMOTE_ADDR") & "' AND boxID = " & stempaa 
  set rsTest = Conn.Execute (strSQL) 
  'Tjek om denne IP adr har stem før...
  if rsTest.EOF then
    strSQL = "UPDATE stemmeTbl SET stemmer = stemmer + 1, totalStjerner = totalStjerner + " & karakter & " WHERE givetTil = " & stempaa
    Conn.Execute (strSQL) 
    strSQL = "INSERT INTO ipLog (IPadr, boxID) VALUES ('" & Request.ServerVariables("REMOTE_ADDR") & "', " & stempaa & ")"
    Conn.Execute (strSQL)
  else
    'Denne IP adr har stem før lad som ingen ting...
  end if 
  rsTest.Close
end if
Avatar billede plato Juniormester
04. oktober 2002 - 21:08 #35
Jeg takker utrolig mange gange. Du har været en kæmpe hjælp!!

Mvh Plato
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