Zur Navigation

Normales Formular [2]

11 Jörg Kruse

Ja, stimmt, dann wird ja der InnerHTML-Wert übertragen (hier "Bitte auswählen"), wenn kein value angegeben ist.

Davon ab sollte die "0" allerdings auch kein Problem machen, da du mit empty() überprüfst.

Im längeren Codeabschnitt oben hast du aber eine "1" angegeben:

<option value="1">Bitte auswählen</option>

Dass dabei keine Fehlermeldung erfolgt, ist ja klar

15.06.2011 16:52

12 tobi

bei den anderen beiden Auswahlfeldern konnte ich die 1 ja benutzen. Da ja in die DB was anderes eingetragen wird.

Hier in dem Fall benötige ich die 1 für die erste Turnierklasse, daher der versuch mit einer Null

15.06.2011 16:59

13 Jörg Kruse

Du musst den Fehler ja irgendwo auch noch ausgeben, wie z.B. im Falle von 'altersklasse':

<?php echo $frm_error['altersklasse']; ?>

15.06.2011 17:39

14 tobi

Zitat von Jörg
Du musst den Fehler ja irgendwo auch noch ausgeben, wie z.B. im Falle von 'altersklasse':

<?php echo $frm_error['altersklasse']; ?>
omg, dass war der Fehler. Muss ich wohl beim kopieren vergessen haben oder zwischendrin entfernt habe. So einfach kann es sein. Danke.

Ich möchte nun noch eine Kleinigkeit einbauen. Und zwar soll, sofern die max. Anzahl erreicht wurde, es nicht mehr möglich sein, sich für den jewiligen Wettbewerb anzumelden. Ist dies möglich?

Turnierklasse 1 = 64 Teilnehmer
Turnierklasse 2 = 64 Teilnehmer
Turnierklassen 3-5 = 192 Teilnehmer

18.06.2011 13:19

15 Jörg Kruse

Ja, dazu machst du eine SQL-Abfrage, wieviele Teilnehmer schon angemeldet sind, vergleichst das Ergebnis mit dem von dir definierten Maximum und gibst beim Überschreiten eine Fehlermeldung aus.

18.06.2011 19:37

16 tobi

ich hab jetzt testweise mal eine einzelne Datei eröffnet. und wie muß ich da dann weitermachen, bzw ist hier aufgelistetest der richtige Anfang?

