Zur Navigation

Zwei oder mehr Anmeldungen pro Formular [4]

31 Jörg Kruse

Hier baust du $listeTK innerhalb der while Schleife auf:

                 if (!empty($_POST['turnierklasse'])) {
            foreach ($turnierklasse1 as $keyTK => $valuTK) {
               if ($keyTK != '-' && ($keyTK == $turnierklassex[$i])){
                  $listeTK .= "\t<option value=\"".$keyTK."\" selected='selected'>".$valuTK."</option>\n";
               } else {
                  $listeTK .= "\t<option value=\"".$keyTK."\">".$valuTK."</option>\n";
               }// ende for
            }
         } else {
            foreach ($turnierklasse1 as $keyTK => $valuTK) {
               $listeTK .= "\t<option value=\"".$keyTK."\">".$valuTK."</option>\n";
                  } // ende for
         }

Der erste Fall (!empty($_POST['turnierklasse'])) gehört da auch rein. Der zweiten Fall (else) gehört aber nach außerhalb von if(isset($_POST['sicherheitscode']))

// Werte für Listenfeld
$turnierklasse1 = array(
"1"=>"Damen",
"2"=>"Herren A",
"3"=>"Herren B",
"4"=>"Herren C"
       );

         $listeTK = '';
         $listeTK .= "\t<option value='' selected='selected'>Bitte auswählen</option>\n";
         if (empty($_POST['turnierklasse'])) {
            foreach ($turnierklasse1 as $keyTK => $valuTK) {
               $listeTK .= "\t<option value=\"".$keyTK."\">".$valuTK."</option>\n";
            }
         }

if(isset($_POST['sicherheitscode']))
{

Dann solte die Auflistung auch im Formular verfügbar sein

06.04.2009 20:07 | geändert: 06.04.2009 20:11

32 tobi

die auflistung erscheint jetzt.

wenn ich jetzt bei spieler 1 z.b. herren a auswähle und bei spieler 2 z.b. damen und dann absende,

dann kommt die meldung Notice: Undefined index: timestamp

und es sind damen bei beiden formuaren ausgewählt

außerdem kann ich in beiden formlaren damen, herren a, herren b, herren c, damen, herren a, herren b, herren c auswählen

$today = date("l; d.m.Y H:i:s");
                        $nachname="";
                        $vorname="";
                        $email="";
                        $verein="";
                        $spielklasse="";
                        $position="";
                        $turnierklasse="";
                        $eintrag="";
                        $timestamp="";
                        $meldung="";

                        $nachnamex = array('', '');
                        $vornamex = array('', '');
                        $emailx = array('', '');
                        $vereinx = array('', '');
                        $spielklassex = array('', '');
                        $positionx = array('', '');
                        $turnierklassex = array('', '');
                        $eintragx = array('', '');

// Werte für Listenfeld
$turnierklasse1 = array(
"1"=>"Damen",
"2"=>"Herren A",
"3"=>"Herren B",
"4"=>"Herren C"
       );

         $listeTK = '';
         $listeTK .= "\t<option value='' selected='selected'>Bitte auswählen</option>\n";
         if (empty($_POST['turnierklasse'])) {
            foreach ($turnierklasse1 as $keyTK => $valuTK) {
               $listeTK .= "\t<option value=\"".$keyTK."\">".$valuTK."</option>\n";
            }
         }


if(isset($_POST['sicherheitscode']))
{
    $code=$_POST['sicherheitscode'];
    $anzahl = 2;
    $nachnamex =($_POST['nachname']);
    $vornamex = ($_POST['vorname']);
    $emailx = ($_POST['email']);
    $vereinx = ($_POST['verein']);
    $spielklassex = ($_POST['spielklasse']);
    $positionx = ($_POST['position']);
    $turnierklassex = ($_POST['turnierklasse']);
    $eintragx = ($_POST["eintrag"]);
    $timestamp = ($_POST["timestamp"]);

    $i = 0;
    while ($i < $anzahl) {
        $nachname = mysql_real_escape_string($nachnamex[$i]);
        $vorname = mysql_real_escape_string($vornamex[$i]);
        $email = mysql_real_escape_string($emailx[$i]);
        $verein = mysql_real_escape_string($vereinx[$i]);
        $spielklasse = mysql_real_escape_string($spielklassex[$i]);
        $position = mysql_real_escape_string($positionx[$i]);
        $turnierklasse5 = mysql_real_escape_string($turnierklassex[$i]);
        $eintrag = mysql_real_escape_string($eintragx[$i]);

               if (!empty($_POST['turnierklasse'])) {
            foreach ($turnierklasse1 as $keyTK => $valuTK) {
               if ($keyTK != '-' && ($keyTK == $turnierklassex[$i])){
                  $listeTK .= "\t<option value=\"".$keyTK."\" selected='selected'>".$valuTK."</option>\n";
               } else {
                  $listeTK .= "\t<option value=\"".$keyTK."\">".$valuTK."</option>\n";
               }// ende for
            }
            }

    $meldung = "";

if(empty($_SESSION['captcha_spam'] ) || $code != $_SESSION['captcha_spam'])
   $meldung .= "<rot><b>Sicherheitscode falsch eingegeben!</b></rot><br>";
if(empty($nachname[0]))
   $meldung .= "<rot><b>Bitte Nachamen eingeben!</b></rot><br>";
if(empty($vorname[0]))
   $meldung .= "<rot><b>Bitte Vornamen eingeben!</b></rot><br>";
if(empty($email[0]) || !ereg('^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.([a-zA-Z]){2,4})$', $email))
   $meldung .= "<rot><b>Bitte eine gültige Emailadresse angeben!</b></rot><br>";
if(empty($verein[0]))
   $meldung .= "<rot><b>Bitte Verein eingeben!</b></rot><br>";
if(empty($spielklasse[0]))
   $meldung .= "<rot><b>Bitte Spielklasse eingeben!</b></rot><br>";
if(empty($position[0]))
   $meldung .= "<rot><b>Bitte Position eingeben!</b></rot><br>";
if(empty($turnierklasse[0]))
   $meldung .= "<rot><b>Bitte richtige Turnierklasse auswählen (Damen, Herren A, Herren B oder Herren C)!</b></rot><br>";

if(empty($meldung))
{


                   $meldung="<p><rot><b>Die Anmeldung zum PPC 2009 ist bei uns eingegangen!<br>In Ihrem Postfach befindet sich eine Bestätigung der Anmeldung.</b></rot></p>\n";

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());
               }
        $i++;
    }
}





