AW: Bundesliga Tippspiel
Also, ich möchte folgendes abfragen bzw. ich möchte folgende Überschicht generieren.
Aus meinem Bundesliga-Tippspiel möchte ich in einer Tabelle eine Übersicht der abgegeben Tipps der einzelnen Spieler zu den einzelnen Begegnungen des Spieltages anzeigen. Jeweils immer nur für 1 Spieltag - sprich der Nutzer wählt auf einer anderen Seite den Spieltag und bekommt dazu alle Tipps der Gesamtenspieler angezeigt.
Die Spieler sollen nur einmal in der äußeren linken Spalte angezeigt werden (jeder User eine Zeile - sprich vor dem username soll ein <tr> kommen) und die Tipps von jedem Spieler zur jeweiligen Partie in einzelnen Spalten dahinter. Zur Paarung passend natürlich.
( Paarung 1 Paarung 2 usw...
Name, Tipp1 heim - tipp1 gast, Tipp2 heim - tipp2 gast usw...)
(Ich schreib es mal als html-code vllt. ist es so noch etwas besser verständlich:
<table>
<tr><th></th>Name:<th>Paarung 1 - Heimmannschaft</th><th>Paarung 1 - Gastmannschaft</th> usw. </tr>
<tr><td>username</td><td>tipp 1 heim</td><td>tipp 1 gast</td> usw. </tr>
</table>)
Meine Datenbank ist so aufgebaut:
Tabellen:
- Spieltag
- user
- tipps
Insgesamt also 3 Tabellen die wie folgt mit Spalten aufgebaut sind:
-Spieltag => id, heimmannschaft (kurz heim), gastmannschaft (kurz gast)
-user => id, name
-tipps => spiel_id, user_id, tippheim, tippgast
Mein aktueller PHP-Code
PHP:
<?
// Erst die Tabellenspalten aus der Datenbank lesen
// also: welche Spielbegegnungen gab es
$query = 'SELECT heim, gast FROM spieltag WHERE spieltag = 1';
$cols = array();
if ($result = mysql_query($query))
while ($row = mysql_fetch_assoc($result))
array_push($cols, $row);
// Tabellenkopf ausgeben bzw. die Begegnungne/Paarungen ausgeben
echo '<table><tr>';
foreach ($cols as $col) echo '<th>'.$col['heim'].'</th><th>'.$col['gast'].'</th>';
echo '</tr>';
// Dann die Tipp-Daten aus der Datenbank lesen
// also: wer hat was auf die Begegnungen getippt.
// und zwar mit LEFT JOIN statt JOIN
$query = 'SELECT user.name as name, tipph, tippg FROM tipps LEFT JOIN user ON tipps.tipper_id = user.id LEFT JOIN spieltag ON tipps.spiel_id = spieltag.spiel_id WHERE spieltag.spieltag = 1;';
if ($result = mysql_query($query)) {
while ($row = mysql_fetch_assoc($result)) {
array_push($cols, $row);
echo '<tr>';
foreach ($cols as $col) {
echo '<td>';
// Für jede Spalte prüfen, ob es in der Zeile einen Eintrag gibt und ggf. ausgeben
echo ''.$row['name'].''.$row['tipph'].''.$row['tippg'].'';
}
echo '</tr>'."\r\n";
}
echo '</table>';
}
?>
Den habe ich auf der Idee hin von Eskapy (siehe Forumseite vorher) so erstmal übernommen. Das mit den Arrays habe ich leider nicht so verstanden was er da meinte. In den Kommentare hat er mir ja hilfestellung gegeben aber wie schon gesagt ich mach nen riesigen Denkfehler wahrscheinlich.
Hoffe habe mich verständlich ausgedrückt. Danke schon mal für Eure Hilfe.