Zur Navigation

formular [5]

41 tobi

d.h. anstatt damen, herren a, herren b und herren c, speichere ich jetzt 1 2 3 4?

27.02.2009 13:26

42 Jörg Kruse

Ja, genau.

Und so könnte dann eine JOIN-Abfrage aussehen, um die Turnierklassen, deren Webadressen sowie die Anzahl der jeweiligen Mitglieder zu ermitteln:

SELECT turnierklassen.name, turnierklassen.url, COUNT(mitglieder.id) AS anzahl FROM turnierklassen LEFT JOIN mitglieder ON turnierklassen.id = mitglieder.turnier_id GROUP BY mitglieder.turnier_id

Das Ergebnis sollte dann auch Turnierklassen ohne Mitglieder beinhalten. Und nebenei auch die URLs - so dass du das Array mit den URLs nicht benötigst.

27.02.2009 14:08 | geändert: 27.02.2009 14:12

43 tobi

die urls muß ich aber dann beim abschicken der daten auch gleich in der db speichern?

27.02.2009 14:57

44 Jörg Kruse

Die URLs speicherst du wie die Namen der Turnierklassen beim Erstellen der Datenbanktabelle turnierklassen. Wenn sich die Turnierklassen oder die URLs nicht mehr ändern, ist das eine einmalige Angelegenheit. Ansonsten kannst du diese Tabelle auch über PHPMyAdmin ändern. Wenn sich der Name von "Damen" auf "Damen a" ändert oder die URL von "Herren b", musst du nur einen Datensatz ändern.

Mit dem Anmeldeformular werden nur Daten übertragen, die in die Tabelle der Mitglieder gespeichert werden. URL und Name der Turnierklassen werden dort nicht gespeichert.

27.02.2009 15:42 | geändert: 27.02.2009 15:45

45 tobi

ok jetzt hab ichs, ich hab jetzt ne zweite tabelle bei phpadmin angelegt

namen: turnierklassen

id (init) name (text) url (text)
1 Damen /ppc2009Damen.php
2 Herren A /ppc2009HerrenA.php
3 Herren B /ppc2009HerrenB.php
4 Herren C /ppc2009HerrenC.php

gespeichert

in der tabelle ppc_anmeldungen hab ich jetzt bei turnierklasse aus damen, herren a, herren b und herren c - 1, 2, 3, 4 gemacht

die select abfrage so:
SELECT turnierklassen.name, turnierklassen.url, COUNT(ppc_anmeldungen.id) AS anzahl FROM turnierklassen LEFT JOIN ppc_anmeldungen ON turnierklassen.id = ppc_anmeldungen.turnierklasse GROUP BY ppc_anmeldungen.turnierklasse";

passt dies soweit?

jetzt muß ich ja wieder meine abfrage und ausgabe umschreiben?

27.02.2009 16:11 | geändert: 27.02.2009 16:24

46 Jörg Kruse

Ich seh da jetzt keinen Fehler - ich würd's einfach mal ausprobieren - du siehst dann ja, wenn dann irgendwas nicht passt ;)

Edit:
jetzt muß ich ja wieder meine abfrage und ausgabe umschreiben?

Ja, aber nicht wesentlich. Du hast jetzt halt drei Datenfelder, die du ausgeben kannst - das URL-Array benötigst du dann ja nicht mehr

Edit2:

So sollte es doch ungefähr funktionieren:

while (list($turnierklasse, $turnierurl, $teilnehmeranzahl) = mysql_fetch_row ($result))
{
    echo 'Teilnehmer ' . $turnierklasse . ': <b>'  . $teilnehmeranzahl .  '</b> zu den gemeldeten Teilnehmer ' . $turnierurl . '<br>';
  $gesamt = $gesamt + $teilnehmeranzahl;
}

27.02.2009 16:28 | geändert: 27.02.2009 16:31

47 tobi

so macht ers jetzt:

Bisher sind insgesamt 12 Meldungen zum Turnier 2009 bei uns eingegangen!
Teilnehmer Damen: 3 zu den gemeldeten Teilnehmer Damen
Teilnehmer Herren A: 5 zu den gemeldeten Teilnehmer Herren A
Teilnehmer Herren B: 3 zu den gemeldeten Teilnehmer Herren B
Teilnehmer Herren C: 1 zu den gemeldeten Teilnehmer Herren C

$sql = "
SELECT turnierklassen.name, turnierklassen.url, COUNT(ppc_anmeldungen.id) AS anzahl FROM turnierklassen LEFT JOIN ppc_anmeldungen ON turnierklassen.id = ppc_anmeldungen.turnierklasse GROUP BY ppc_anmeldungen.turnierklasse";

$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}

$result = mysql_query ( $sql );

$teilnehmerliste="";
$anzahl="";

while (list($turnierklasse, $url ,$teilnehmeranzahl) = mysql_fetch_row ($result))
{
  if ($teilnehmeranzahl >= 0)  {
        $teilnehmerliste.='Teilnehmer ' . $turnierklasse . ': <b>'  . $teilnehmeranzahl .  '</b> zu den gemeldeten Teilnehmer ' . $url . '<br>';
        $anzahl= $anzahl + $teilnehmeranzahl;
  }
}

echo "<p><b>Aktuelle Teilnehmerübersicht:</b></p>";
echo "<p>Bisher sind insgesamt <b> ".$anzahl." </b> Meldungen zum Turnier 2009 bei uns eingegangen!</p>";
echo $teilnehmerliste;

mysql_close($link);

wenn ich jetzt in der db einen teilnehmer bei herren c wegnehme, sodass ich 0 bei herren c habe, dann zeigt er es auch an.

allerdings eine andere reihenfolge:
Bisher sind insgesamt 12 Meldungen zum Turnier 2009 bei uns eingegangen!
Teilnehmer Herren C: 0 zu den gemeldeten Teilnehmer Herren C
Teilnehmer Damen: 3 zu den gemeldeten Teilnehmer Damen
Teilnehmer Herren A: 6 zu den gemeldeten Teilnehmer Herren A
Teilnehmer Herren B: 3 zu den gemeldeten Teilnehmer Herren B

kann ich beeinflussen dass es so aussieht (also reihenfolge: damen, herren a, herren b, herren c)?
Teilnehmer Damen: 3 zu den gemeldeten Teilnehmer Damen
Teilnehmer Herren A: 6 zu den gemeldeten Teilnehmer Herren A
Teilnehmer Herren B: 3 zu den gemeldeten Teilnehmer Herren B
Teilnehmer Herren C: 0 zu den gemeldeten Teilnehmer Herren C

27.02.2009 16:39

48 Jörg Kruse

Dafür gibt's das Statement "ORDER BY":

SELECT turnierklassen.name, turnierklassen.url, COUNT(ppc_anmeldungen.id) AS anzahl FROM turnierklassen LEFT JOIN ppc_anmeldungen ON turnierklassen.id = ppc_anmeldungen.turnierklasse GROUP BY ppc_anmeldungen.turnierklasse ORDER BY turnierklassen.name

27.02.2009 16:42

49 tobi

super vielen vielen dank

für deine geduld und nerven

die ich beansprucht und dir geraubt habe

27.02.2009 16:44