mysql_close($link);


                echo "<div id=\"box1\">\n";
                echo "<p><b><font size=\"+2\">Anmeldung zum Ping-Pong-Café am Schelmenbusch 2009</font></b></p>\n";
                if ($meldung != "") {echo $meldung;}
                echo "<br>\n";
                echo "<hr noshade size=\"2\">\n";
                echo "<center>\n";
                echo "<form name=\"anmeldungform\" action=\"ppc2009Anmeldung_spieler2.php\" method=\"POST\">\n";
                echo "<table width=\"10\">\n";
                echo "<tr>\n";
                echo "<td align=\"center\" colspan=\"2\"><font size=\"+1\">Spieler 1:</font></td>\n";
                echo "</tr>\n";
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
//                echo "<tr>\n";
                echo "<td align=\"left\">Nachname:</td><td align=\"left\"><input name=\"nachname[]\" type=\"text\" id=\"name\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$nachnamex[0]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Vorname:</td><td align=\"left\"><input name=\"vorname[]\" type=\"text\" id=\"vorname\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$vornamex[0]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">eMail:</td><td align=\"left\"><input name=\"email[]\" type=\"text\" id=\"email\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$emailx[0]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Verein:</td><td align=\"left\"><input name=\"verein[]\" type=\"text\" id=\"verein\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$vereinx[0]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Spielklasse 09/10:</td><td align=\"left\"><input name=\"spielklasse[]\" type=\"text\" id=\"spielklasse\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$spielklassex[0]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Position:</td><td align=\"left\"><input name=\"position[]\" type=\"text\" id=\"position\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$positionx[0]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Turnierklasse:</td><td align=\"left\"><select name=\"turnierklasse[]\" id =\"turnierklasse\"> ".$listeTK."</select>\n";
                echo "</td>\n";
                echo "</tr>\n";

                echo "<tr>\n";
                echo "<td align=\"left\" valign=\"top\">Anmerkung:</td><td align=\"left\"><textarea name=\"eintrag[]\" cols=\"70\" rows=\"7\" id=\"eintrag\" class=\"eingabe\">".$eintragx[0]."</textarea></td>\n";
                echo "</tr>\n";
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "<td align=\"left\"><img src=\"bilder/ppc/ppc_anmeldung.gif\" width=\"140\" height=\"40\" border=\"0\"></td>\n";
                echo "<tr>\n";
                echo "</table>\n";

                echo "<hr noshade size=\"2\">\n";
                echo "<table width=\"10\">\n";
                echo "<tr>\n";
                echo "</tr>\n";
                echo "<td align=\"center\" colspan=\"2\"><font size=\"+1\">Spieler 2:</font></td>\n";
                echo "</tr>\n";
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
//                echo "<tr>\n";
                echo "<td align=\"left\">Nachname:</td><td align=\"left\"><input name=\"nachname[]\" type=\"text\" id=\"name\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$nachnamex[1]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Vorname:</td><td align=\"left\"><input name=\"vorname[]\" type=\"text\" id=\"vorname\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$vornamex[1]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">eMail:</td><td align=\"left\"><input name=\"email[]\" type=\"text\" id=\"email\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$emailx[1]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Verein:</td><td align=\"left\"><input name=\"verein[]\" type=\"text\" id=\"verein\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$vereinx[1]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Spielklasse 09/10:</td><td align=\"left\"><input name=\"spielklasse[]\" type=\"text\" id=\"spielklasse\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$spielklassex[1]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Position:</td><td align=\"left\"><input name=\"position[]\" type=\"text\" id=\"position\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$positionx[1]."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Turnierklasse:</td><td align=\"left\"><select name=\"turnierklasse[]\" id =\"turnierklasse\"> ".$listeTK."</select>\n";
                echo "</td>\n";
                echo "</tr>\n";

                echo "<tr>\n";
                echo "<td align=\"left\" valign=\"top\">Anmerkung:</td><td align=\"left\"><textarea name=\"eintrag[]\" cols=\"70\" rows=\"7\" id=\"eintrag\" class=\"eingabe\">".$eintragx[1]."</textarea></td>\n";
                echo "</tr>\n";

                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";

