drisate Posted May 13, 2009 Share Posted May 13, 2009 Hey guys ... for some reason i am trying to upload more then 1 file but the only one taken charge is the first one ... Why? <?php // POST Debug echo '<pre>'; print_r($_POST); echo '</pre>'; echo '------------<pre>'; print_r($_FILES); echo '</pre>'; $idir = "../images/"; // Path To Images Directory $tdir = "../images/thumbs/"; // Path To Thumbnails Directory $twidth = "79"; // Maximum Width For Thumbnail Images $theight = "59"; // Maximum Height For Thumbnail Images if ($_POST) { $insert = mysql_query("INSERT $table (id, marque, prix, anne, modele, description) VALUE ('', '$_POST[marque]', '$_POST[prix]', '$_POST[anne]', '$_POST[modele]', '$_POST[description]')") or die(mysql_error()); $show = "3"; // profile // debug $count = count($_FILES['userfile']['name']) + 1; echo "<h1>There is : $count</h1><br>"; for ($i = 0; $i < $count; $i++) { $rand = rand("1000", "90000") . "-"; echo "- Image num: $i<br>"; if ($_FILES['userfile']['size'][$i] != "0") { echo "($i) " . $_FILES['userfile']['name'][$i] . " Prix en charge<br>"; $_FILES['userfile']['name'][$i] = $rand . $_FILES['userfile']['name'][$i]; // Uploading/Resizing Script $url = $_FILES['userfile']['name'][$i]; // Set $url To Equal The Filename For Later Use if ($_FILES['userfile']['type'][$i] == "image/jpg" || $_FILES['userfile']['type'][$i] == "image/jpeg" || $_FILES['userfile']['type'][$i] == "image/pjpeg") { $file_ext = strrchr($_FILES['userfile']['name'][$i], '.'); // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php $copy = copy($_FILES['userfile']['tmp_name'][$i], "$idir" . $_FILES['userfile']['name'][$i]); // Move Image From Temporary Location To Permanent Location if ($copy) { // If The Script Was Able To Copy The Image To It's Permanent Location print 'Image uploaded successfully.<br />'; // Was Able To Successfully Upload Image $simg = imagecreatefromjpeg("$idir" . $url); // Make A New Temporary Image To Create The Thumbanil From $currwidth = imagesx($simg); // Current Image Width $currheight = imagesy($simg); // Current Image Height if ($currheight > $currwidth) { // If Height Is Greater Than Width $zoom = $twidth / $currheight; // Length Ratio For Width $newheight = $theight; // Height Is Equal To Max Height $newwidth = $currwidth * $zoom; // Creates The New Width } else { // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height) $zoom = $twidth / $currwidth; // Length Ratio For Height $newwidth = $twidth; // Width Is Equal To Max Width $newheight = $currheight * $zoom; // Creates The New Height } $dimg = imagecreate($newwidth, $newheight); // Make New Image For Thumbnail imagetruecolortopalette($simg, false, 256); // Create New Color Pallete $palsize = ImageColorsTotal($simg); for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image $colors = ImageColorsForIndex($simg, $i); // Number Of Colors Used ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use } imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It) imagejpeg($dimg, "$tdir" . $url); // Saving The Image imagedestroy($simg); // Destroying The Temporary Image imagedestroy($dimg); // Destroying The Other Temporary Image print 'Image thumbnail created successfully.'; // Resize successful } else { print '<font color="#FF0000">ERROR: Unable to upload image.</font>'; // Error Message If Upload Failed } } else { print '<font color="#FF0000">ERROR: Wrong filetype (has to be a .jpg or .jpeg. Yours is '; // Error Message If Filetype Is Wrong print $file_ext; // Show The Invalid File's Extention print '.</font>'; } } } } ?> Array ( [anne] => [marque] => 10 [model] => [prix] => [description] => [b1] => Ajouter ) ------------ Array ( [userfile] => Array ( [name] => Array ( [0] => [1] => avatar-63671.jpg [2] => drisate_1.jpg ) [type] => Array ( [0] => [1] => image/pjpeg [2] => image/pjpeg ) [tmp_name] => Array ( [0] => [1] => /tmp/phpyCD6Ag [2] => /tmp/php6h5K01 ) [error] => Array ( [0] => 4 [1] => 0 [2] => 0 ) [size] => Array ( [0] => 0 [1] => 7741 [2] => 12852 ) ) ) Quote Link to comment https://forums.phpfreaks.com/topic/158011-multiple-upload-not-working-only-1-taken-charge/ Share on other sites More sharing options...
mikr Posted May 13, 2009 Share Posted May 13, 2009 I'm not sure what you are asking, but three things. By setting $count = count(...) + 1, you'll have the for loop iterate one beyond your total number of files. I'm guessing, your output below, would have futher read "There is : 4". Also, you may gain better traction, using move_uploaded_file() rather than copy(). PHP docs suggest that if you wish to use copy() in a move sense, then use rename(). You're killing your $i counter (probably why it doesn't run more than once). You have an inner for loop using $i (which kills the $i for the outer loop). Change that to $k or something else, and it should run through 'em all. If that is confusing, think of it this way: whatever value $palsize is, that will be the value of $i after the first image is uploaded. Quote Link to comment https://forums.phpfreaks.com/topic/158011-multiple-upload-not-working-only-1-taken-charge/#findComment-833501 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.