Hallo.
Ich versuche etwas ähndliches nur in einer grösseren DB.
Gerne würde ich über die "select" Methode Datumsangaben in eine spalte der DB speichern.
Das Problem ist vermutilch ähndlich wie hier, dass er das ausgewählte Datum nicht in die DB schreibt, der "Input Type" kann auch kein "Submit" sein da es sich um ein ganzes formular handelt was dann gesendet wird.
So sieht der aktuelle Code aus, nun um Leerzeilen und KOmmentare verkleinert, welcher auch problemlos funktioniert sofern man das Datum in das Textfeld einträgt.
Versucht habe ich schon einiges, zur übersichtlichkeit setzte ich dne Code jedoch zurück, momentan ist nur die definition
$geburtsdatum = $_POST['geburtsdatum_tag'].'.'.$_POST['geburtsdatum_monat'].'.'.$_POST['geburtsdatum_jahr'];
zusätzlich dabei, wie natürlich der name in der "Function renderForm" (hier sind noch ungelistete enthalten).
<?php
$geburtsdatum = $_POST['geburtsdatum_tag'].'.'.$_POST['geburtsdatum_monat'].'.'.$_POST['geburtsdatum_jahr'];
function renderForm($one, $two, $three, $four, $five, $six, $seven, $eight, $nine, $geburtsdatum, $eleven, $twelve, $thirteen, $fourteen, $fifteen, $sixteen, $seventeen, $eighteen, $error)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>New Record</title>
</head>
<body>
<?php
// if there are any errors, display them
if ($error != '')
{
echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
}
?>
Hier in Zeile 17 liegt vermutlich das Problem
<form action="" method="post">
<div align="center">
<table border='1' cellpadding='5'>
<tr> <td><strong>Anrede: *</strong></td>
<td><input type="Radio" name="anrede" value="Frau" <?php if ($_POST['anrede'] == 'Frau') { echo "checked"; } ?> />Frau
<input type="Radio" name="anrede" value="Herr" <?php if ($_POST['anrede'] == 'Herr') { echo "checked"; } ?> />Herr </td> </tr>
<tr> <td><strong>Vorname: *</strong></td> <td><input type="text" maxlength="30" name="vorname" value="<?php echo $two; ?>" /></td> </tr>
<tr> <td><strong>Nachname: *</strong></td> <td><input type="text" maxlength="30" name="nachname" value="<?php echo $three; ?>" /></td> </tr>
<tr> <td><strong>Strasse: *</strong></td> <td><input type="text" maxlength="30" name="strasse" value="<?php echo $four; ?>" /></td> </tr>
<tr> <td><strong>Nr.: *</strong></td> <td><input type="text" maxlength="5" name="nummer" value="<?php echo $five; ?>" /></td> </tr>
<tr> <td><strong>PLZ: *</strong></td> <td><input type="number_format" maxlength="5" name="plz" value="<?php echo $six; ?>" /></td> </tr>
<tr> <td><strong>Wohnort: *</strong></td> <td><input type="text" maxlength="30" name="wohnort" value="<?php echo $seven; ?>" /></td> </tr>
<tr> <td><strong>Rufnummer: *</strong></td> <td><input type="text" maxlength="20" name="rufnummer" value="<?php echo $eight; ?>" /></td> </tr>
<tr> <td><strong>E-Mail: </strong></td> <td><input type="email" maxlength="50" name="email" value="<?php echo $nine; ?>" /></td> </tr>
<tr> <td><strong>Geburtstag: *</strong></td> <td><input type="date" maxlength="10" name="geburtstag" value="<?php echo $geburtsdatum; ?>" /></td> </tr>
</table>
<table border='1' cellpadding='5'>
<tr> <td><strong>ABO Typ: *</strong></td>
<td><input type="Radio" name="abo_typ" value="1" <?php if ($_POST['abo_typ'] == '1') { echo "checked"; } ?> />1
<input type="Radio" name="abo_typ" value="12" <?php if ($_POST['abo_typ'] == '12') { echo "checked"; } ?> />12
<input type="Radio" name="abo_typ" value="12+" <?php if ($_POST['abo_typ'] == '12+') { echo "checked"; } ?> />12+
<input type="Radio" name="abo_typ" value="12-" <?php if ($_POST['abo_typ'] == '12-') { echo "checked"; } ?> />12- </td> </tr>
<tr> <td><strong>ABO Beginn: *</strong></td> <td><input type="date" maxlength="10" name="abo_beginn" value="<?php echo $twelve; ?>" style="width: 165px" /></td> </tr>
<tr> <td><strong>ABO Ende: *</strong></td> <td><input type="date" maxlength="10" name="abo_ende" value="<?php echo $thirteen; ?>" style="width: 165px" /></td> </tr>
<tr> <td><strong>TS: *</strong></td>
<td><input type="Radio" name="timestop" value="4" <?php if ($_POST['timestop'] == '4') { echo "checked"; } ?> />Ja
<input type="Radio" name="timestop" value="0" <?php if ($_POST['timestop'] == '0') { echo "checked"; } ?> />Nein</td> </tr>
<tr> <td><strong>GF: *</strong></td>
<td><input type="Radio" name="group_fitness" value="Ja" <?php if ($_POST['group_fitness'] == 'Ja') { echo "checked"; } ?> />Ja
<input type="Radio" name="group_fitness" value="Nein" <?php if ($_POST['group_fitness'] == 'Nein') { echo "checked"; } ?> />Nein</td> </tr>
<tr> <td><strong>Kartennummer: </strong></td> <td><input type="number_format" maxlength="15" name="kartennummer" value="<?php echo $sixteen; ?>" style="width: 165px" /></td> </tr>
<tr> <td><strong>Rohdaten: </strong></td> <td><input type="number_format" maxlength="15" name="rohdaten" value="<?php echo $seventeen; ?>" style="width: 165px" /></td> </tr>
<tr> <td><strong>Bemerkungen: </strong></td> <td><input type="number_format" maxlength="50" name="bemerkungen" value="<?php echo $eighteen; ?>" style="width: 165px" /></td> </tr>
</table>
<table border='1' cellpadding='5'>
<tr> <td>* Required </td> </tr>
<tr> <td><input type="submit" style="float:right;" name="submit" value="Submit"></td> </tr>
</table>
</div>
</form>
</body>
</html>
Alles anzeigen
Einfügen würde ich geren folgendes, wenn machbar aus einer separaten .php, da dies so einiges an Codezeilen geben dürfte (natürlich auf 31 Tage und einige Jahrzehnte ausgeweitet).
<form action="">
<select name="geburtsdatum_jahr">
<option value="2001">2001</option>
<option value="2000">2000</option>
<option value="1999">1999</option>
<option value="1998">1998</option>
</select>
<select name="geburtsdatum_monat">
<option value="12">12</option>
<option value="11">11</option>
<option value="10">10</option>
<option value="10">10</option>
</select>
<select name="geburtsdatum_tag">
<option value="11">11</option>
<option value="22">22</option>
<option value="01">01</option>
<option value="02">02</option>
</select>
</form>
Alles anzeigen
Der "input type" soll kein "submit" sein, da das ganze Formular als eines abgesendet werden soll, man sollte nur das Datum auswählen können und dies so übernehmen.
Danach werden im gleichen file die Werte in die DB geschrieben, das Geburtsdatum soll ein "muss" Kriterium bleiben (Leerzeilen verkleinert da hier nicht das Problem liegen wird).
<?php
}
// connect to the database
include('connect-db.php');
// check if the form has been submitted. If it has, start to process the form and save it to the database
if (isset($_POST['submit']))
{
// get form data, making sure it is valid
$anrede = mysql_real_escape_string(htmlspecialchars($_POST['anrede']));
$vorname = mysql_real_escape_string(htmlspecialchars($_POST['vorname']));
$nachname = mysql_real_escape_string(htmlspecialchars($_POST['nachname']));
$strasse = mysql_real_escape_string(htmlspecialchars($_POST['strasse']));
$nummer = mysql_real_escape_string(htmlspecialchars($_POST['nummer']));
$plz = mysql_real_escape_string(htmlspecialchars($_POST['plz']));
$wohnort = mysql_real_escape_string(htmlspecialchars($_POST['wohnort']));
$rufnummer = mysql_real_escape_string(htmlspecialchars($_POST['rufnummer']));
$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
$geburtstag = mysql_real_escape_string(htmlspecialchars($_POST['geburtstag']));
$abo_typ = mysql_real_escape_string(htmlspecialchars($_POST['abo_typ']));
$abo_beginn = mysql_real_escape_string(htmlspecialchars($_POST['abo_beginn']));
$abo_ende = mysql_real_escape_string(htmlspecialchars($_POST['abo_ende']));
$timestop = mysql_real_escape_string(htmlspecialchars($_POST['timestop']));
$group_fitness = mysql_real_escape_string(htmlspecialchars($_POST['group_fitness']));
$kartennummer = mysql_real_escape_string(htmlspecialchars($_POST['kartennummer']));
$rohdaten = mysql_real_escape_string(htmlspecialchars($_POST['rohdaten']));
$bemerkungen = mysql_real_escape_string(htmlspecialchars($_POST['bemerkungen']));
// check to make sure all required fields are entered
if ($anrede == '' || $vorname == '' || $nachname == '' || $strasse == '' || $nummer == '' || $plz == '' || $wohnort == '' || $rufnummer == '' || $geburtstag == '' || $abo_typ == '' || $abo_beginn == '' || $abo_ende == '' || $timestop == '' || $group_fitness == '')
{
// generate error message
$error = 'ERROR: Please fill in all required fields!';
// if either field is blank, display the form again
renderForm($anrede, $vorname, $nachname, $strasse, $nummer, $plz, $wohnort, $rufnummer, $email, $geburtstag, $abo_typ, $abo_beginn, $abo_ende, $timestop, $group_fitness, $kartennummer, $rohdaten, $bemerkungen, $error);
}
else
{
// save the data to the database
mysql_query("INSERT players SET anrede='$anrede', vorname='$vorname', nachname='$nachname', strasse='$strasse', nummer='$nummer', plz='$plz', wohnort='$wohnort', rufnummer='$rufnummer', email='$email', geburtstag='$geburtstag', abo_typ='$abo_typ', abo_beginn='$abo_beginn', abo_ende='$abo_ende', timestop='$timestop', group_fitness='$group_fitness', kartennummer='$kartennummer', rohdaten='$rohdaten', bemerkungen='$bemerkungen'")
or die(mysql_error());
// once saved, redirect back to the view page
header("Location: view.php");
}
}
else
// if the form hasn't been submitted, display the form
{
renderForm('','','');
}
?>
Alles anzeigen