//eingefügt aus www.stoppt-den-spam.info
                echo "<tr>\n";
                echo "<td align=\"left\"><img src=\"captcha/captcha.php\" border=\"0\" title=\"Sicherheitscode\"></td>\n";
                echo "<td align=\"right\">Sicherheitscode vom Bild: <input type=\"text\" name=\"sicherheitscode\" size=\"5\"></td>\n";
                echo "</tr>\n";
//hier ende des einfügens
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "</table>\n";
                echo "<input name=\"formposten\" type=\"submit\" value=\"Abschicken\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"></center><br>\n";
                echo "</form>\n";
                echo "</center>\n";
                include "aktualisierung.php";
                echo "</div>\n";

07.04.2009 17:08 | geändert: 07.04.2009 17:15

33 Jörg Kruse

dann kommt die meldung Notice: Undefined index: timestamp

Das bezieht sich wohl auf diese Zeile (?):

$timestamp = ($_POST["timestamp"]);

Im Formular wird ja auch kein Parameter "timestamp" gesendet.

07.04.2009 22:43

34 tobi

doch hier:
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());

da wird aber dass andere problem nicht lösen mit der auswahl der einzelnen turnierklassen

07.04.2009 23:27 | geändert: 07.04.2009 23:28

35 Jörg Kruse

Zitat von tobi
doch hier:
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());

Das ist die Datenbankeingabe - das Formular sendet keinen Timestamp-Wert. Die Query zeigt aber auch, dass dies gar nicht nötig ist, da du den Timestamp mittels der MySQL-Funktion NOW() generierst. Du kannst die von mir in Beitrag 33 genannte Code-Zeile also getrost löschen, dann verschwindet auch die Notice.

da wird aber dass andere problem nicht lösen mit der auswahl der einzelnen turnierklassen

Eins nach dem anderen - du hast ja auch nach der Ursache für die Fehlermeldung gefragt. Das mit den Turnierklassen werde ich mir später nochmal anschauen.

08.04.2009 08:22

36 tobi

die notice ist jetzt weg

Zitat von Jörg

Eins nach dem anderen - du hast ja auch nach der Ursache für die Fehlermeldung gefragt. Das mit den Turnierklassen werde ich mir später nochmal anschauen.

