• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Abfrage in Abfrage

Hallo ich bin gerade echt am verzweifeln...

Möchte ein kleines Tippspiel schreiben und habe jetzt eine Tabelle angelegt 'games' mit den Inhalten.

id | heim | auswaerts | wettbewerb | date

Als nächstes habe ich die Spiele aufgelistet... Jeder User soll aber sehen, ob und wie er dieses Spiel getippt hat. Wie kann ich dieses Problem lösen?

Wäre für eure Hilfe sehr dankbar ;)
 
Werbung:
Je nach dem:

Hast du ein komplettes Login-System? -> Lege eine Tabelle 'tipps' an und bringe sie in Relation mit 'games' und 'user'/etc.
Andernfalls. -> Speicher die Tipps ohne Relation zu 'user' in eine Tabelle 'tipps' und sende zusätzlich ein Cookie an den Nutzer (um den Tipp später wieder aufzurufen).
 
Je nach dem:

Hast du ein komplettes Login-System? -> Lege eine Tabelle 'tipps' an und bringe sie in Relation mit 'games' und 'user'/etc.
Andernfalls. -> Speicher die Tipps ohne Relation zu 'user' in eine Tabelle 'tipps' und sende zusätzlich ein Cookie an den Nutzer (um den Tipp später wieder aufzurufen).

Ja ich habe ein komplettes Loginscript. Die Tabelle tipps und user sind schon angelegt nur wie bringe ich diese nun in Relation mit games...

Okay habe mal nach mysql relegation gegoogled und folgendes Tutorial gefunden:
http://www.peterkropff.de/site/mysql/relation.htm

Ich hoffe, es hilft mir weiter. Sonst meld ich mich nochmal
 
Werbung:
Naja ein bisschen weitergeholfen hat es mir schon. Ich habe jetzt folgende Tabellen:

games

id | heim | auswaerts | wettbewerb | date

tipps

id | gameid | ergebnis | tendenz | user | date

Wie muss ich jetzt die Beziehung setzen? Und wie muss die Abfrage in PHP dann aussehen?


Hab es jetzt mit folgender Abfrage hinbekommen, dass es angezeigt wird, wenn ein Tipp vorhanden ist. Leider zeigt er die Daten nur an wenn ein Tipp vorhanden ist.
Code:
$abfrage = "SELECT * FROM games INNER JOIN tipps ON tipps.gameid =  games.id";

Edit :

Mit LEFT JOIN :D Danke für eure Hilfe ;)
 
Zuletzt bearbeitet:
Im Falle dieser Realtion denke ich brauchst du nur tipps und games vertauschen.
Code:
$abfrage = "SELECT * FROM [B]tipps[/B] INNER JOIN [B]games[/B] ON games.id =  tipps.gameid";
 
Ich habe leider nun ein neues Problem.

Habe das Script nun soweit, dass man Spiele anlegen kann und der User für diese Spiele seine Tipps abgeben kann. Nur leider bin ich gerade ein bisschen am verzweifeln, wie ich dem User die Punkte auf sein Konto schreiben kann.

Die Punkteanzahl müsste ich irgendwie in die User Tabelle bekommen. Die Frage ist nur wie?

Habe mir gedacht ein Formular zu schreiben in dem der Admin die Ergebnisse der Spiele einträgt. Und mit absenden wird dann die tipps Tabelle durchlaufen und sucht nach Übereinstimmungen. Doch wie bekomme ich, wenn ich eine Übereinstimmung finde, die Punkte in die User Tabelle.

Für eure Hilfe wäre ich euch wieder sehr dankbar ;)
 
Werbung:
In diesem Fall würde ich die Punkte garnicht abspeichern. Ich würde sie bei jedem Aufruf neu berechnen lassen, damit keine Redundanzen entstehen.
 
Also in der Tabell tipps dann eine Spalte einfügen mit Punkte und diesen Wert dann ändern, jenachdem ob es eine Übereinstimmung gibt? Gefällt mir gar nicht gut, da wenn es irgendwann mal mehr User geben sollte es eine Menge Tipps geben wird. Und diese dann jedes mal zu durchlaufen, wäre sehr aufwendig.
 
Ich werd es mit nem Cronjob machen... Schreibe ein Script welches die Tabelle tipps einmal am Tag durchläuft und diese dann in die user Tabelle überträgt. Leider kenne ich mich mit Crons nicht so gut aus. Wisst ihr ne Möglichkeit wie ich es hinbekomme, dass dieses Script einmal am Tag aufgerufen wird?
 
Werbung:
Gefällt mir gar nicht gut, da wenn es irgendwann mal mehr User geben sollte es eine Menge Tipps geben wird. Und diese dann jedes mal zu durchlaufen, wäre sehr aufwendig.
Wenn du die Tipps immer direkt beim User abspeicherst, wird es dir nicht möglich sein, einzusehen, bei welchem Spiel er wie viele Punkte bekommen hat. Zudem wird praktisch die Punktzahl zwei mal abgespeichert.

Die Daten werden normal immer erst beim Aufruf der Seite generiert, wie bei Foren, Blogs oder CMS.
 
Wenn du die Tipps immer direkt beim User abspeicherst, wird es dir nicht möglich sein, einzusehen, bei welchem Spiel er wie viele Punkte bekommen hat. Zudem wird praktisch die Punktzahl zwei mal abgespeichert.

Die Daten werden normal immer erst beim Aufruf der Seite generiert, wie bei Foren, Blogs oder CMS.

Ich möchte nicht die Tipps in der User Tabelle speichern sondern nur die erzielten Gesamtpunkte. Und bei welchem Spiel wieviele Punkte erzielt worden sind kann ich trotzdem noch über die Tipps Tabelle abrufen.
 
Irgendwann wird dir das Probleme bereiten.

Angenommen du - als Admin - hast versehentlich ein falsches Ergebnis eingetragen. Dann musst du nicht nur das eingetragene Ergebnis ändern, sondern auch die Punktzahl jedes einzelnen Users. (=Redundanz)
 
Werbung:
Irgendwann wird dir das Probleme bereiten.

Angenommen du - als Admin - hast versehentlich ein falsches Ergebnis eingetragen. Dann musst du nicht nur das eingetragene Ergebnis ändern, sondern auch die Punktzahl jedes einzelnen Users. (=Redundanz)

Nein ich würde dann in der tipp Tabelle die Punktezahl für das falsch eingetragene Spiel auf 0 setzen. Dann nochmal richtig eingeben und den Cron erneut per Hand ausführen.
 
Zurück
Oben