2014-10-14 1 views
0

내 DB에 데이터를 삽입하려면이 양식을 사용하면 삽입되지 :PHP는 폼 문제 데이터가 비어있는 이미지 입력 ​​

<form action="demandes-de-tatouage.html" method="post" enctype="multipart/form-data"> 

<div id="name"><label for="name">Nom:</label></div> 
<div class="controls"><input class="input-block-level" type="text" name="name" value="" /></div> 
<div id="name"><label for="name">Email:</label></div> 
<div class="controls"><input class="input-block-level" type="text" name="email" value="" /></div> 

<div id="description"><label for="description">Description:</label></div> 
<div class="controls"><input class="input-block-level" type="text" name="description" value="" /></div> 
<div id="name"><label for="name">Partie du corps:</label></div> 
<div class="controls"><input class="input-block-level" type="text" name="partie" value="" /></div> 

<div id="image"><label for="image">Envoyez vos images</label></div> 
<div class="controls"><input id="image" name="image" type="file" value="" maxlength="100000" /> </div></br> 
<div class="controls"><input id="image2" name="image2" type="file" value="" maxlength="100000" /> </div></br> 

<input class="btn2" name="btn2" type="submit" value="Envoyer" /></form> 

이 :

<?php 
$host = ""; 
$databasename = ""; 
$user = ""; 
$pass = ""; 
/**********MYSQL Settings****************/ 

$conn = mysql_connect($host, $user, $pass); 

if ($conn) { 
    $db_selected = mysql_select_db($databasename, $conn); 
    if (!$db_selected) { 
     die('Can\'t use foo : '.mysql_error()); 
    } 
} else { 
    die('Not connected : '.mysql_error()); 
} 

$name = $_POST["name"]; 
//email: 
$email = $_POST["email"]; 
//description: 
$description = $_POST["description"]; 
//partie: 
$partie = $_POST["partie"]; 

function GetImageExtension($imagetype) { 
    if (empty($imagetype)) { 
     return false; 
    } 
    switch ($imagetype) { 
     case 'image/bmp': 
      return '.bmp'; 
     case 'image/gif': 
      return '.gif'; 
     case 'image/jpeg': 
      return '.jpg'; 
     case 'image/png': 
      return '.png'; 
     default: 
      return false; 
    } 
} 

if (!empty($_FILES["image"]["name"])) { 

    $file_name = $_FILES["image"]["name"]; 
    $temp_name = $_FILES["image"]["tmp_name"]; 
    $imgtype = $_FILES["image"]["type"]; 
    $ext = GetImageExtension($imgtype); 
    $imagename = $file_name."-".date("d-m-Y")."-".time().$ext; 
    $target_path = "images/assets/syltattoo/Emails/".$imagename; 
    if (!empty($_FILES["image2"]["name"])) { 

     $file_name2 = $_FILES["image2"]["name"]; 
     $temp_name2 = $_FILES["image2"]["tmp_name"]; 
     $imgtype2 = $_FILES["image2"]["type"]; 
     $ext2 = GetImageExtension($imgtype2); 
     $imagename2 = $file_name2."-".date("d-m-Y")."-".time().$ext2; 
     $target_path2 = "images/assets/syltattoo/Emails/".$imagename2; 

     if (move_uploaded_file($temp_name, $target_path) && move_uploaded_file($temp_name2, $target_path2)) { 
      $query_upload = "INSERT INTO `modx_demandes`(image, image2, name, email, description, partie) VALUES 

('".$target_path."','".$target_path2."','$name', '$email', '$description', '$partie')"; 
      mysql_query(
      $query_upload) or die("error in $query_upload == ----> ".mysql_error()); 
     } else { 

      exit("Error While uploading image on the server"); 
     } 

    } 
} 

내 문제는 사용자가 모든 필드를 작성하는 경우 제외한 iamge & image2 아무것도 데이터베이스에 삽입됩니다. 모든 필드가 채워지면 모든 것이 정상입니다. 그래서 두 가지 질문이 있습니다 : 1- 어떻게 빈 필드와 함께 작동하게 할 수 있습니까? 2 aftr 폼을 성공적으로 리디렉션하는 방법은 무엇입니까?

if (!empty($_FILES["image2"]["name"])) { /* ... */ } 블록 : 는 데이터베이스에 삽입 할 수있는 유일한 시간이 내에 있기 때문에 그것은 당신

+0

를 사용하여 PHP에서 리디렉션 (! 빈 ($ _ FILES [ "이미지"] [ "이름"])) {' – andrew

+2

당신이 경우 PHP를 배우기 만하면, 쓸모없는'mysql_query' 인터페이스를 배우지 마십시오. 그것은 끔찍한 일이며 PHP의 차후 버전에서 제거 될 것입니다. [PDO와 같은 현대적인 대체물은 배우기 어렵지 않습니다.] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/). [PHP The Right Way] (http://www.phptherightway.com/)와 같은 안내서는 베스트 프랙티스를 설명하는 데 도움을 줄 수 있습니다. 항상 절대적으로 ** 사용자 매개 변수가 [제대로 이스케이프]되어 있어야합니다 (http://bobby-tables.com/php). 또는 심각한 [SQL injection 버그] (http://bobby-tables.com/). – tadman

답변

0

감사드립니다.

사용자가 양식을 사용할 때 image2 필드를 사용하지 않은 경우 프로그램은 포함 된 코드 블록을 실행하지 않습니다.

는 만약 내가 '여기 시작할 것 다음

header('Location: someplace.php');