Weiß nicht wo ich meine Definitionen reinsetzen soll
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abbrechen
abfrage
anweisung
aufruf
befehl
buchung
code
dank
date
datenbank
definition
eintrag
fehler
feld
frage
idee
jemand
list
problem
zeile
-
hallo,
ich habe (mal wieder) ein Problem mit meinem Ausleih-Formular.
ich poste euch erstmal den Code, unten gehts dann weiter mit dem schreiben:
<html> <body background=\"http://localhost/bg.bmp\"> <?php mysql_connect(\"localhost\", \"root\",\"\")or die (\"Keine Verbindung moeglich\"); mysql_select_db(\"testtesttesttesttest\") or die (\"Die Datenbank existiert nicht\"); mysql_select_db(\"testtesttesttesttest\") or die (\"Die Datenbank existiert nicht\"); ?> <head> <title>Buchung</title> </head> <body> <h1>Formular für die Gerätereservierung</h1> <?php $abfrage2 = \"SELECT Geraet FROM geräte\"; $ergebnis2 = mysql_query($abfrage2); ?> <form action=\"Buchung.php\" method=\"post\" target=\"_self\"> Name: <input name=\"Name\" type=\"text\" size=\"30\" maxlength=\"30\"> <br> vom: von: <br> Datum: <input name=\"Datum1\" type=\"text\" size=\"7\" maxlength=\"12\"> Zeit: <input name=\"Zeit1\" type=\"text\" size=\"7\" maxlength=\"12\"> <br> bis: bis:<br> Datum: <input name=\"Datum2\" type=\"text\" size=\"7\" maxlength=\"12\"> Zeit: <input name=\"Zeit2\" type=\"text\" size=\"7\" maxlength=\"12\"> <br> <br> Gerät: <select name=\"Geraet\" size=\"1\"> <option> ...bitte wählen Sie ein Gerät </option> <?php while($row = mysql_fetch_object($ergebnis2)) { echo \"<option>\"; echo $row->Geraet.\"</option>\"; } ?> </select> <br> <br> <input type=\"submit\" value=\" Absenden \"> <input type=\"reset\" value=\" Abbrechen\"> <input type=\"hidden\" name=\"hiddenvalue\" value=\"kaese\"> </form> <br><br><br><br> <?php $Name = $_POST[\"Name\"]; $Datum1 = $_POST[\"Datum1\"]; list ($tag1, $monat1, $jahr1) = split (\'[,.-]\', $Datum1); $Zeit1 = $_POST[\"Zeit1\"]; list ($stunde1, $minute1,) = split (\'[:]\', $Zeit1); $Datum2 = $_POST[\"Datum2\"]; list ($tag2, $monat2, $jahr2) = split (\'[,.-]\', $Datum2); $Zeit2 = $_POST[\"Zeit2\"]; list ($stunde2, $minute2) = split (\'[:]\', $Zeit2); $Geraet = $_POST[\"Geraet\"]; if($_POST[\'hiddenvalue\']==\"kaese\") //sind Postdaten vorhanden { if ($Name == \"\") //ist gesendetes Feld \"Gerät\" leer { echo \'Bitte geben Sie einen Namen ein!\'; } elseif ($Datum1 == \"\" || $tag1 > \"31\" || $monat1 > \"12\" || $jahr1 < date(\"Y\")) //wenn das Feld \"Name\" nicht leer ist, abfrage ist Datum1 korrekt angegeben. { echo \"Bitte füllen sie das Ausleihdatum korrekt aus ( TT.MM.JJJJ )\"; } elseif ($Zeit1 == \"\" || $stunde > \"23\" || $minute > \"60\") //wenn das Feld \"Datum1\" nicht leer ist, abfrage ist Zeit1 korrekt angegeben. { echo \"Bitte füllen sie die Ausleihzeit korrekt aus ( hh:mm )\"; } elseif ($Datum2 == \"\" || $tag2 > \"31\" || $monat2 > \"12\" || $jahr2 < date(\"Y\")) //wenn das Feld \"Name\" nicht leer ist, abfrage ist Datum2 korrekt angegeben. { echo \"Bitte füllen sie das Abgabedatum korrekt aus ( TT.MM.JJJJ )\"; } elseif ($Zeit1 == \"\" || $stunde > \"24\" || $minute > \"60\") //wenn das Feld \"Datum2\" nicht leer ist, abfrage ist Zeit2 korrekt angegeben. { echo \"Bitte füllen sie die Abgabezeit korrekt aus ( hh:mm )\"; } elseif ($Geraet == \"...bitte wählen Sie ein Gerät\") //wenn das Feld \"Zeit2\" nicht leer ist, abfrage ist etwas bei Geraet eingegeben. { echo \"Bitte füllen sie das Gerät aus\"; } elseif ($timestamp1 > $timestamp2); //wenn alle Felder ausgefüllt sind checke timestamps { echo \"Bitte überprüfen Sie nochmal Ihren Ausleihtermin und Ihren Abgabetermin\"; } else //eintrag der Postdaten in die Datenbank { $eintrag = \"INSERT INTO buchung (Name, vomts, bists, Geraet) VALUES (\'$Name\', \'$timestamp1\', \'$timestamp2\', \'$Geraet\')\"; $eintragen = mysql_query($eintrag); } } $timestamp1 = mktime($stunde1,$minute1,0,$monat1,$tag1,$jahr1); $timestamp2 = mktime($stunde2,$minute2,0,$monat2,$tag2,$jahr2); ?> <table border=\"1\"> <tr> <th>Name</th> <th>vom</th> <th>um</th> <th>bis</th> <th>um</th> <th>Gerät</th> </tr> <tr> <td> <?php $abfrage = \"SELECT * FROM buchung ORDER BY `buchung`.`Datum1` ASC\"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo \"<tr><td>\"; echo $row->Name.\"</td><td>\"; echo date(\"d.m.Y\",$row->vomts).\"</td><td>\"; echo date(\"H:i\",$row->vomts).\"</td><td>\"; echo date(\"d.m.Y\",$row->bists).\"</td><td>\"; echo date(\"H:i\",$row->bists).\"</td><td>\"; echo $row->Geraet; echo \"</td></tr>\"; } ?> </table> <br>
Ab Reihe 72 fängt mein Problem ungefähr an. Kurz nachdem ich meine Variablen definiert habe, fange ich mit einer überprüfung an, also die gannzen if und elseif\'s dort, in Reihe 110 möchte ich nun überprüfen lassen, ob der erste timestamp (Ausleihtermin) größer ist als der zweite timestamp (Abgabetermin). Es ist klar das der Fehler jetzt daran liegt, dass meine Definition für
$timespamp1 und
$timestapm2 erst zu spät kommen. ( Definitionen stehen in Zeile 122,123 )
Aber wenn ich sie vor den ganzen if\'s und elseif\'s schreibe also dort, wo ich meine ganzen anderen Variablen definiert habe, gibt er ein Fehler aus, wenn man bei datum1,2 und zeit1,2 nichts eingibt( weil er ja keine Zeit erstellen kann, wenn es die Tags dat1,2[0,1,2] und time1,2[0,1] nicht gibt.
Meine Frage an euch ist jetzt: Wie kriege ich die Definitionen für $timestamp1 und 2 in meine ganzen if und elseif\'s Befehle rein, OHNE den Verlauf der Überprüfung zu stören.
Und noch ne bitte: versucht es bitte einfach zu erklären, da das meine erste Arbeit mit PHP ist.
danke schon mal -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du könntest deine mktime(); Aufrufe einfach dort in die if anweisung schreiben.
wo GENAU? wenn ich die beiden ich kann die ja nur unter ein else reinschreiben aber dann würde ich ja den Überprüfungsverlauf abbrechen, so denk ich mir das. Aber wenn jemand ne idee hat wie ichs da rein tun kann OHNE den Überprüfungsverlauf zu unterbrechen, dann erklärts mir wie und in welcher Zeile bitte.
danke -
Du könntest deine mktime(); Aufrufe einfach dort in die if anweisung schreiben.
wo GENAU? wenn ich die beiden ich kann die ja nur unter ein else reinschreiben aber dann würde ich ja den Überprüfungsverlauf abbrechen, so denk ich mir das. Aber wenn jemand ne idee hat wie ichs da rein tun kann OHNE den Überprüfungsverlauf zu unterbrechen, dann erklärts mir wie und in welcher Zeile bitte.
danke
ICh bin nicht viel besser als du in PHP denk ich ma aber wie wärs wenn du ein neues IF anfängst?
Wen total falsch ist sorry xD -
Du könntest deine mktime(); Aufrufe einfach dort in die if anweisung schreiben.
wo GENAU? wenn ich die beiden ich kann die ja nur unter ein else reinschreiben aber dann würde ich ja den Überprüfungsverlauf abbrechen, so denk ich mir das. Aber wenn jemand ne idee hat wie ichs da rein tun kann OHNE den Überprüfungsverlauf zu unterbrechen, dann erklärts mir wie und in welcher Zeile bitte.
danke
ICh bin nicht viel besser als du in PHP denk ich ma aber wie wärs wenn du ein neues IF anfängst?
Wen total falsch ist sorry xD
wie schon gesagt, wenn ihr mir Vorschläge postet, dann gibt mir bitte die Zeile an und was da rein soll. weil wenn du mir einfach sagst ich soll ein neues IF anfangen, wo denn am anfang gehts nicht da muss meine abfrage fürs hiddenfeld bleiben, in der Mitte gehts auch nicht, weil ich sonst mein Überprüfungsverlauf unterbrechen würde und am Ende wäre bereits zu spät, weil ich ja schon vorher die Definition brauche .
HILFE -
Im grunde genommen brauchst du kein neues IF du machst nur bei dem IF so ab Zeile 84 bis 113 irgendwo wenn die Klammer zu ist ANSTATT EIN NEUES ECHO ANZUFANGEN einfach den Befehl dazwischen, so brauchst du kein neues IF
Hoffe das hilft dir ich kenn mich auch noch nicht so gut aus
-
Im grunde genommen brauchst du kein neues IF du machst nur bei dem IF so ab Zeile 84 bis 113 irgendwo wenn die Klammer zu ist ANSTATT EIN NEUES ECHO ANZUFANGEN einfach den Befehl dazwischen, so brauchst du kein neues IF
Hoffe das hilft dir ich kenn mich auch noch nicht so gut aus
dann werden die Variablen aber nur definiert, wenn die beim if stehende Varaible leer ist, anstatt das ne Fehlermeldung ausgegeben wird.
kann mir denn keiner helfen !? =( -
Oh stimmt.. hast dus schonmal mit dem Befehl \"include\" um das reinzumachen versucht?
Hier der Befehl:
<?php include \"Dateiname\"; ?>
Mach also ne neue .php Datei und schreib den Befehl darein und mversuch ihn mit Include in den SCript einzubauen.
Vllt hilfts ja -
Oh stimmt.. hast dus schonmal mit dem Befehl \"include\" um das reinzumachen versucht?
Hier der Befehl:
<?php include \"Dateiname\"; ?>
Mach also ne neue .php Datei und schreib den Befehl darein und mversuch ihn mit Include in den SCript einzubauen.
Vllt hilfts ja
das wäre doch das selbe wie wenn ich den code einfach so reinschreibe -
Ich würde die beiden Timestamps einfach schon ganz am Anfang (also irgendwo nach $Geraet=$_POST[\'Geraet\']) definieren. Wenn keine Postdaten übertragen wurden oder irgendwas mit dem Format nicht stimmt, dann ist das auch egal, weil es nie zum Vergleich der beiden Timestamps kommt.
Beitrag geändert: 15.4.2008 13:59:23 von tct -
@tct das würde ja eigentlich gehen, aber in Zeile 90 mach ich ne Datumsabfrage in der er auch die tags prüft. Aber diese tags sind ja nicht vorhanden, wenn man nix für datum1 eingegeben hat. Also kann dann der Befehl mktime nicht richtig funktionieren und ich da ich ihn ja nach deinem Vorschlag ganz nach vorne machen würde, würde er dann einen Fehler ausgeben so in etwa:
Warning: mktime() expects parameter 1 to be long, string given in C:\\xampp\\htdocs\\Buchung.php on line 123
Warning: mktime() expects parameter 1 to be long, string given in C:\\xampp\\htdocs\\Buchung.php on line 124
-
Ist zwar nicht ganz so elegant, aber du kannst vor mktime() einfach ein @ setzen, dann werden eventuelle Fehlermeldungen unterdrückt.
-
cool, ich wusste gar nicht das es diese Funktion gibt, ich hab mir schon gedacht das
elseif ($Datum1 == \"\" || $tag1 > \"31\" || $monat1 > \"12\" || $jahr1 < date(\"Y\")) //wenn das Feld \"Name\" nicht leer ist, abfrage ist Datum1 korrekt angegeben. { echo \"Bitte füllen sie das Ausleihdatum korrekt aus ( TT.MM.JJJJ )\"; }
so zu machen
elseif ($Datum1 == \"\") { echo \"Bitte füllen sie das Ausleihdatum korrekt aus ( TT.MM.JJJJ )\"; } elseif ($tag1 > \"31\" || $monat1 > \"12\" || $jahr1 < date(\"Y\")) { echo \"Bitte füllen sie das Ausleihdatum korrekt aus ( TT.MM.JJJJ )\"; }
aber das mit @ ist viel einfacher, aber noch ne frage du meintest nicht so elegant, heißt das, dass da irgendwie was negatives am @ dran ist? -
aber das mit @ ist viel einfacher, aber noch ne frage du meintest nicht so elegant, heißt das, dass da irgendwie was negatives am @ dran ist?
Wenn nun durch mktime() ein anderer Fehler hervorgerufen wird (keine Ahnung was, aber kann ja passieren), dann wird der natürlich auch nicht ausgegeben. Ist fürs Debugging nicht so toll, wenn das Script jedoch so funktioniert, wie es soll, bzw. fertig entwickelt ist, kann man das @ ohne Probleme verweden. -
achso ich verstehe, aber ich glaub nicht das ich noch was anderes einbauen werde, was irgednwie mit mktime verknüpft ist, also ist mir das @ genug. Aber falls doch würde der code wie ich ihn in meinem letzen Post beschrieben habe, funktionieren oder?
also nochmal vielen dank tct! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage