Fehler "undefined index:..."
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beitrag
count
dateiname
eintrag
element
entsprechende variable
entwicklungsphase
erste
fall
fehlermeldung
formular
galerie
gel
gewicht
hubraum
insert
klappe
konditional
leistung
versuchen
-
Das ErrorLog zeigt folgendes:
[04-Oct-2005 08:57:04] PHP Notice: Undefined index: plength in /Applications/MAMP/htdocs/lscn/galerie/eintragen2.php on line 26
[04-Oct-2005 08:57:04] PHP Notice: Undefined index: leistung in /Applications/MAMP/htdocs/lscn/galerie/eintragen2.php on line 50
Achtung ich habe aus dem Code einige Kommentare gel?scht, so dass die Fehleremeldungen jeweils auf die Zeile fallen, in der die entsprechende Variable definiert wird.
Hier der Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php
include("connect.php.inc");
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Adobe GoLive">
<title>Unbenannte Seite</title>
<link href="style.css" rel="stylesheet" type="text/css" media="all">
</head>
<body background="images/wolkenback.jpg" bgproperties="fixed">
<h1 align="center">Galerieeintrag</h1>
<?php
$last_name = $_POST["nachname"];
$first_name = $_POST["vorname"];
$modell_name = $_POST["modellname"];
$plength = $_POST["plength"];
$pwidth = $_POST["pwidth"];
$art = $_POST["art"];
$motor_art = $_POST["motor_art"];
$motor = $_POST["motor"];
$hubraum = $_POST["hubraum"];
$leistung = $_POST["leistung"];
$gewicht = $_POST["gewicht"];
$features = $_POST["features"];
?>
<table border="0" cellpadding="5" width="100%" align="center">
<tr>
<td align="left"><nobr><h2>Dateiname</h2></nobr></td>
<td align="right"><nobr><h2>Dateigröße</h2></nobr></td>
</tr>
<?
$save_path="/Volumes/Mac_HD/Applications/MAMP/htdocs/lscn/galerie/upload/";
$file = $_FILES['userfile'];
$k = count($file['name']);
for($i=0 ; $i < $k ; $i++)
{
$filenamex = $file['name'][$i];
if (!file_exists("uploads/$filenamex"))
{
if($i %2)
{
echo '<tr bgcolor="#FFFF99"> ';
}
else
{
echo '<tr>';
}
echo '<td align="left">' . $file['name'][$i] ."</td>\n";
echo '<td align="right">' . $file['size'][$i] ."</td></tr>\n";
if(isset($save_path) && $save_path!="")
{
$name = split('/',$file['name'][$i]);
move_uploaded_file($file['tmp_name'][$i], $save_path . $name[count($name)-1]);
}
}
else
{
echo '<td align="left">' . $file['name'][$i] ."</td>\n";
echo "<td align=\"right\">Der Dateiname existiert bereits. Bitte wählen Sie eine anderen.</td>";
}
}
//echo "<tr style='color: #0066cc'><td>SSL</td><td>". (($_SERVER[HTTPS] != 'on') ? 'Off' : 'On') ."</td></tr>";
?>
</table>
<?php
$eintrag = "INSERT INTO galerie
(imgurl, last_name, first_name, modell_name, plength, pwidth, art, motor_art, motor, hubraum, leistung, gewicht, features)
VALUES
('$filenamex', '$last_name', '$first_name', '$modell_name', '$plength', '$pwidth', '$art', '$motor_art', '$motor', '$hubraum', '$leistung', '$gewicht', '$features')";
$eintragen = mysql_query($eintrag);
if($eintragen == "true")
{
echo "Der Eintrag war erfolgreich.";
}
else
{
echo "Der Eintrag ist leider fehlgeschlagen.";
}
?>
</body>
</html>
Ich hatte das ganze auch schon mit der GET-Methode, dann habe ich im internet mal gesucht und gefunden, dass das ganze mit POST nicht mehr auftreten sollte. Tut es aber
Ich hoffe ihr habt ne Idee zu der ganzen Sache.
Danke, james
Beitrag ge?ndert am 4.10.2005 09:20 von james -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Denk doch erst mal nach!
Was sagt dir die Fehlermeldung denn?
Sie sagt, dass ein undefinierter Index verwendet wird.
Damit ist der Index des Arrays "$_POST" gemeint.
Warum k?nnte der denn nicht definiert sein?
Genau - weil gar kein Formular abgeschickt wurde.
Was machen?
Am besten vorher abfragen, ob es den Index bereits gibt.
Wie?
Mit "if" nat?rlich:
if ( isset ( $_POST['index'] ) ) { $index = $_POST['index']; } else { $index = ''; }
Geht das nicht einfacher?
Ja, geht es.
Aber das ist dann ein wenig komplizierter.
Hier kann man es nachlesen ->
http://alopex.pyrokar.lima-city.de/index.php/PHP/Konditionaloperator.html
Beitrag ge?ndert am 4.10.2005 10:52 von lucas9991
Beitrag ge?ndert am 4.10.2005 10:54 von lucas9991 -
Ich w?rde f?r die Verarbeitung von Formulardaten besser $_REQUEST statt $_POST oder $_GET nehmen. Dann kannst du in der Test- oder Entwicklungsphase das "method"-Attribut im Formular auf "GET" stellen, und wenn du fertig bist, auf "POST" -- ohne dass du deinen Programmcode sonst weiter ?ndern musst.
Und die Abfrage, ob ein Formular-Element gesetzt wurde, kann man auch ohne Terti?r-/Konditional-Operator vereinfachen:
if( !isset($_REQUEST['element']) ) $_REQUEST['element'] = '';
In deinem Fall k?nnte man sogar eine Schleife f?r alle Array-Elemente benutzen:
foreach($_REQUEST as $key => $val) {
if( !isset($_REQUEST[$key]) ) $_REQUEST[$key] = '';
}
MfG
alopex -
Erstens habe ich sehr wohl ein Formular gesendet und die Fehlermeldung erscheint weiterhin. Zweitens habe ich es auch schon mit einer if-Funktion versucht, die f?r jeden wert isset abfragt un diesen wenn er leer ist, auf null setzt. Das war das, was ich auskommentiert, und dann hier gel?scht habe.
-
versuch es doch mal mit "$HTTP_POST_VARS['...']" damit m?sste es klappen, denn bei mir funktioniert es auch
-
versuch es doch mal mit "$HTTP_POST_VARS['...']" damit m?sste es klappen, denn bei mir funktioniert es auch
Das ist hier auf lima egal.
Du kannst "$_GET/POST", "$_REQUEST" oder auch $HTTP_GET/POST_VARS" nehmen.
Es liegt halt einfach an dir.
?berpr?fe am besten nochmal alles!
MfG Lucas -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage