Frage zur Formular auswertung bzw. Kontrollstruktur
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ablegen
ansicht
bereifung
bild
code
datei
datenbank
fehler
fehlermeldung
file
header
hersteller
image
index
melde
modell
notiz
ordner
testen
treten
-
Hallo Leutz,
Ich habe mir ein kleines Script gebastelt welches einige Infos und ein Bild jeweils in die Datenbank bzw. in einem Ordner ablegen soll, jedoch geht das Script nicht in die dafür vorher gesehende Kontrollstruktur hinein. Ich hab das Script mal zerlegt und nach meinen Ansichten geht alles wenn ich es einzeln abfrage. Ich wollte euch fragen ob ihr wisst woran es liegt.
Hier das Formular:
<form enctype=\"multipart/form-data\" action=\"index.php?action=sites/vehicles.php&send=oK\" method=\"post\"> <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\"> <tr><td align=\"right\">Bild:</td><td><input type=\"file\" name=\"file\"></td></tr> <tr><td align=\"right\">Hersteller:</td><td><input type=\"text\" size=\"20\" name=\"producer\" maxlength=\"40\"></td></tr> <tr><td align=\"right\">Modell:</td><td><input type=\"text\" size=\"20\" name=\"modell\" maxlength=\"40\"></td></tr> <tr><td align=\"right\">PS:</td><td><input type=\"text\" size=\"20\" name=\"ps\" maxlength=\"40\"></td></tr> <tr><td align=\"right\">Baujahr:</td><td><input type=\"text\" size=\"20\" name=\"year\" maxlength=\"40\"></td></tr> <tr><td align=\"right\">Farbe:</td><td><input type=\"text\" size=\"20\" name=\"color\" maxlength=\"40\"></td></tr> <tr><td align=\"right\">Bereifung vorn:</td><td><input type=\"text\" size=\"20\" name=\"tires_front\" maxlength=\"40\"></td></tr> <tr><td align=\"right\">Bereifung hinten:</td><td><input type=\"text\" size=\"20\" name=\"tires_back\" maxlength=\"40\"></td></tr> <tr><td><p align=\"right\">Besonderheiten:</td><td><textarea cols=\"40\" rows=\"4\" wrap=\"soft\" name=\"specifications\"></textarea></td></tr> </table> <p align=\"right\"><input name=\"edit\" type=\"submit\" value=\"Hinzufügen\" class=\"edit\"></p> </form>
Hier die Kontrollstruktur:
if(isset($_GET[\'send\']) && $admin && !empty($_FILES[\'file\']) && $producer!=\"\" && $modell!=\"\" && $ps!=\"\" && $year!=\"\" && $color!=\"\" && $tires_front!=\"\" && $tires_back!=\"\" && $specifications!=\"\"){ $uploaddir = \'include/userpics/\'; $image = $_FILES[\'file\'][\'tmp_name\']; $size = getimagesize($image); $height = $size[1]; $width = $size[0]; if($height < 251 && $width < 251){ if(move_uploaded_file($_FILES[\'file\'][\'tmp_name\'], $uploaddir . $modell . \".vehicle\")) { mysql_query(\"INSERT INTO `vehicles` (`id`, `owner`, `producer`, `modell`, `ps`, `year`, `color`, `tires_front`, `tires_back`, `specifications`) VALUES (\'\', \'$username\', \'$producer\', \'$modell\', \'$ps\', \'$year\', \'$color\', \'$tires_front\', \'$tires_back\', \'$specifications\')\"); header(\"Location: index.php?action=sites/vehicles.php\"); exit; } } else{ header(\"Location: index.php?action=sites/error.php&topic=hugepic\"); exit; } }else{
mfG
Chris
Beitrag geändert: 26.6.2008 20:32:52 von ghostrider -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Kannst du mal bitte die PHP Fehlermeldung posten, falls keine angezeigt wird binde das folgende in deine Datei ein:
// Melde alle PHP Fehler error_reporting(E_ALL);
Übrigens:
if($color!=\"\")
geht viel kürzer so:
if($color)
Vielleicht sind bei dir auch die globalen variablen nicht an.
Dann müsstest du das so machen $_POST[\'color\']; -
Ich habe alle !=\"\" entfernt und mir die PHP Fehler ausgegeben, leider kommen aber nur Notizen die mir sagen das er eine Variable nicht finden kann, dies beruht sich aber darauf das in der Datenbank nichts steht, alles in einem kein Fehler.Register_Globals ist ebenfalls aktiviert was mir beim testen aufgefallen ist.Danke aber für deine Schnelle Antwort.
-
Dann ist auch alles in Ordnung. Du möchtest wahrscheinlich nun, dass er trotzdem per header() umleitet. Das geht aber nur, wenn vorher absolut keine Ausgabe geschehen ist. D.h. du solltest die mysql-Fehlermeldungen unterdrücken, a la @mysql_query(...). Natürlich kannst du auch ganz allgemein alle Fehlerausgaben unterdrücken, um sicher zu stellen, dass header()in Kraft tritt.
-
Du kannst auch die automatische Ausgabe unterbinden.
Mit
ob_implicit_flush(false)
schlatest du das aus. Dann musst du jedesmal am Ende der Datei flush() schreiben, aber dafür kannst du ganz normal arbeiten mit echo und allem, ohne irgendetwas zu beachten und trotzdem header-Funktionen etc. benutzen.
Wie das mit Fehlermeldungen aussieht weiss ich nicht genau, wie das mit Fehlermeldungen aussieht...
Hab das übrigens selber nie benutzt, kann dir also nichts versprechen, kannst dir ja mal die verschiedenen Funktionen hier anschauen:
http://de.php.net/manual/de/ref.outcontrol.php -
Damit funktioniert es wunderbar, vielen dank euch
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage