Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 13:50 Der er 29 kommentarer og
1 løsning

Hjælp til optælling af point

Jeg er ved at lave en hjemmeside og der inde vil jeg gerne have et point system, nu vil jeg lige høre om hvordan jeg tæller op

altså vis jeg har en database med en tabel der hedder point i den tabel er der 3 felter:
Id
Loginnavn
Point

nu er mit spørgsmål bare hvordan tæller jeg dem op altså vis nu jeg tilføjer en bruger med loginnavn: Hans og han får 30 point, så går jeg ind og giver hans 20 point mere, jeg vil have mit system til selv at tælle de point sammen som har samme loginnavn

er det muligt?

jeg ønsker samtidig også at kunne trække dem fra igen
Avatar billede michael_stim Ekspert
10. februar 2005 - 13:55 #1
Noget á la
SELECT SUM(Point), Loginnavn FROM tabelnavn GROUP BY Loginnavn
Avatar billede fennec Nybegynder
10. februar 2005 - 13:57 #2
Hvis det er ligesom E skal du have 2 tabeller:

Bruger:
id, navn....

Point:
fraBrugerID, tilBrugerID, point
Avatar billede fennec Nybegynder
10. februar 2005 - 14:00 #3
... total bliver så:

select sum(point) from Point where tilBrugerID=11
minus
select sum(point) from Point where fraBrugerID=11
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 14:32 #4
nu skal det lige siges at jeg bruger Dreamweaver, og ja jeg ved godt at de fleste vil sige at jeg skal bruge en html editor, men nu bruger jeg altså Dreamweaver...
Avatar billede michael_stim Ekspert
10. februar 2005 - 14:41 #5
<%
  set conn = server.CreateObject("ADODB.CONNECTION")
  DSN = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("\db\databasenavn.mdb")

  conn.Open DSN
  strsql = "SELECT SUM(Point) AS total, Loginnavn FROM tabelnavn GROUP BY Loginnavn"
      ' SQL sætning eksekveres
      set RS = conn.execute(strsql)
      do while not rs.EOF
        response.write rs("Loginnavn") &" Point: "& rs("total") &"<br>"
        rs.MoveNext
        Loop
  %>
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 14:52 #6
mange tak michael stim, men ser det her rigtigt ud?

