Няколко полета за качване на файлове на една форма

Проблема беше в това, че на места имаше ["file"]['name'] .. едното с двойни кавички, а другото с единични. Както и да е, вече отново записва в базата и отново по 3 реда с едно и също инфо...
ако само в единия инпут сложа файл прави един запис. Ако сложа в два импута документи прави 2 записа и т.н.
Ето снимка когато съм добавил файл и в трите инпута:
6788.png


t.e. Както го разбирам: взима трите файла и прави 3 записа в базата данни и във всеки запис в трите полета слага един и същи файл.
 
vinsbg каза:
uphero каза:
Изкарай си заявката за добавяне в БД извън for-а
и ползвай
http://php.net/manual/en/function.serialize.php
Тя е извън for-а.
А тази функция честно казано нищо не ми говори и нямам идея как мога да я използвам в случая.
Разбрах донякъде, че с нея мога/трябва да запазя документите в някакъв array?
За всеки файл си запиши всичко в един аррай сериализираш го и добавяш в БД
 
uphero каза:
vinsbg каза:
Явно няма да стане и това е.. какво ли не не пробвах вече.
Даваш някви парчета код само, дай всичко.
това е всичко.. има още 2-3 полета, като title, description тях не съм дал, но те не са проблемни ..
 
Това е целия пхп код
Код:
	if (isset($_POST["add"])) {
	$pdo = Database::connect();
	  $msg = "";
	  $permitted = array('application/vnd.ms-excel', 'application/pdf', 'application/msword', 'image/gif', 'image/jpeg', 'image/jpg', 'image/png', 'image/bmp'
	  ,'application/msword', 'application/mspowerpoint', 'application/vnd.ms-powerpoint', 'application/mspowerpoint', 'application/powerpoint', 'application/vnd.ms-powerpoint', 
	  'application/x-mspowerpoint', 'application/mspowerpoint', 'application/x-compressed', 'application/x-zip-compressed', 'application/zip');
	
	  if (count($_FILES["file"]) > 0) {
	  
	    $folderName = "uploads/";
	
	    $sql = "INSERT INTO document_upload ( upload_title,  upload_category,  upload_description, upload_worksheet, upload_lesson_plan, upload_materials, upload_size, upload_type, document_path, uploaded_by, upload_date) 
					  	VALUES (:upload_title,  ::upload_category,  :upload_description, :upload_worksheet, :upload_plan, :upload_materials,  :upload_size, :upload_type, :document_path, :uploaded_by, NOW())";
	    $stmt = $pdo->prepare($sql);

	     for ($i = 0; $i < count($_FILES["file"]["name"]); $i++) {
	
	      if ($_FILES["file"]["name"][$i] <> "") {     
	        if ($permitted) {
	 
	          $upload_title = $_POST['upload_title'];
	          $upload_category = $_POST['upload_category'];
	          $upload_description = $_POST['upload_description'];
	          $uploaded_by = $_SESSION['user_username'];
	  
	          $fileSize = $_FILES["file"]["size"][$i];
	          $fileType = $_FILES["file"]["type"][$i];
	          $fileName = $_FILES["file"]["name"][$i];
	          $tmpName  = $_FILES["file"]["tmp_name"][$i];
	          

		  $ext = substr(strrchr($fileName, "."), 1);
		  $_FILES["file"]["name"][$i] = rand(10000, 990000) . '-' .$fileName;
            
	          $filepath = $folderName . $_FILES["file"]["name"][$i];
	       
	          if (!move_uploaded_file($tmpName, $filepath)) {
	            $emsg .= "Error while uploadinг file - <strong>" . $_FILES["file"]["name"][$i] . "</strong>. Please try again. <br>";
	          } else {
	            $smsg .= "The file <strong>" . $_FILES["file"]["name"][$i] . "</strong> is added successfully. <br>";
	            /*             * ****** insert into database starts ******** */
	           			         
	            try {
	              $stmt->bindValue(":upload_worksheet", $_FILES["file"]["name"][$i], PDO::PARAM_STR);  
                $stmt->bindValue(":upload_plan", $_FILES["file"]["name"][$i], PDO::PARAM_STR);  
                    $stmt->bindValue(":upload_materials", $_FILES["file"]["name"][$i], PDO::PARAM_STR);                            
	              $stmt->bindValue(":upload_size", $fileSize, PDO::PARAM_STR);
	              $stmt->bindValue(":upload_type", $fileType, PDO::PARAM_STR); 
	              $stmt->bindValue(":document_path", $filepath, PDO::PARAM_STR);  
	                                                                                                                                                      
			$stmt->bindValue(":upload_title", $upload_title, PDO::PARAM_STR);
			$stmt->bindValue(":upload_category", $upload_category, PDO::PARAM_STR);
			$stmt->bindValue(":upload_description", $upload_description, PDO::PARAM_STR);
			$stmt->bindValue(":uploaded_by", $uploaded_by, PDO::PARAM_STR);
	
	              $stmt->execute();
	              $result = $stmt->rowCount();
	              if ($result > 0) {
	                // file uplaoded successfully.
	              } else {
	                // failed to insert into database.
	              }
	            } catch (Exception $ex) {
	              $emsg .= "<strong>" . $ex->getMessage() . "</strong>. <br>";
	            }
	            /*             * ****** insert into database ends ******** */
	          }
	        } else {
	          $emsg .= "This file <strong>" . $_FILES["file"]["name"][$i] . "</strong> isn't permitted. <br>";
	        }
	      }
	    }
	    
	    $msg .= (strlen($smsg) > 0) ? successMessage($smsg) : "";
	    $msg .= (strlen($emsg) > 0) ? errorMessage($emsg) : "";
	  } else {
	    $msg = errorMessage("You must add at least one file.");
	  }
	 
	}
	      $pdo = Database::disconnect();	
	      
	?>
