[PHP & MySQL] turniere / teilnehmer anzeigen / join

Remember
hallihallo ihr lieben (:
momentan habe ich ein leichtes logisches problem. ich möchte turniere in der datenbank eintragen (also mit id, turniername, beschreibung, bild, disziplinen und klassen) und bin einfach zu ... unlogisch dafür großes Grinsen
ich möchte mehrere disziplinen und klassen für ein einziges turnier eintragen, aber ich hab keine ahnung wie ich das machen soll.
weil wenn ich dann auch noch die turniereintragungen automatisch eintragen lassen möchte, dann muss ich ja eigentlich immer EINE disziplin mit EINER klasse angegeben sein. und ... ich kanns glaub ich nich wirklich richtig erklären, oder? großes Grinsen

naja. wie macht ihr das denn mit euren turnieren?
Julia712
Hmmm, du kannst 3 Tabellen machen xD

1. Tabelle: ID, Turniername, Datum, Beschreibung, Bild
2. Tabelle: ID, Turnier-ID, Klasse, Disziplin
3. Tabelle: ID, Turnier-ID, DatenDesStartersUndPferdes


Dann könntest du in der ersten Tabelle die Turniere an sich speichern und da die aktuellen auslesen. Die zugehörigen "Austragungen" stehen dann in der 2. Tabelle. Damit du sie zuordnen kannst, steht in der Turnier-ID die ID von Tabelle 1. Und die Starter schreibst du dann einfach in eine dritte Tabelle und ordnest sie einer Austragung zu...


Wäre zumindest eine Möglichkeit smile
Remember
ah, danke sehr smile
ja, das hört sich logisch an großes Grinsen
Remember
So. Zusammenhängend mit den Turnieren hat es sich jetzt ergeben, dass ich keinen (logischen) Plan habe, wie ich folgendes anstellen soll:

Ich hab ja jetzt diese 3 Tabellen (siehe oben). Und jetzt möchte ich auf einer Seite alle Disziplinen des jeweiligen Turnieres anzeigen & die jeweiligen Teilnehmer. Was ich bis jetzt habe (und rein gar nicht funzt x( ...)

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>SHAKESPEAR</title>
<link rel=stylesheet href=styli.css type=text/css>
</head>
<body>

<?php
include("datenbank.php");
$id "$_GET[id]";

$sql "SELECT * FROM turnierausrichten JOIN turnierausrichten2 JOIN turnierausrichten3 ON turnierausrichten2.turnierid = turnierausrichten.id = $id AND turnierausrichten3.disziplinid = turnierausrichten2.id";
$Ergebnis mysql_query($sql);
if (@mysql_num_rows($Ergebnis) == 0) {
echo "Dieses Turnier existiert nicht!";
}

else {
$Data mysql_fetch_array$Ergebnis );
echo "<h2>$Data[turniername] ($Data[id])</h2>
<div align=center><a href=turnier.php?id=$id>Allgemein</a> ;; <a href=turnier1.php?id=$id>Teilnehmer</a> ;; <a href=turnier2.php?id=$id>Nennen</a><br><br>
              <img src='$Data[bild]"width:500px" class="border"><br>Foto by $Data[fotograf]<br><br>
<h3>$Data[disziplin]</h3>
<table width=100%>
<tr><td class="hengst"><b>Reiter</b></td> <td class="hengst"><b>Pferd</b></td> <td class="hengst"><b>Hof</b></td>  <td class="hengst"><b>Ergebnis</b></td></tr>
<tr><td>$Data[reiter]</td> <td><a href=$Data[pferdlink] target="blank">$Data[pferd]</a></td> <td><a href=$Data[hoflink] target="blank">$Data[hof]</a></td> <td>$Data[ergebnis]</td></tr>
</table>";
    }
mysql_close();
?>

<br><br>
</div>

</body>
</html>


Ich wollte die 3 verschiedenen Tabellen eben joinen, aber das ... das mag nich so ganz andscheinend xD

Es sollte halt den "Kopf" anzeigen, also den Turniernamen, das Bild und das Turnier"menü" (allgemein, nennen, teilnehmer) und darunter erstmal eine auflistung aller turniere wo eben dann immer darunter die Starter stehen. wahrscheinlich gibts da wieder eine vollkommen logische lösung. aber ich und logik Augen rollen ich probier da echt schon seit stunden rum und es funzt nicht wie ich will. also schrei ich mal wieder ganz laut hilfe und hoffe, dass mich (mal wieder großes Grinsen ) einer von euch super programmierern retten kann xD oder mir eine einfache seite schicken kann, wo das alles gaaaanz einfach erklärt ist großes Grinsen
Kuhmuhphu
Wäre das was du willst nicht einfach nur das automtische eintragen und ausgeben einer mysql datenbank?
Remember
schon. aber ich brauch ja eigentlich 2 tabellen. jedes turnier hat eine id. jede disziplin hat wieder eine id. und zu dieser id will ich die teilnehmer zuordnen. und deshalb möcht ich halt eine abfrage machen wo dann drinsteht, dass die turnierid der disziplinid gleich sein soll. und da brauch ich ja dann wieder beide tabellen.

ich mach das wahrscheinlich grad wieder viel zu kompliziert, oder? großes Grinsen großes Grinsen
wie hast du es denn beim vvfkd gemacht, wenn ich so dreist fragen darf?smile
Kuhmuhphu
Ich habe es ganz einfach mit dem automtischen eintragen und ausgeben mithilfe der Tuts hier auf GB gemacht^^

Also das hier wäre der Code für die P3 Prüfung.
bei jeder Tabelle die Teilnehmer ausgeben soll habe ich die mysql datenbank abfrage geöffnet und geschlossen..

- Ich weiß nicht ob die das weiterhilft großes Grinsen
Irgendwie verstehe ich auch noch nicht zu 100 % wie du das haben willst..

Also zu veranstaltest eine L Dressur und ein M Springen. Dann hat jeder der sich anmeldet seine eigene ID (ist ja klar großes Grinsen ) und die Turniere haben auch ihre ID soweit hab ich das verstanden... und dann?^^

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:

<?php
   include('db.php');
  $sql "SELECT id, reiter, hof, pferd, steckbrief, pruefung FROM nennung WHERE pruefung = 'P3' ";
   $result mysql_query($sql) OR die(mysql_error());
echo"
<table style="width100%; text-alignleftmargin-leftautomargin-rightauto;" border="0" cellpadding="0" cellspacing="2">

  <tbody>

    <tr>

      <td colspan="4">P3</td>

    </tr>

    <tr>

      <td colspan="4">
      <hr class="linie"></td>

    </tr>

    <tr>

      <td style="width329pxbackground-colorrgb(220211204);">STARTNUMMER</td>

      <td style="width318pxbackground-colorrgb(220211204);">REITER</td>

      <td style="width326pxbackground-colorrgb(220211204);">PFERD</td>

      <td style="width325pxbackground-colorrgb(220211204);">HEIMATHOF</td>

    </tr>

    <tr>

      <td colspan="4">
      <hr class="linie"></td>

    </tr>

    <tr>";
    while ($row mysql_fetch_assoc($result)) {
echo "

      <td>{$row[id]}</td>

      <td>{$row[reiter]}</td>

      <td><a href="{$row[steckbrief]}" target="blank">{$row[pferd]}</a></td>

      <td>{$row[hof]}</td>

    </tr>" ;
      }

    echo"

  </tbody>
</table>";
      mysql_close()
?>
Remember
mein problem ist halt vorallem, dass ich ja auch die turniere per php eintrage.
das heißt ich habe erstmal folgende tabellen:

turnieraustragen: ID, Turniername, Datum, Beschreibung, Bild, Disziplinen
turnieraustragen2: ID, Turnier-ID (die ID von turnieraustragen), Disziplin
turnieraustragen3: ID, Disziplin-ID (die ID von turnieraustragen2), reiter, pferd, pferdlink, hof, hoflinik, ergebnis

dann habe ich eine seite wo alle turniere angezeigt werden, wo das datum vor 'heute' ist. da gibts dann einen link zum turnier. es öffnet sich eine neue seite, wo dann nochmal die grundinformationen stehen und nochmal alle disziplinen. da gibts links zu "nennen" und "teilnehmer". bei "nennen" mach ich ganz normal einen automatischen Datenbankeintrag (in turnieraustragen3) per formular. alles ok.
aber teilnehmer anzeigen ... hmm. großes Grinsen ich müsste halt glaub ich eigentlich die ID des Turnieres & die Disziplin-ID auslesen, aber ich brauch ja auch noch die Nenn-Daten. Und das klingt jetzt alles so höllisch kompliziert, weil ich es kein bissl erklären kann großes Grinsen aber ... hmm. ich bin grad auf eine id gekommen! smile
ich schrei gleich wieder, weils wahrscheinlich eh nich klappt ;D
Kuhmuhphu
Alles klar ^^ wobei ich denke das ich auch nicht großartig helfen kann.. ich gehöre der Gattung.. "etwas schwer von Begriff" an großes Grinsen
Remember
"nicht erklären können" & "schwer von begriff" ... passt doch perfekt großes Grinsen großes Grinsen großes Grinsen

momentaner stand sieht so aus:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>SHAKESPEAR</title>
<link rel=stylesheet href=styli.css type=text/css>
</head>
<body>

<?php
include("datenbank.php");
$id "$_GET[id]";

$sql "SELECT * FROM turnierausrichten2 JOIN turnierausrichten3 ON turnierausrichten2.turnierid = $id WHERE turnierid = '$id'";
$Ergebnis mysql_query($sql);
if (@mysql_num_rows($Ergebnis) == 0) {
echo "Dieses Turnier existiert nicht!";
}

else {
$Data mysql_fetch_array$Ergebnis );
echo "<h2>$Data[turniername] ($Data[id])</h2>
<div align=center><a href=turnier.php?id=$id>Allgemein</a> ;; <a href=turnier1.php?id=$id>Teilnehmer</a> ;; <a href=turnier2.php?id=$id>Nennen</a><br><br>
              <br><br>
<h3>$Data[disziplin]</h3>
<table width=100%>
<tr><td class="hengst"><b>Reiter</b></td> <td class="hengst"><b>Pferd</b></td> <td class="hengst"><b>Hof</b></td>  <td class="hengst"><b>Ergebnis</b></td></tr>
<tr><td>$Data[reiter]</td> <td><a href=$Data[pferdlink] target="blank">$Data[pferd]</a></td> <td><a href=$Data[hoflink] target="blank">$Data[hof]</a></td> <td>$Data[ergebnis]</td></tr>
</table>";
    }
