title: PHP - Not all images get uploaded
body: <p>This problem has baffled me for a while now. Basically I have a form that when submitted will upload multiple images at the same time to the server and also insert a record of each image into a Mysql database. </p>
  
  <p>Currently I can select and upload up to 6 images successfully to the server and have their records inserted into the mysql database. </p>
  
  <p>If I select 7 images only 6 get uploaded. This is the same if I select 8, 9 or 10 images; its always one less than the total number that I selected that get uploaded. </p>
  
  <p>If I select 11 images and submit the form nothing happens, no images get uploaded and no records of the images get inserted into the database. </p>
  
  <p>I checked the images and all are within the allowed filetype, size, dimensions etc. the php.ini file for the webserver I'm using has max_file_uploads set to 200.</p>
  
  <p>So why does it upload all but one of my images in one instance and in another doesn't upload any of them?</p>
  
  <p>The code is quite long, I'll try and only include the applicable stuff.</p>
  
  <p>additem.php:</p>
  
  <pre><code>//check if the submit button has been clicked
      if( isset( $_POST['submit'] ) ){
  
          //validate the title and description
          $title = validate_title($_POST['title']);
          $desc = validate_desc($_POST['desc']);
  
          //Get other posted variables
          $cat = $_POST['cat'];
          $year = $_POST['year'];
  
          if($title &amp;&amp; $desc != false){
  
  
              //check if an image has been submitted
              if((!empty($_FILES["files"])) &amp;&amp; ($_FILES['files']['error'][0] == 0)){
  
                  // Insert the post
                  insert_post_db($title, $desc, $year);
  
                  // Get id of last inserted post
                  $post_id = get_postid();
  
                  // loop through each individual image
                  foreach($_FILES['files']['tmp_name'] as $key =&gt; $tmp_name){ 
  
                      // Get the image info
                      $temp_dir = $_FILES['files']['tmp_name'][$key]; // Temporary location of file
                      $image_type = $_FILES['files']['type'][$key]; // Image filetype
                      $image_size = $_FILES['files']['size'][$key]; // Image file size
                      $image_name = $_FILES['files']['name'][$key]; // Image file name
  
                      // Get image width and height
                      $image_dimensions = getimagesize($temp_dir); // returns an array of image info [0] = width, [1] = height
                      $image_width = $image_dimensions[0]; // Image width
                      $image_height = $image_dimensions[1]; // Image height
  
                      // Check to make sure there are no errors in ther file
                      if($_FILES['files']['error'][$key] === UPLOAD_ERR_OK){
  
                          // Make sure each filename name is unique when it is uploaded
                          $random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
  
                          // Set the path to where the full size image will be stored
                          $path = 'img/fullsize/'.$random_name . $_FILES['files']['name'][$key];
  
                          // Set the path to where the thumb image will be stored
                          $thumb_path = 'img/thumb_/'.$random_name .$_FILES['files']['name'][$key];
  
                          // Set the Maximum dimensions the images are allowed to be
                          $max_width = 4040;
                          $max_height = 4040;
  
                          // Set the Maximum file size allowed (5MB)
                          $max_size = 5242880;
  
                          // Set the file extensions that are allowed to be uploaded and store them in an array
                          $allowed = array('image/jpeg','image/png','image/gif');
  
                          // Check to make sure the image that is being uploaded has a file extension that we permit
                          if(in_array($image_type,$allowed)){
                              // Check to make sure the Image dimensions do not exceed the maximum dimensions allowed
                              if(($image_width &lt; $max_width) &amp;&amp; ($image_height &lt; $max_height)){ 
                                  // Check to make sure the Image filesize does not exceed the maximum filesize allowed
                                  if($image_size &lt; $max_size){ 
  
                                      // Check the shape of the Image (square, standing rectangle, lying rectangle) and assign a value depening on which it is
                                      $case = image_shape($image_width, $image_height);
  
                                      // Create the new thumbnail dimensions
                                      list($thumb_width, $thumb_height, $smallestside, $x, $y) = thumb_dimensions($case, $image_width, $image_height, $smallestside, $x, $y);
  
                                      // Create the thumbnails
                                      create_thumbnail($image_type, $image_height, $image_height, $temp_dir, $thumb_path, $thumb_width, $thumb_height, $smallestside, $x, $y);
  
                                      // move large image from the temporary location to the permanent one
                                      move_uploaded_file($temp_dir, $path);
  
                                      // Get the new randomly generated filename and remove the directory name from it
                                      $file_name = substr($path, 4);
  
                                      // Insert a record of the image in the Database
                                      insert_image_db($file_name, $cat, $post_id,$image_size, $image_width, $image_height);
  
                                      // Tell user image was successfully uploaded
                                      echo "&lt;p&gt;Image uploaded ok.&lt;/p&gt;";
  
                                      // Forward to the review post page
                                      header('Location: reviewpost.php');
                                  }else{
                                      echo $_FILES['files']['name'][$key] . ': unsupported file size.';
                                  }
                              }else{
                                  echo $_FILES['files']['name'][$key] . ': unsupported image dimensions.';
                              }
                          }else{
                              echo $_FILES['files']['name'][$key] . ': unsupported filetype.';
                          }
                      }else{echo 'file error';}
                  }
  
  
  
              }else{
                  //display error message if user didnt select an image to upload
                  echo '&lt;p&gt;There was an error processing your submission. Please select an image to upload.&lt;/p&gt;';
              }
          }else{
              //display error message if the title or description are incorrect length
              echo errormessage($title, $desc);
          }
      }
  </code></pre>
  
  <p>functions:</p>
  
  <pre><code>// Find out what shape the image is
      function image_shape($image_width, $image_height){
          if($image_width == $image_height){$case=1;} // square image
          if($image_width &lt; $image_height){$case=2;} // standing rectangle
          if($image_width &gt; $image_height){$case=3;} // lying rectangle
          return $case;
  
      }
  
      // Set the dimensions of the new thumbnail 
      function thumb_dimensions($case, $image_width, $image_height){
          switch($case){
              case 1:
                  $thumb_width    =   200;
                  $thumb_height   =   200;
                  $y = 0;
                  $x = 0;
                  $smallestside = $image_height;
              break;
              case 2:
                  $thumb_height   =   200;
                  $ratio          =   $thumb_height / $image_height;
                  $thumb_width    =   round( $image_width * $ratio );
                  $x = 0;
                  $y = ($image_height - $image_width) /2;
                  $smallestside = $image_width;
              break;
              case 3:
                  $thumb_width    =   200;
                  $ratio          =   $thumb_width / $image_width;
                  $thumb_height   =   round($image_height * $ratio);
                  $x = ($image_width - $image_height) /2;
                  $y = 0;
                  $smallestside = $image_height;
              break;
          }
          return array($thumb_width, $thumb_height, $smallestside, $x, $y);
      }
  
      // Create a thumbnail of the image
      function create_thumbnail($image_type, $image_width, $image_height, $temp_dir, $thumb_path, $thumb_width, $thumb_height, $smallestside, $x, $y){
          switch($image_type){
              case 'image/jpeg';
                  $thumbsize = 200;
                  $img =      imagecreatefromjpeg($temp_dir);
                  $thumb =    imagecreatetruecolor($thumbsize, $thumbsize);
                              imagecopyresized($thumb, $img, 0, 0, $x, $y, $thumbsize, $thumbsize, $smallestside, $smallestside);
                              imagejpeg($thumb, $thumb_path,100);
  
  
              break;
              case 'image/png';
                  $thumbsize = 200;
                  $img =      imagecreatefrompng($temp_dir);
                  $thumb =    imagecreatetruecolor($thumbsize, $thumbsize);
                              imagecopyresized($thumb, $img, 0, 0, 0, 0, $thumbsize, $thumbsize, $smallestside, $smallestside);
                              imagepng($thumb, $thumb_path, 0);
  
              break;
              case 'image/gif';
                  $thumbsize = 200;
                  $img =      imagecreatefromgif($temp_dir);
                  $thumb =    imagecreatetruecolor($thumbsize, $thumbsize);
                              imagecopyresized($thumb, $img, 0, 0, 0, 0, $thumbsize, $thumbsize, $smallestside, $smallestside);
                              imagegif($thumb, $thumb_path, 100);
  
              break;
          }
  
      }
      function insert_post_db($title, $desc, $year){
          //test the connection
          try{
              //connect to the database
              $dbh = new PDO("mysql:host=localhost;dbname=mjbox","root", "usbw");
          //if there is an error catch it here
          } catch( PDOException $e ) {
              //display the error
              echo $e-&gt;getMessage();
          }
  
          $stmt = $dbh-&gt;prepare("INSERT INTO mjbox_posts(post_year,post_desc,post_title,post_active,post_date)VALUES(?,?,?,?,NOW())");
          $stmt-&gt;bindParam(1,$year);
          $stmt-&gt;bindParam(2,$desc);
          $stmt-&gt;bindParam(3,$title);
          $stmt-&gt;bindValue(4,"0");
          $stmt-&gt;execute();
  
  
      }
      function insert_image_db($file_name, $cat, $post_id, $image_size, $image_width, $image_height){
  
          //test the connection
          try{
              //connect to the database
              $dbh = new PDO("mysql:host=localhost;dbname=mjbox","root", "usbw");
          //if there is an error catch it here
          } catch( PDOException $e ) {
              //display the error
              echo $e-&gt;getMessage();
          }
  
          //insert images
          $stmt = $dbh-&gt;prepare("INSERT INTO mjbox_images(img_file_name,cat_id,post_id,img_size,img_width,img_height,img_is_thumb) VALUES(?,?,?,?,?,?,?)");
          $stmt-&gt;bindParam(1,$file_name);
          $stmt-&gt;bindParam(2,$cat);
          $stmt-&gt;bindParam(3,$post_id);
          $stmt-&gt;bindParam(4,$image_size);
          $stmt-&gt;bindParam(5,$image_width);
          $stmt-&gt;bindParam(6,$image_height);
          $stmt-&gt;bindValue(7,"0");
          $stmt-&gt;execute();
      }
  </code></pre>
  
  <p>Sorry that it's a lot of code, I tried to only include the stuff that might be applicable, let me know if I missed something.
  Thanks</p>