http://62.66.193.30/eksperten/fil1.jpg
Avatar billede michael_stim Ekspert
10. februar 2005 - 14:55 #7
Nu kan jeg intet om dreamweaver, men selve SQL-stringen er OK.
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 15:10 #8
okay nu fik jeg den til at samle pointene sammen, men nu vil jeg så gerne vis jeg nu laver en formular hvor jeg skriver hvor mange point jeg vil slette fra personen, og trykker på submit, så skal den fjerne de point...
Avatar billede michael_stim Ekspert
10. februar 2005 - 15:12 #9
Så skriver du bare (SUM(point) - Feltnavn)
Husk at det skal väre int eller hvad du har sat det til.
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 15:17 #10
int?
Avatar billede michael_stim Ekspert
10. februar 2005 - 15:19 #11
Er ikke sikkert det er nödvendigt at konvertere til integer, men får du fejl er det måske det ;o)
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 15:19 #12
kan jeg godt skrive (SUM(point) i samme SQL-String som SELECT SUM(point)
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 15:20 #13
hvad er integer?
Avatar billede michael_stim Ekspert
10. februar 2005 - 15:22 #14
Integer er heltal. Tänker på databasen.
Er nöd til at smutte nu, er först tilbage i aften.
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 15:24 #15
sådan her ser min SQL-String ud nu, det fungere ikke:
SELECT SUM(point) AS total (SUM(mpoint)
FROM point
WHERE loginnavn = 'MMColParam'
Avatar billede kjulius Novice
10. februar 2005 - 16:33 #16
Bare for at få det på det rene:

Er der tale om et system som Experten, hvor der bliver overført point fra en bruger til en anden, sådan som fennec tror?

Eller er der simpelt hen tale om, at en bruger på nogen bestemte konditioner skal have tildelt nogen point af dig/dit program?

Er der nogen grund til at holde styr på den idividuelle pointgivning (som vil kræve en tilføjelse af poster hver gang der sker en tildeling/fratagning af point og følgelig en opsummering ved visning) eller skal der bare være en summeret pointgivning som kan klares med en opdatering af pointposten?

En grund til individuelle pointgivning kunne være, at du ville lave en tidsstempling af hvornår de enkelte point blev givet, men med din tabelopbygning ser jeg ingen indikationer i den retning.

En afklaring af formålet med pointene ville helt sikkert gøre det lettere at hjælpe dig.
Avatar billede kjulius Novice
10. februar 2005 - 16:40 #17
En ting ser dog umiddelbart lidt forkert ud i den SQL du har:

MMColParam er jo en parameter, men når du bare angiver den som 'MMColParam' er det i stedet blevet til en konstant. Du er nødt til at opbygge den - og her må jeg strække våben; jeg ved ikke om det kan lade sig gøre bare at indtaste det i Dreamweavers SQL felt uden apostroffer:

SELECT SUM(point) AS total (SUM(mpoint)
FROM point
WHERE loginnavn = MMColParam
Avatar billede kjulius Novice
10. februar 2005 - 16:43 #18
Argh, jeg kopierede direkte fra det du skrev i din sidste kommentar, hvor der vist havde indsneget sig en typografisk fejl. SQLen skal naturligvis være:

SELECT SUM(point) AS total
FROM point
WHERE loginnavn = MMColParam
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 20:42 #19
jammen helt iorden kjulius, jeg vil have et point system som fungere på den måde at jeg har lavet et rank system i forvejen, når man starter som basis bruger så har man fra start af 20 point, så kan man få flere point ved at skrive privat beskeder til andre og skrive indlæg i mit forum, man kan også få flere point ved at få tildelt dem af andre brugere...

Håber det hjalp
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 20:44 #20
når man så når et vist antal point så går man op i rank og flere muligheder bliver låst op på min site...
Avatar billede kjulius Novice
10. februar 2005 - 21:49 #21
Okay, men jeg er lidt træg i det:-)

Så jeg har stadig ikke forstået, om du opdaterer brugernes point-felt, eller du opretter nye poster med positive og negative point hver gang der sker ændringer - poster, som så skal lægges sammen i en sum-funktion?
Avatar billede speedy_2003 Nybegynder
10. februar 2005 - 22:13 #22
jeg har to felter et der hedder point og et der hedder mpoint, mpoint er de negative point og point er de positive, jeg opretter ny post hvergang...
Avatar billede kjulius Novice
10. februar 2005 - 23:45 #23
Okay, så når du skal tælle point sammen så bruger du:

SELECT SUM(point) - SUM(mpoint) AS PointIalt
FROM point
WHERE loginnavn = MMColParam

Jo, det er da en måde at gøre det på...
Avatar billede speedy_2003 Nybegynder
11. februar 2005 - 02:39 #24
okay men så tæller den jo både minus og plus point sammen

altså lad os nu siger at peter har 50 plus point altså point og han også har brug 25 minus point altså mpoint så skal den jo ikke lægge de 2 tal samme for at vise hvor mange point han har, for han har jo så kun 25 point da han har fået trukket 25 fra...
Avatar billede speedy_2003 Nybegynder
11. februar 2005 - 02:42 #25
ja undskyld du har ret, mange gange undskyld... jeg havde ikke lige tjekket det først...
Avatar billede speedy_2003 Nybegynder
11. februar 2005 - 03:06 #26
forresten hvordan sortere jeg efter hvem der har flest point... også var der lige et andet spørgsmål releterede til spørgsmålet, jeg er villig til at give i alt 200 point

det andet spørgsmål er, hvordan laver jeg en formular med en boks hvor brugere kan afgive point til en anden bruger, men kun så mange point som brugere har, altså lige i øjeblikket vis jeg nu trækker 200 point fra en der kun har 100 point så står der ligepludselig -100 det er jo meningen af man max skal kunne trække de point fra som man har...
Avatar billede fennec Nybegynder
11. februar 2005 - 08:37 #27
1:
SELECT (SUM(point) - SUM(mpoint)) AS total, Loginnavn
FROM point
GROUP BY Loginnavn
ORDER BY total DESC

2:
du trækker bare brugerens nuværende point ud, også undersøger du om det er mindre end det indtastet. Du viser selvfølgelig hans point, når han skal indtaste, så han ved hvor mange han har, men du skal også tjekke det inden du opdater databasen, ellers kan man jo bare indtaste et større tal. Tjek også for at tallet er større end 0, ellers kan man trække point fra andre ved at indtaste negative værdier.
Avatar billede speedy_2003 Nybegynder
11. februar 2005 - 15:24 #28
okay...

1. når jeg sætter den SQL-String ind så får jeg afvide at der var for få parametere der var ventet 1
Avatar billede fennec Nybegynder
14. februar 2005 - 12:50 #29
Det kan være den ikke vil bruge alias på order by:

SELECT (SUM(point) - SUM(mpoint)) AS total, Loginnavn
FROM point
GROUP BY Loginnavn
ORDER BY (SUM(point) - SUM(mpoint)) DESC
Avatar billede speedy_2003 Nybegynder
23. januar 2006 - 15:07 #30
Lukker...
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