Zur Navigation

formular [4]

31 Jörg Kruse

wie bekomme ich denn jetzt die gesamt anzahl raus?

Entweder durch eine gesonderte Abfrage (die weiter oben im Thread schon erwähnt wurde), oder indem du die einzelnen Teilnehnmerzahlen zusammenzählst.

und was kann machen wenn es jetzt 0 teilnehmer wären, dann verschwindet alles.

Du kannst die Ausgabe davon abhängig machen

while (list($turnierklasse, $teilnehmeranzahl) = mysql_fetch_row ($result))
{
    if ($teilnehmeranzahl > 0)  {
        echo 'Teilnehmer ' . $turnierklasse . ': '  . $teilnehmeranzahl .  'zu den gemeldeten Teilnehmer' . $turnierlinks[$turnierklasse] . '<br>';
    }
}

25.02.2009 16:01

32 tobi

und was kann machen wenn es jetzt 0 teilnehmer wären, dann verschwindet alles.

Du kannst die Ausgabe davon abhängig machen

while (list($turnierklasse, $teilnehmeranzahl) = mysql_fetch_row ($result))
{
    if ($teilnehmeranzahl > 0)  {
        echo 'Teilnehmer ' . $turnierklasse . ': '  . $teilnehmeranzahl .  'zu den gemeldeten Teilnehmer' . $turnierlinks[$turnierklasse] . '<br>';
    }
}

verschwindet trotzdem.

und wie kann ich alle zusammen zählen?

25.02.2009 16:09 | geändert: 25.02.2009 16:09

33 Jörg Kruse

Was "verschwindet"?

und wie kann ich alle zusammen zählen?

$gesamt = 0;
while (list($turnierklasse, $teilnehmeranzahl) = mysql_fetch_row ($result))
{
    if ($teilnehmeranzahl > 0)  {
        echo 'Teilnehmer ' . $turnierklasse . ': '  . $teilnehmeranzahl .  'zu den gemeldeten Teilnehmer' . $turnierlinks[$turnierklasse] . '<br>';
        $gesamt = $gesamt + $teilnehmeranzahl;
    }
}

25.02.2009 17:49

34 tobi

aktuelles ergebnis so: wobei dass nicht stimmen kann, da anzahl nicht 0 ist

Aktuelle Teilnehmerübersicht:

Bisher sind insgesamt 0 Meldungen zum Turnier 2009 bei uns eingegangen!
Teilnehmer Damen: 2 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

bei dem code hier:
//Datenbank verbinden
include "../zugang_2.php.inc";

error_reporting(E_ALL);

$sql = "
SELECT turnierklasse, COUNT(*) FROM ppc_anmeldungen GROUP BY turnierklasse";

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

$result = mysql_query ( $sql );

$links = array(
"Damen" => "<a href=ppc2009Damen.php>Damen</a>",
"Herren A" => "<a href=ppc2009HerrenA.php>Herren A</a>",
"Herren B" => "<a href=ppc2009HerrenB.php>Herren B</a>",
"Herren C" => "<a href=ppc2009HerrenC.php>Herren C</a>"
);

$gesamt = 0;

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

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

mysql_close($link);

und nun zum verschwinden:
sobald ich in der Datenbank einen Spieler von Herren C lösche, dann ist ja im moment keiner mehr vorhanden. also sollte die ausgabe so ausschauen:
Teilnehmer Herren C: 0 zu den gemeldeten Teilnehmer Herren C

es sieht aber dann so aus:
Bisher sind insgesamt 0 Meldungen zum Turnier 2009 bei uns eingegangen!
Teilnehmer Damen: 2 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

Herren C wird gar nicht mehr aufgezeigt

25.02.2009 19:01 | geändert: 25.02.2009 19:08

35 tobi

ich hoffe ich nerve euch nicht zu sehr! mit meinem problem

26.02.2009 11:49

36 Jörg Kruse

Zitat von tobi
aktuelles ergebnis so: wobei dass nicht stimmen kann, da anzahl nicht 0 ist

Aktuelle Teilnehmerübersicht:

Bisher sind insgesamt 0 Meldungen zum Turnier 2009 bei uns eingegangen!

$gesamt ist auch erst unterhalb der Schleife errechnet.

