2017-01-22 3 views
0

Я новичок в php, и я делаю простую регистрационную форму и сохраняю значения в базе данных, включая тексты, а также изображения.
Но во время отправки кнопки я получаю сообщение об ошибке Fill all the details, которого я не ожидаю.
Вот регистрационная форма
Ошибка произошла в php во время регистрации

<form action="php scripts\register.php" method="post" enctype="multipart/form-data"> 
<fieldset> 
    <legend>Event Registeration</legend> 
    <div class="left">Full Name</div> <div class="right"><input type="text" required = "required" placeholder="e.g. : Sachin Sharma" name = "full_name"></div><br><br> 
    <div class="left">Mobile</div><div class="right"><input type="text" required = "required" placeholder="+91" name= "mobile_number"></div><br><br> 
    <div class="left">Email</div> <div class="right"><input type="text" required = "required" name = "email" placeholder="email"></div><br><br> 
    <div class="left">ID</div><div class="right"><input type="file" required="required" name="ID" id="id_card"></div><br><br> 
    <div class="left">Registeration type</div><div class="right"> <select name="registrationType"> 
    <option value="student">student</option> 
    <option value="teacher">teacher</option> 
    <option value="principle">principle</option> 
    <option value="other">Others</option> 
</select></div><br><br> 
    <div class="left">Number</div><div class="right"><input type="number" value="1" name = "number" required="required"></div><br><br> 
    <button class="preview">Preview</button><button class = "submit">Submit</button> 
</fieldset> 
</form> 

Это register.php файл

<?php 
require_once 'DB_Functions.php'; 
$db = new DB_Functions(); 
if(var_dump(isset($_POST['full_name'],$_POST['mobile_number'],$_POST['email'],$FILES['IDCard'],$_POST['registrationType'],$_POST['number']))){ 
    $full_name = $_POST['full_name']; 
    $mobile_number = $_POST['mobile_number']; 
    $email = $_POST['email']; 
    $idCard = $FILES['ID']; 
    $registrationType = $_POST['registrationType']; 
    $number = $_POST['number']; 
    //Check if the user exist 
    if($db->isUserExisted($mobile_number)){ 
     die ("You have already registered"); 
    } 
    else{ 
     $user = $db->storeUser($full_name,$mobile_number,$email,$idCard,$registrationType,$number); 
     if($user){ 
      echo "You have successfully registered"; 
     } 
     else{ 
      die ("Unknown error occured during registeration"); 
     } 
    } 
} 
else{ 
    echo "Fill all the details"; 
} 
?> 

И это файл DB_Functions.php

public function saveUser($fullName,$mobileNumber,$email,$IDCard,$registerationType,$numberofTickets){ 
     $uuid = uniqid('',true); 
     $target_dir = "latitude_fintech/userPictures/"; 
     $target_file = $target_dir . basename($_FILES["IDCard"]["name"]); 
     $uploadOk = 1; 
     $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
     $check = getimagesize($_FILES["IDCard"]["tmp_name"]); 
     if($check !== false) { 
      echo "File is an image - " . $check["mime"] . "."; 
      $uploadOk = 1; 
     } else { 
      die("File is not an image."); 
      $uploadOk = 0; 
     } 
     // Check if file already exists 
     if (file_exists($target_file)) { 
      die("Sorry, file already exists."); 
      $uploadOk = 0; 
     } 
     // Check file size 
     if ($_FILES["IDCard"]["size"] > 500000) { 
      die("Sorry, your file is too large."); 
      $uploadOk = 0; 
     } 
     // Allow certain file formats 
     if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg") { 
      die("Sorry, only JPG, JPEG & PNG files are allowed."); 
      $uploadOk = 0; 
     } 
     if ($uploadOk == 0) { 
      die("Image should be png or jpg type only."); 
     } 
     else{ 
      if (move_uploaded_file($_FILES["IDCard"]["tmp_name"], $target_file)){ 

     //Store information 
     $stmt = $this->conn->prepare("INSERT INTO registeration_table(uniqueId, fullName, mobileNumber, email,idCard,registerationType,Tickets, 
     registerationDate) VALUES(?,?,?,?,$target_dir,?,?,NOW())"); 
     $stmt->bind_param("sssssss",$uuid, $fullName,$mobileNumber,$email, $idCard, $registerationType,$numberofTickets); 
     $result = $stmt->execute(); 
     $stmt->close(); 
     //Check for store 
     if ($result) { 
      $stmt = $this->conn->prepare("SELECT * FROM registeration_table WHERE mobileNumber = ?"); 
      $stmt->bind_param("s", $mobileNumber); 
      $stmt->execute(); 
      $user = $stmt->get_result()->fetch_assoc(); 
      $stmt->close(); 
      return $user; 
     } else { 
      return false; 
     } 
     } 
     else { 
       die("Sorry, there was an error uploading your file."); 
     } 
     } 
    } 

Любая помощь будет высоко оценил
Спасибо вы.

+0

'Исеть ($ _ POST [«ID»])', скорее всего, не удается, ваша форма не имеет поле с именем 'ID' (оно называется' IDCard'). – ccKep

+0

@ccKep Я исправляю то, что все еще не удается –

+0

На стороне примечание: 'isset' принимает несколько параметров и возвращает true, если ** all ** установлены, поэтому вы можете просто выполнить' if (isset ($ _ POST ['full_name' ], $ _POST ['mobile_number'], ...)) '. – ccKep

ответ

0

почему вы проверяете Исеть ($ _ POST [ 'ID'])

нет никакого имени поля, как 'ID' в вашей форме. Да, у вас есть IDCard в качестве имени поля.

Но это тип файла, так что вы можете получить свои данные с помощью «$ _FILES» не «$ _POST»

+0

Я исправил, что все еще не удалось –

+0

опубликовать отредактированный ответ. Не проверяйте значение идентификатора, используя $ _POST ['ID']. Поскольку это вход в файл, вам нужно проверить с помощью $ _FILES ['ID'] –

+0

. Он говорит, что то же самое заполняет все детали. –

Смежные вопросы