mysql_close();
?>

<br><br>
</div>

</body>
</html>


Aber jetzt zeigt er nur noch die erste Disziplin an, die zum Turniergehört xD
Stelo
Ich hab mir den Code jetzt nicht noch einmal angesehen, aber ich würde mich noch mal kurz auf der Verständnis konzentrieren. Ein Konzept ist immerhin das A und O bevor es mit dem Programmieren losgeht.
Dir würde zum besseren Verständnis sicher auch ein ERD weiterhelfen ...

So, gut, also du hast M Turnier welche N Disziplinen enthalten. Das ist eine nicht einedutige Relation. Verlangt also nach einer Aufschlüsslung in einer extra Tabelle.

Somit hast du:
Tabelle 1 - turnier
Tabelle 2 - disziplin
(Natürlich entsprechend gefüllt mit deinen Informationen)
Tabelle 3 - relation_turnier_disziplin
(Hier wird nur die turnier_ID und die disziplin_ID gespeichert)

Somit hast du hier z.B.
T_ID D_ID
1 1
1 2
1 3
2 2
2 3
3 1

Die SQL Abfrage sieht dann UNGEFÄHR so aus:
php:
1:
$sql "SELECT * FROM turnier t JOIN relation_turnier_disziplin r JOIN disziplin d ON (t.T_ID = r.T_ID) AND (r.D_ID = d.D_ID) WHERE t.T_ID = 2

Dann müsstest du in der while-Schleife alle Disziplinen ausgegeben bekommen.

Noch ein Tipp: Erst mal die SQL Abfragen in phpMyAdmin testen und rumprobieren und dir erst einmal genau ansehen, was ausgegeben wird. DANN mit PHP arbeiten.
Remember
Danke auch dir für die Antwort.
Jaa, logisch denken, verständnis ... gehirn lässt grüßen Augenzwinkern
Was ist denn ein ERD?

Ah. Ich glaube, dass ich es verstanden habe. ich werd mich gleich mal dransetzen und schauen, ob es auch praktisch funzt ^^