А това е html-a
Код:
					<form class="form-horizontal" name="form-horizontal" action="" method="post" role="form" enctype="multipart/form-data" >
					  <div class="form-group">
						<label class="control-label col-sm-2" for="upload_title">Title:</label>
						<div class="col-sm-10">
						  <input type="text" class="form-control" name="upload_title" id="upload_title" placeholder="Enter Title for this lesson">
						</div>
					  </div>				  
					  <div class="form-group">
						<label class="control-label col-sm-2" for="upload_category">Category:</label>	
						<?php
							$pdo = Database::connect();
							$sql="SELECT field_name FROM form_fields WHERE group_id=6";
						  	foreach ($pdo->query($sql) as $row_category){
								echo '<label class="radio-inline"><input type="radio" name="upload_category" value="'.$row_category['field_name'].'"> '. $row_category['field_name'].'</label>';  								
							}												
  						?>							
					  </div>	

					  <div class="form-group">
						<label class="control-label col-sm-2" for="upload_description">Description:</label>
						<div class="col-sm-10">
						  	<input type="text" class="form-control" name="upload_description" id="upload_description" placeholder="Description ( Optional )">
						</div>
					  </div>
					  <div class="form-group">
						<label class="control-label col-sm-2" for="upload_lesson_plan">Lesson Plan:</label>
						<div class="col-sm-10">
						  	<input type="file" class="form-control" name="file[]" id="upload_lesson_plan">			  	
						</div>
					  </div> 
					  <hr>	
					  <div class="form-group">
						<label class="control-label col-sm-2" for="upload_worksheet">Worksheets: </label>
						<div class="col-sm-10">
						  	<input type="file" class="form-control" name="file[]" id="upload_worksheet">
						</div>						
					  </div>	
					  <div class="form-group">
						<label class="control-label col-sm-2" for="upload_materials">Lesson Materials: </label>
						<div class="col-sm-10">
						  	<input type="file" class="form-control" name="file[]" id="upload_materials" multiple>
						</div>						
					  </div>					  			  				  					  				  					  					  					  				  					  					  					  					  
					  <div class="form-group"> 
						<div class="col-sm-offset-2 col-sm-4">
						  <input type="submit" name="add" value="Add New Lesson" class="btn btn-primary btn-block">
						</div>
					  </div>
					  
</form>
 
SVTerziev каза:
https://mega.nz/#!kg8i1YyA!XeOaSzaE1hTJCQsrHHMoJBcFkLHfcTPmiFGnOeByd_k
:!: :!:
Това изглежда много по-добре от моите жалки опити.. по-стегнато и по-четливо. .. и най-важното работещо.

Много благодаря :?: :?:
 

Back
Горе