ok

danke schon mal

08.04.2009 17:14

37 Jörg Kruse

Du benötigst wie auch bei den anderen Variablen $listeTK[0] und $listeTK[1]

Außerhalb von "if(isset($_POST['sicherheitscode']))":
         $listeTK[0] = '';
         $listeTK[0] .= "\t<option value='' selected='selected'>Bitte auswählen</option>\n";
         if (empty($_POST['turnierklasse'])) {
            foreach ($turnierklasse1 as $keyTK => $valuTK) {
               $listeTK[0] .= "\t<option value=\"".$keyTK."\">".$valuTK."</option>\n";
            }
         }
         $listeTK[1] = $listeTK[0];

Innerhalb von "if(isset($_POST['sicherheitscode']))":
            foreach ($turnierklasse1 as $keyTK => $valuTK) {
               if ($keyTK != '-' && ($keyTK == $turnierklassex[$i])){
                  $listeTK[$i] .= "\t<option value=\"".$keyTK."\" selected='selected'>".$valuTK."</option>\n";
               } else {
                  $listeTK[$i] .= "\t<option value=\"".$keyTK."\">".$valuTK."</option>\n";
               }// ende for
            }

Im Formular:
echo "<td align=\"left\">Turnierklasse:</td><td align=\"left\"><select name=\"turnierklasse[]\" id =\"turnierklasse\"> ".$listeTK[0]."</select>\n";

08.04.2009 20:33

38 tobi

super.
das klappt jetzt, darauf hätte ich ja eigentlich auch kommen können das man dafür ebenfalls 2 braucht ($listeTK[0] und $listeTK[1])

habs kurz getestet.
mail versand klappt und speichern in db auch.

1) leider erscheint bei mir nichts in der db bei turnierklasse. dort müßte die zahl 1, 2, 3 oder 4 eingetragen werden. hab ich da irgendwo nen zeichen bei der benennung vergessen?

die 1,2, 3, 4 komtm ja von hier:
"1"=>"Damen",
"2"=>"Herren A",
"3"=>"Herren B",
"4"=>"Herren C"

2) ich habe ja einige meldungen gemacht
z.b.
if(empty($nachname[0]))
   $meldung .= "<rot><b>Bitte Nachnamen eingeben!</b></rot><br>";

die meldung erscheint ja so lange bis in beiden nachnamen feldern was dinne steht.

kann ich da auch 2 meldungen dazu erscheinen lassen,
Bitte Nachnamen bei Spieler 1 eingeben!
Bitte Nachnamen bei Spieler 2 eingeben!

müßte dass dann so aussehen?

if(empty($nachname[0]))
   $meldung .= "<rot><b>Bitte Nachnamen bei Spieler 1 eingeben!</b></rot><br>";
if(empty($nachname[1]))
   $meldung .= "<rot><b>Bitte Nachnamen bei Spieler 2 eingeben!</b></rot><br>";

oder liege ich da falsch?


08.04.2009 23:41

39 Jörg Kruse

Zu 1) Du musst in der Query noch den Variablennamen anpassen

$turnierklasse5 = mysql_real_escape_string($turnierklassex[$i]);

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());

Zu 2) Du befindest dich hier in der while Schleife und kannst entsprechend auf das hochgezählte $i zugreifen

if(empty($nachname[$i]))
   $meldung .= "<rot><b>Bitte Nachnamen bei Spieler " . ($i + 1) . " eingeben!</b></rot><br>";

09.04.2009 15:39

40 tobi

1) eintrag in den db klappt jetzt richtig, hab die variable angepasst

2) ich hab jetzt den code eingefügt:
if(empty($nachname[$i]))
   $meldung .= "<rot><b>Bitte Nachnamen bei Spieler " . ($i + 1) . " eingeben!</b></rot><br>";

wenn ich dann im formular nichts eintrage erscheint:
Bitte Nachnamen bei Spieler 2 eingeben!

wenn ich dann beim ersten nen namen eintrage bleibt die meldung.
wenn ich beim ersten und beim zweiten nen namen eintrage, dann verschwindet die meldung. und wenn ich nur beim zweiten nen namen eintrage dann verschwindet die meldung ebenfalls.

woran liegt das, bzw wie kann ich das beheben?

09.04.2009 17:35 | geändert: 09.04.2009 17:50