und nun zum verschwinden:
sobald ich in der Datenbank einen Spieler von Herren C lösche, dann ist ja im moment keiner mehr vorhanden. also sollte die ausgabe so ausschauen:
Teilnehmer Herren C: 0 zu den gemeldeten Teilnehmer Herren C

es sieht aber dann so aus:
Bisher sind insgesamt 0 Meldungen zum Turnier 2009 bei uns eingegangen!
Teilnehmer Damen: 2 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

Herren C wird gar nicht mehr aufgezeigt

Ja, das ist klar, da es die "Herren C" dann in der Datennbanktabelle nicht mehr gibt. Wenn du alle, auch die leeren Klassen, aufführen möchtest, musst du die Klassen in einer eigenen Tabelle speichern. Das wäre die Möglichkeit 1, die ich in diesem Beitrag schonmal genannt hatte. In dem dortigen Link ist auch erklärt, wie man eine Abfrage über mehrere Datenbanktabellen macht

26.02.2009 11:52

37 tobi

so dass mit der anzeige klappt nun soweit, habe das ganze nun so realisiert:

$sql = "
SELECT turnierklasse, COUNT(*) FROM ppc_anmeldungen GROUP BY turnierklasse";

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

$result = mysql_query ( $sql );

$links = array(
"Damen" => "<a href=ppc2009Damen.php>Damen</a>",
"Herren A" => "<a href=ppc2009HerrenA.php>Herren A</a>",
"Herren B" => "<a href=ppc2009HerrenB.php>Herren B</a>",
"Herren C" => "<a href=ppc2009HerrenC.php>Herren C</a>"
);

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

while (list($turnierklasse, $teilnehmeranzahl) = mysql_fetch_row ($result))
{
  if ($teilnehmeranzahl >= 0)  {
        $teilnehmerliste.='Teilnehmer ' . $turnierklasse . ': <b>'  . $teilnehmeranzahl .  '</b> zu den gemeldeten Teilnehmer ' . $links[$turnierklasse] . '<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;

bei dem anderen steig ich aber kein meter durch

27.02.2009 00:38

38 Jörg Kruse

Eine Aufteilung der Daten auf mehrere Tabellen ist auch nicht mehr ganz so einfach wie das Arbeiten mit einer einzelnen Tabelle.

Diese beiden Artikel auf SELFHTL sind in diesem Zusammenhang vielleicht noch hilfreich für das Verständnis von JOINS:

http://aktuell.de.selfhtml.org/artikel/datenbanken/joins/

http://aktuell.de.selfhtml.org/artikel/datenbanken/fortgeschrittene-joins/

In deinem Fall würde ich wie gesagt zwei Tabellen anlegen:

1. eine Tabelle turnierklassen mit folgenden Feldern:

ID der Turnierklasse, Name der Turnierklasse, URL der Webseite etc.

2. eine Tabelle teilnehmer mit folgenden Feldern:

ID des Teilnehmers, ID der Turnierklasse (welcher der Teilnehmer angehört), Name des Teilnehmers, Anmeldedatum etc.

Über die ID der Turnierklasse können die beiden Tabellen dann in einer JOIN-Abfrage verknüpft werden.

27.02.2009 10:34

39 tobi

ok gut soweit habe ich es verstanden:

wenn mein formluar ausgefüllt und abgeschickt wird, dann müssen die daten in 2 verschiedene tabellen in der db gespeichert werden, richtig?

und wie geht das? bisher speicher ich das so in der db:
mysql_query("INSERT INTO ppc_anmeldungen
(nachname, vorname, email, verein, spielklasse, position, turnierklasse, eintrag, timestamp)
VALUES
('$nachname', '$vorname', '$email', '$verein', '$spielklasse', '$position', '$turnierklasse', '$eintrag', NOW())")
or die(mysql_error());

muß ich dann einfach ne zweite mysql_query machen?

27.02.2009 12:33

40 Jörg Kruse

Nein, hier benötigst du weiterhin nur eine Query. Die Anmeldung betrifft ja nur den Datensatz eines neuen Teilnehmers, nicht den Datensatz einer Turnierklasse. Statt dem Namen der Turnierklasse speicherst du dort die ID der Turnierklasse ab.

Die zweite Tabelle mit den Turnierklassen kannst du in einem zweiten Formular oder über PHPMyAdmin bearbeiten. Aber das ist ja nur notwendig, wenn z.B. eine neue Turnierklasse hinzukommt

27.02.2009 13:08