如果为空,则跳过输入字段的条件

时间:2018-08-28 02:42:02

标签: php html mysql

我正在尝试设置一个条件,如果'filefield'为空,它将跳过DB中的插入,因为这只是一个选项,而只是继续在DB中插入'name'和'description',永远不会为空。

<?php
include("connection.php");

if (isset($_POST['submit']))
{

$name = mysqli_real_escape_string($conn, $_POST['name']);
$description = mysqli_real_escape_string($conn, $_POST['description']);

if ($name == '' || $description == '' )
{

$error = 'ERROR: Please fill required fields!';

renderForm($name, $description);
}
else
{

if(!empty($_FILES['filefield'])){
if(isset($_FILES['filefield'])){
$file=$_FILES['filefield'];
$upload_directory='uploads/';
$ext_str = "gif,jpg,jpeg,mp3,tiff,bmp,doc,docx,ppt,pptx,txt,pdf";
$allowed_extensions=explode(',',$ext_str);
$ext = substr($file['name'], strrpos($file['name'], '.') + 1);
if (!in_array($ext, $allowed_extensions) )
{

echo '<script language="javascript">';
echo 'alert("file type not allowed for upload")';
echo '</script>';
exit(); 
}

$path=md5(microtime()).'.'.$ext;

if(move_uploaded_file($file['tmp_name'],$upload_directory.$path)){

    $filefield = $_FILES["filefield"]["name"];
    $path = $path."/".$filefield;
   }
 }
   }
}

 if (!empty($_FILES['filefield']) || !isset($_FILES['filefield'])) {
$query = "INSERT INTO `item`(`name`, `description`, `path`) VALUES ('$name','$description','$path')";
}
else {
$query = "INSERT INTO `item`(`name`, `description`) VALUES ('$name','$description')";
}
$result = mysqli_query($conn, $query);
 if($result)
    {
    echo '<script language="javascript">';
    echo 'alert("Success!")';
    echo '</script>';      
    exit();
}   
}
?>

我不确定该如何处理。我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先,关闭所有逻辑,包括if(move_uploaded_file),以使$query处于任何条件之外。然后,只需检查filefield是否已填写。如果不为空,则您的$query插入所有三个字段。如果是,则您的$query仅插入$name$description

这可以从以下(大量缩减的)代码中看到:

/* Existing logic */
else
{
    if (!empty($_FILES['filefield'])) {
        if (isset($_FILES['filefield'])) {
            if (move_uploaded_file($file['tmp_name'], $upload_directory.$path)) {
               ...
               $path = $path."/".$filefield;
            }
        }
    }
}

/* Modified logic */
if (!empty($_FILES['filefield']) || !isset($_FILES['filefield'])) {
    $query = "INSERT INTO `item`(`name`, `description`, `path`) VALUES ('$name','$description','$path')";
}
else {
    $query = "INSERT INTO `item`(`name`, `description`) VALUES ('$name','$description')";
}
$result = mysqli_query($conn, $query);
相关问题