Hallo,
ich habe ein Script geschrieben, das folgendes leisten soll:
1. Prüfen, ob User eingeloggt ist.
2. wenn eingeloggt: prüfen ob mind. 1 "Credit" vorhanden ist
3. wenn mind. 1 Credit vorhanden: prüfen ob Formularfeld "Text" leer ist oder das Datum in der Vergangenheit liegt
4. wenn Formularfeld "Text" leer ist oder das Datum in der Vergangenheit liegt: Formular anzeigen
5. Beim Absenden des Formulars soll überprüft werden ob Formularfeld "Text" leer ist oder das Datum in der Vergangenheit liegt.
Wenn Text leer: Formular erneut aufrufen und Fehlerhinweis "Bitte Feld Text ausfüllen" anzeigen!
Wenn Datum in der Vergangenheit: Formular erneut aufrufen und Fehlerhinweis "Datum zu klein" anzeigen!
Wenn Text ausgefüllt und Datum in der Zukunft liegt: Daten in die Datenbank speichern!
Jetzt passiert folgendes. Gebe ich einen Text ein und wähle ich beim Datum den 01.September 2011 aus, dann macht das Script genau das was ich will: Formular erneut anzeigen, mein bereits eingegebener Text bleibt erhalten, ein Fehlerhinweis beim Datum wird angezeigt.
Gebe ich einen Text ein und wähle ich beim Datum den 01.Oktober 2011 aus, dann passiert nichts. Die Daten werden nicht in die Datenbank gespeichert, obwohl das Datum in der Zukunft liegt. Es wird einfach das Formular mit meinem bereits eingegebenen Text wieder angezeigt und in den Auswahlfeldern des Datums steht der 01. Januar 2011.
Das liegt irgendwie an dieser Zeile:
Denn ohne diese Zeile werden die Daten in die DB gespeichert.
Leider komme ich alleine nicht auf den Fehler. Vielleicht kann mir jemand von euch weiterhelfen.
Komplettes Script:
ich habe ein Script geschrieben, das folgendes leisten soll:
1. Prüfen, ob User eingeloggt ist.
2. wenn eingeloggt: prüfen ob mind. 1 "Credit" vorhanden ist
3. wenn mind. 1 Credit vorhanden: prüfen ob Formularfeld "Text" leer ist oder das Datum in der Vergangenheit liegt
4. wenn Formularfeld "Text" leer ist oder das Datum in der Vergangenheit liegt: Formular anzeigen
5. Beim Absenden des Formulars soll überprüft werden ob Formularfeld "Text" leer ist oder das Datum in der Vergangenheit liegt.
Wenn Text leer: Formular erneut aufrufen und Fehlerhinweis "Bitte Feld Text ausfüllen" anzeigen!
Wenn Datum in der Vergangenheit: Formular erneut aufrufen und Fehlerhinweis "Datum zu klein" anzeigen!
Wenn Text ausgefüllt und Datum in der Zukunft liegt: Daten in die Datenbank speichern!
Jetzt passiert folgendes. Gebe ich einen Text ein und wähle ich beim Datum den 01.September 2011 aus, dann macht das Script genau das was ich will: Formular erneut anzeigen, mein bereits eingegebener Text bleibt erhalten, ein Fehlerhinweis beim Datum wird angezeigt.
Gebe ich einen Text ein und wähle ich beim Datum den 01.Oktober 2011 aus, dann passiert nichts. Die Daten werden nicht in die Datenbank gespeichert, obwohl das Datum in der Zukunft liegt. Es wird einfach das Formular mit meinem bereits eingegebenen Text wieder angezeigt und in den Auswahlfeldern des Datums steht der 01. Januar 2011.
Das liegt irgendwie an dieser Zeile:
PHP-Code:
if( $sendedatum < date(Ymd) OR
Leider komme ich alleine nicht auf den Fehler. Vielleicht kann mir jemand von euch weiterhelfen.
Komplettes Script:
PHP-Code:
<?php
error_reporting(E_ALL);
require("datenbankverbindung.php");
session_start();
$sql = "SELECT
credits
FROM
tabkunde
WHERE
idkunde = '".mysql_real_escape_string($_SESSION['userid'])."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$row = mysql_fetch_assoc($result);
echo $row['credits'];
if(!isset($_SESSION['userid']))
{
echo "Du bist nicht eingeloggt.<br>\n".
"Bitte <a href=\"login.php\">logge</a> dich zuerst ein.\n";
}
elseif ($row['credits'] < '1')
{
echo "Du hast nicht genügend Credits.<br>\n";
}
elseif ($row['credits'] > '0')
{
// Abfrage, ob Formular vollständig ausgefüllt?
if( $sendedatum < date(Ymd) OR
$_POST['text'] == "")
{
// Aufruf Formular
echo '<form action="forum.php" method="POST">';
// Formularfeld für Text zeichnen
echo '<p>Text: ';
echo '<input type="text" name="text" value="';
// Inhalt, falls das Formular bereits unvollständig ausgefüllt wurde
echo $_POST['text'];
echo '" size="20" maxlength="60" />';
// Feld Text leer?
if ( $_POST['text'] == "" )
{
// Formular bereits schon mal aufgerufen?
if ( $_POST['schon_mal_abgesendet'] == "ja" )
{
// Fehlermeldung - Feld Text ausfüllen
echo "Hinweis: Bitte Feld Text ausfüllen";
}
}
echo '</p>';
// Formularfeld für Tag zeichnen
echo '<p>Datum: ';
echo 'Tag: ';
echo "\n<select name=\"d\">\n";
for($i=1;$i<=31;$i++) {
echo "\t<option value=\"". $i ."\">". $i ."</option>\n"; }
echo "</select>\n";
// Formularfeld für Monat zeichnen
$Monate = array(1 => "Januar",
2 => "Februar",
3 => "März",
4 => "April",
5 => "Mai",
6 => "Juni",
7 => "Juli",
8 => "August",
9 => "September",
10 => "Oktober",
11 => "November",
12 => "Dezember");
echo 'Monat: ';
echo "\n<select name=\"m\">\n";
for($i=1;$i<=12;$i++) {
echo "\t<option value=\"". $i ."\">". $Monate[$i] ."</option>\n"; }
echo "</select>\n";
// Formularfeld für Jahr zeichnen
echo 'Jahr: ';
echo "\n<select name=\"y\">\n";
for($i=2011;$i<=2020;$i++) {
echo "\t<option value=\"". $i ."\">". $i ."</option>\n"; }
echo "</select>\n";
echo '</p>';
// Datum formatieren
$sendedatum = sprintf("%d%02d%02d", $_POST['y'], $_POST['m'], $_POST['d']);
// Datum in der Vergangenheit?
if ( $sendedatum < date(Ymd) )
{
// Formular bereits schon mal aufgerufen?
if ( $_POST['schon_mal_abgesendet'] == "ja" )
{
// Fehlermeldung - Feld Datum ausfüllen
echo "Hinweis: Datum zu klein";
}
}
// Feld zur Kontrolle für Zweitaufruf
echo '<input type="hidden" name="schon_mal_abgesendet" value="ja" />';
// Submit-Button zum absenden der Eingaben
echo '<p>';
echo '<input type="Submit" name="absenden" value="absenden" />';
echo '</p>';
// Ende vom Formular
echo '</form>';
exit;
}
else
{
// alle Angaben liegen vor, nun gehts weiter
// Datum formatieren
$sendedatum = sprintf("%d%02d%02d", $_POST['y'], $_POST['m'], $_POST['d']);
// Daten in DB speichern
$sql_insert = "INSERT INTO tabtext
(idkunde,
text,
sendedatum)
Values
('".mysql_real_escape_string($_SESSION['userid'])."',
'".mysql_real_escape_string (trim($_POST['text']))."',
$sendedatum
)
";
if (mysql_query($sql_insert, $dbverbindung) != false)
{
echo 'Vielen Dank! Dein Eintrag wurde gespeichert.';
}
else
{
echo 'Der Eintrag wurde nicht gespeichert!';
}
mysql_close($dbverbindung);
}
}
?>

Kommentar