Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 5
Seite [1]
Pred


Poststar




Herkunft: Bischofsmais
Beiträge: 762
# Thema - 29.09.2008 um 13:19 Uhr
Hallo zusammen,

ich habe mir in den Kopf gesetzt, die Spiele DB auf meiner Seite um eine Vote Addon zu erweitern. In etwa so, wie das Ranking Teil von Onlinewelten.de (Guckst du hier)).

Sodla, ich dachte das wär eigentlich ganz simpel, aber entweder ich bin zu doof dafür, oder es ist wirklich kompliziert.

hier mal der Code den ich bisher hätte:
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
1. / 2. / ... 
<?php 
$user_ip 
cs_getip();
$can_vote time() - 60;

$one_month 60*60*24*30;
$old_votes time() - $one_month;

$charts cs_sql_select(__FILE__,'game_charts gmc INNER JOIN {pre}_games gms ON gmc.games_id = gms.games_id','count(gmc.games_id) AS anzahl, gmc.games_id AS games_id, gms.games_name AS games_name, gmc.game_charts_time AS game_charts_time','game_charts_time > "'.$old_votes.'" GROUP BY (games_id)','anzahl DESC ',0,10);

$charts_loop count($charts);

for(
$run 0;$run<$charts_loop$run++) {
  
$data['charts'][$run]['cover'] = cs_html_img('uploads/games/'.$charts[$run]['games_id'].'.gif',100,70);
  
$data['charts'][$run]['name'] = cs_link($charts[$run]['games_name'],'games','view','id='.$charts[$run]['games_id']);
  
$data['charts'][$run]['votes'] = cs_secure($charts[$run]['anzahl']);
  if(
$charts[$run]['game_charts_time'] > $can_vote) {
    
$data['charts'][$run]['do_vote'] = cs_secure('du kannst voten');
  } else {
      
$data['charts'][$run]['do_vote'] = cs_secure('du kannst nicht voten');
    }
}

echo 
cs_subtemplate(__FILE__,$data,'games','charts');
 
?>


Würde soweit auch funzen, er liest mir schon die Votes aus, die atm manuell in die DB eintrage. Problem ist jetzt beim Voten selber. Da ich ja alle games_id in der game_charts Tabelle gruppiere, kann ich ja nicht mehr auf die einzelnen Votes zugreifen, richtig? Weil ich möchte ne Abfrage reinmachen, ob der User mit IP XY in den letzen 24 Stunden schon gevotet hat (wobei das wahrscheinlich überflüssig ist, da die IP nach 24 Stunden sowieso geändert wird... naja.).

Auf jedenfall halt ne Abfrage, ob der User schon wieder Voten darf (wie gesagt alle 24 Stunden ist erlaubt). Wenn er voten darf, soll ein input feld kommen, welches auf klick einen neuen Eintrag in die DB speichert und die IP für die nächsten 24 Stunden wieder sperrt. usw.

Freilich könnte ich es auch so machen, das ich in der games tabelle jedem Spiel ne neue spalte gebe "games_votes" und über dieses dann hoch zähle, das würde die ganze Sache natürlich viel einfacher machen. Ich will aber jeden einzelnen Vote in der DB speichern, da ich Votes, die älter als 1 Monat sind nicht mehr zählen möchte.

Ein anderer Gedankengan von mir war, erst die Spiele auslesen zu lassen und dann in der for schleife die Votes zu zählen, dann kann ich aber nicht mehr nach Anzahl Votes sortieren. Zumindest wüsste ich nicht wie.


Ahhhh *durchdreh*

Ihr seht schon, ich bin leicht verzweifelt und verwirrt. Vllt weiss ja einer von euch, wie ich das lösen könnte.

P.S: In der momentan abfrage, ob der User voten darf, hab ich die IP mal weggelassen und das Limit auf 1 Minute gesetzt, wegen Testzwecken.


------------------
Inaktiv
Pred
Thread-Ersteller


Poststar




Herkunft: Bischofsmais
Beiträge: 762
# Antwort: 1 - 01.10.2008 um 13:51 Uhr
hm, scheint euch wohl auch zu kompliziert zu sein, oder habt ihr nicht gecheckt was ich mein? ^^


------------------


Inaktiv
|
SCHIRI ClanSphere Team


Weltmeister



Herkunft: Hamburg
Beiträge: 5299
# Antwort: 2 - 01.10.2008 um 16:19 Uhr
hm ich hab mir dein text neulich schonmal durchgelesen, aber nicht sofort geantwortet. war jetzt zu faul zum nochmal lesen, aber ich sag einfach mal so wie ichs machen würde:

tabellen:

games:
id, name, release....

gamevotes:
userid, ip, gameid, timestamp, rating(ne zahl von 1-5 oder wie dus willst)

ich wüsst jetzt nich was es da für ein problem mit irgendwas geben sollte.
du kannst alle gamevotes mit einer spezielle gameid "selecten" und den durchschnitt all derer ratings erechnen.
du kannst gucken ob schon ein eintrag mit der gleichen user und gameid vorhanden ist und ob schon ein eintrag mit dem gleichen timestamp (kannst ja auch n +- einrechen) der gleichen ip und der gleichen gameid vorhanden ist.


------------------
www.laszlokorte.de

Inaktiv
|
Pred
Thread-Ersteller


Poststar




Herkunft: Bischofsmais
Beiträge: 762
# Antwort: 3 - 01.10.2008 um 16:37 Uhr
jaja, soweit bin ich schon.

es geht nur darum, ich will die charts ja als liste ausgeben... in etwa so:
1. spiel 1 (100 Votes)
2. Spiel 2 (50 Votes)
3. Spiel 3 (20 Votes)

Das funktioniert ja auch schon mit dem Code, wie er oben steht. Mein Problem ist nur, das ich ja alle Votes mit der game_id, sagen wir mal "2", zusammenfüge mit GROUP BY (gmc.games_id).
Nun sind aber auch alle IP's und Timepstamps zusammengefasst und ich kann nicht mehr abfragen, ob schon eine IP mit Timestamp eingetragen ist.... oder bin ich nur zu blöd dafür, bzw. kann ich ned logisch genig denken? ^^ Zumindest mit dem Code oben funtzt es noch ned :(


------------------


Zuletzt editiert von Pred am 01.10.2008 um 16:37 Uhr (1x Editiert)
Inaktiv
|
SCHIRI ClanSphere Team


Weltmeister



Herkunft: Hamburg
Beiträge: 5299
# Antwort: 4 - 01.10.2008 um 16:39 Uhr
dann vllt nicht per sql gruppieren sondern etrst per php im nachhinein zusammenrechnen.


------------------
www.laszlokorte.de

Inaktiv
|
Pred
Thread-Ersteller


Poststar




Herkunft: Bischofsmais
Beiträge: 762
# Antwort: 5 - 01.10.2008 um 21:39 Uhr
dann kann ichs aber nicht mehr nach anzahl der votes sortieren oder?


------------------


Inaktiv
|
Antworten: 5
Seite [1]


Sie müssen sich registrieren, um zu antworten.