ctype html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Check</title>
		<style type="text/css">
		.rot{color:#FF0000;}
		.gruen{color:#009900;}
		.blau{color:#0000FF;}
		</style>
</head>
<body>
<h1>Check</h1>

<?php
// Datenbank verbinden
include "database.php";

// Error-Meldung an
error_reporting(E_ALL);

// sql-Abfrage 1 - Ermitteln Anzahl DB Samstags
$sql_samstag = "SELECT Count(*) FROM anmeldungen WHERE gemeldeteKlasse = '1' OR gemeldeteKlasse = '2'";
$result_samstag = mysql_query( $sql_samstag );
list($count_samstag) = mysql_fetch_row($result_samstag);
// max. Anzahl Teilnehmer Samstag - 128
$max_anzahl_samstag = 128;
// zusammengesetzt aus max. 64 Teilnehmer in Klasse 1 und 64 Teilnehmer in Klasse 2
$max_anzahl_samstag_jugend = 64;
$max_anzahl_samstag_dklasse = 64;

// sql-Abfrage 2 - Ermitteln Anzahl DB Samstags
$sql_sonntag = "SELECT Count(*) FROM anmeldungen WHERE gemeldeteKlasse = '3' OR gemeldeteKlasse = '4' OR gemeldeteKlasse = '5'";
$result_sonntag = mysql_query( $sql_sonntag );
list($count_sonntag) = mysql_fetch_row($result_sonntag);
// max. Anzahl Teilnehmer Sonntag - 192
$max_anzahl_sonntag = 192;

// sql-Abfrage 3 - Ermitteln Anzahl A-Klasse + Teilweise Damen A (Turnierklasse = 5)
$sql_aklasse = "SELECT Count(*) FROM anmeldungen WHERE gemeldeteKlasse = '5'";
$result_aklasse = mysql_query( $sql_aklasse );
list($anzahl_aklasse) = mysql_fetch_row($result_aklasse);

// sql-Abfrage 4 - Ermitteln Anzahl B-Klasse + Teilweise Damen A (Turnierklasse = 4)
$sql_bklasse = "SELECT Count(*) FROM anmeldungen WHERE gemeldeteKlasse = '4'";
$result_bklasse = mysql_query( $sql_bklasse );
list($anzahl_bklasse) = mysql_fetch_row($result_bklasse);

// sql-Abfrage 5 - Ermitteln Anzahl C-Klasse + Teilweise Damen A (Turnierklasse = 3)
$sql_cklasse = "SELECT Count(*) FROM anmeldungen WHERE gemeldeteKlasse = '3'";
$result_cklasse = mysql_query( $sql_cklasse );
list($anzahl_cklasse) = mysql_fetch_row($result_cklasse);

// sql-Abfrage 6 - Ermitteln Anzahl D-Klasse + Teilweise Damen B (Turnierklasse = 2)
$sql_dklasse = "SELECT Count(*) FROM anmeldungen WHERE gemeldeteKlasse = '2'";
$result_dklasse = mysql_query( $sql_dklasse );
list($anzahl_dklasse) = mysql_fetch_row($result_dklasse);

// sql-Abfrage 7 - Ermitteln Anzahl Jugend (Turnierklasse = 1)
$sql_jugend = "SELECT Count(*) FROM anmeldungen WHERE gemeldeteKlasse = '1'";
$result_jugend = mysql_query( $sql_jugend );
list($anzahl_jugend) = mysql_fetch_row($result_jugend);

// alle Klassen Sonntags zusammengesetzt
$anzahl_alle_klassen_sonntag = $anzahl_aklasse + $anzahl_bklasse + $anzahl_cklasse;

// testweise Ausgabe der Werte
echo "Meldung Anzahl Samstag: ".$count_samstag."<br />\n";
echo "Meldung Anzahl Sonntag: ".$count_sonntag."<br />\n";
echo "Meldung Jugend: ".$anzahl_jugend."<br />\n";
echo "Meldung D-Klasse: ".$anzahl_dklasse."<br />\n";
echo "Meldung C-Klasse: ".$anzahl_cklasse."<br />\n";
echo "Meldung B-Klasse: ".$anzahl_bklasse."<br />\n";
echo "Meldung A-Klasse: ".$anzahl_aklasse."<br />\n";

if ($anzahl_jugend < $max_anzahl_samstag_jugend) {
}else{ 
echo "<span class=\"blau\">Turnierklasse Jugendwettbewerb voll! Keine Anmeldung mehr hierfür möglich.</span><br />";
}

if ($anzahl_dklasse < $max_anzahl_samstag_dklasse) {
}else{ 
echo "<span class=\"blau\">Turnierklasse D-Klasse voll! Keine Anmeldung mehr hierfür möglich.</span><br />";
}

if ($anzahl_alle_klassen_sonntag < $max_anzahl_sonntag) {
}else{ 
echo "<span class=\"blau\">Der Turniertag Sonntag ist voll! Keine Anmeldung mehr hierfür möglich.</span><br />";
}

// Datenbank schließen
mysql_close($link);
?>

</body>
</html>

die Frage ist dann nur, wie krieg ich das mit meinem Formular in einklang? Am besten wäre dann, wenn man die Turneirklasse gar nicht mehr im Formluar auswählen könnte. Oder man erhält die Meldung erst beim Absenden.

19.06.2011 13:59 | geändert: 19.06.2011 14:25

17 Jörg Kruse

Am besten wäre dann, wenn man die Turneirklasse gar nicht mehr im Formular auswählen könnte.

Du kannst die Auswahl ja so aufbauen

echo '<select name="turnierklasse">';
if ($anzahl_jugend < $max_anzahl_samstag_jugend) {
   echo '<option value="xyz">Jugend</option>'; 
}
// etc.
echo '</select>';

19.06.2011 16:43

18 tobi

ich nehme an, so sollte es dann passen?
<td align="left">Turnierklasse:</td>
<td align="left"><select name="turnierklasse">
<option>Bitte auswählen</option>
<?php if ($anzahl_jugend < $max_anzahl_samstag_jugend) { ?><option value="1"<?php echo(($_POST['turnierklasse']==1?' selected=selected':''));?>>Jugend - Turniertag 1 - Samstag 10. September 2011</option><?php } ?>
<?php if ($anzahl_dklasse < $max_anzahl_samstag_dklasse) { ?><option value="2"<?php echo(($_POST['turnierklasse']==2?' selected=selected':''));?>>D-Klasse - Turniertag 1 - Samstag 11. September 2011</option><?php } ?>
<?php if ($anzahl_alle_klassen_sonntag < $max_anzahl_sonntag) { ?><option value="3"<?php echo(($_POST['turnierklasse']==3?' selected=selected':''));?>>C-Klasse - Turniertag 2 - Sonntag 11. September 2011</option><?php } ?>
<?php if ($anzahl_alle_klassen_sonntag < $max_anzahl_sonntag) { ?><option value="4"<?php echo(($_POST['turnierklasse']==4?' selected=selected':''));?>>B-Klasse - Turniertag 2 - Sonntag 11. September 2011</option><?php } ?>
<?php if ($anzahl_alle_klassen_sonntag < $max_anzahl_sonntag) { ?><option value="5"<?php echo(($_POST['turnierklasse']==5?' selected=selected':''));?>>A-Klasse - Turniertag 2 - Sonntag 11. September 2011</option><?php } ?>
</select><?php echo $frm_error['turnierklasse']; ?>
</td></tr>

20.06.2011 19:46

19 Jörg Kruse

Ob's passt, siehst du ja, wenn du es austestet - z.B. indem du die max. Werte testweise heruntersetzt.

20.06.2011 20:32

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]