foutmelding

Status
Niet open voor verdere reacties.

pbd4499

Gebruiker
Lid geworden
29 jun 2009
Berichten
185
in ene php bestand heb ik een variabel aantal voor bestanden:
Code:
<input type="file" size="40" name='my_field[<?=$i?>]' value="" />

In een aangeroepen php bestand krijg ik een foutmelding voor onderstaande 2 toekenningen. My_field krijgt de variabele $path.

Code:
$fileatt_type	= $_FILES[$path]['type'];
$fileatt_name= $_FILES[$path]['name'];


De foutmelding is:
Notice: Undefined index: test\001_6.jpg in C:\t\t.php on line 6

Iemand een idee hoe dat komt? Ik heb het een beetje verbouwd vanaf een HTML maar dat HTML was geen array zoals nu wel het geval.
 
Laatst bewerkt:
Dus als ik het goed begrijp heb je in het formulier meerdere input/file elementen gezet met als "name" een array. Zo te zien ben je vergeten om de achterliggende php code ook aan te passen zodat het de array doorloopt.

Begin eens met print_r($_FILES) en maak een foreach constructie om de boel door te lopen.
 
met de instructie krijg ik door:

Array ( [my_field] => Array ( [name] => Array ( [1] => 001.jpg [2] => ) [type] => Array ( [1] => image/pjpeg [2] => ) [tmp_name] => Array ( [1] => C:\wamp\tmp\php31.tmp [2] => ) [error] => Array ( [1] => 0 [2] => 4 ) [size] => Array ( [1] => 2428540 [2] => 0 ) ) )

Ik zie door de bomen t bos niet en weet ff niet hoe dit aan te passen.
 
Je zit nog een dimensie te hoog in je array. Je zult inderdaad met een loop je array kunnen doorlopen:

PHP:
foreach ( $_FILES[ 'myfield' ] as $key => $value ) {

  echo $_FILES[ 'myfield' ][ $key ][ 'name' ]; 

}

bijvoorbeeld. Ongetest, maar dit is ongeveer het idee.
 
nu krijg ik:

Notice: Undefined index: myfield in C:\www\t.php on line 7
Warning: Invalid argument supplied for foreach() in C:\www\t.php on line 7

regel 7 is dan:

7: foreach($_FILES['myfield'] as $key => $value)
{
echo $_FILES['myfield'][$key]['name'];
echo $_FILES['myfield'][$key]['type'];
$fileatt_type = $_FILES['myfield'][$key]['type'];
$fileatt_name = $_FILES['myfield'][$key]['name'];
}
 
Slordigheidje, het moest zijn:

PHP:
foreach($_FILES['my_field'] as $key => $value)
 
hmm, er komt beweging in. Nu zegt ie:
Notice: Undefined index: myfield in C:\www\t.php on line 9
Notice: Undefined index: myfield in C:\www\t.php on line 10
Notice: Undefined index: myfield in C:\www\t.php on line 11
Notice: Undefined index: myfield in C:\www\t.php on line 12

code:
foreach($_FILES['my_field'] as $key => $value)
{
9 echo $_FILES['myfield'][$key]['name'];
10 echo $_FILES['myfield'][$key]['type'];
11 $fileatt_type = $_FILES['myfield'][$key]['type'];
12 $fileatt_name = $_FILES['myfield'][$key]['name'];
}
 
Kom op, een beetje zelf meedenken mag ook wel hoor.

Misschien moet je daar ook myfield vervangen door my_field ?
 
nou, de bomen het bos... zoals ik al zei.

zelfs met de underscore ertussen zelfde foutmelding.

als ik het zelf wist had ik de vraag niet hoeven uit te zetten
 
Post je code dan eens zoals je hem nu hebt, en de foutmeldingen die je nu krijgt...
 
Code:
	<?php
		function sendittome($sub, $msg, $fil, $path)
			{
//				$fileatt		= $_FILES['fileatt']['tmp_name'];
				$fileatt		= $fil;

				foreach($_FILES['my_field'] as $key => $value)
					{
						echo $_FILES['my_field'][$key]['name'];
						echo $_FILES['my_field'][$key]['type'];
						$fileatt_type	= $_FILES['my_field'][$key]['type'];
						$fileatt_name	= $_FILES['my_field'][$key]['name'];
					}

				echo '<br /> HierDeCode: ';
				print_r($_FILES) . '<br />';
				echo '<br />Path: ' . $path;
				echo '<br />Fil: ' .$fileatt;
				echo '<br />FileAttType: ' . $fileatt_type . '<br />';
				echo 'FileAttName: ' . $fileatt_name;
				$headers		= "From: $from";
				if (is_uploaded_file($fileatt))
					{
						$file = fopen($fileatt,'rb');
						$data = fread($file,filesize($fileatt));
						fclose($file);
						$semi_rand = md5(time());
						$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
						$headers .=	"\nMIME-Version: 1.0\n" . 
									"Content-Type: multipart/mixed;\n" .
									" boundary=\"{$mime_boundary}\"";
						$message =	"This is a multi-part message in MIME format.\n\n" . 
									"--{$mime_boundary}\n" .
									"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
									"Content-Transfer-Encoding: 7bit\n\n" .
									$message . "\n\n";
						$data = chunk_split(base64_encode($data));
						$message .= "--{$mime_boundary}\n" . 
									"Content-Type: {$fileatt_type};\n" .
									" name=\"{$fileatt_name}\"\n" .
									"Content-Transfer-Encoding: base64\n\n" .
									$data . "\n\n" .
									"--{$mime_boundary}--\n";
						$message .= '<br />' . $msg;
					}
				$ok = @mail('you@yourdomain.com', $sub, $message, $headers);
				if ($ok)
					{
						//echo "<p>Mail sent! Yay PHP!</p>";
					}
				else
					{
						echo "<p>Mail could not be sent. </p>";
					}
			}
	?>
 
En zo?

PHP:
foreach($_FILES['my_field'] as $key => $value)
					{
						echo $value['name'];
						echo $value['type'];
						$fileatt_type	= $value['type'];
						$fileatt_name	= $value['name'];
					}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan