Php 如果文件没有';没有被选中,那么don';t上传

Php 如果文件没有';没有被选中,那么don';t上传,php,forms,file,upload,Php,Forms,File,Upload,我在这张表格上有问题。我希望用户能够编辑数据库中的项目。他们在一个页面上选择要编辑的项目,并通过进入编辑页面发送。GET具有需要编辑的项的id 编辑页面加载插入到用户表单中的项目的详细信息(文件名除外)。此字段保留为空。我试图做一些逻辑,检查用户是否选择了一个文件 如果他们没有,那么这个字段应该被忽略,因为我假设用户对已经上传的文件感到满意 如果他们选择了一个文件,这意味着他们希望这是新的图片。只有这样,我才想运行逻辑来上传图片并将其名称插入数据库 我通过以下方式了解帖子的详细信息: $clea

我在这张表格上有问题。我希望用户能够编辑数据库中的项目。他们在一个页面上选择要编辑的项目,并通过进入编辑页面发送。GET具有需要编辑的项的id

编辑页面加载插入到用户表单中的项目的详细信息(文件名除外)。此字段保留为空。我试图做一些逻辑,检查用户是否选择了一个文件

如果他们没有,那么这个字段应该被忽略,因为我假设用户对已经上传的文件感到满意

如果他们选择了一个文件,这意味着他们希望这是新的图片。只有这样,我才想运行逻辑来上传图片并将其名称插入数据库

我通过以下方式了解帖子的详细信息:

$clean_pic = $_POST['pic'];
然后我说,如果为空,则不执行任何操作,否则请运行上载:

if($clean_pic = ''){}
    else{
它不起作用了。你知道我该怎么弄清楚它是否是空白的吗?缩减代码:

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

    // validate 'pic': must consist of alphanumeric characters only.
    $_POST['pic'] = isset($_POST['pic']) ? $_POST['pic'] : '';
    //if(preg_match('/\.(jpg|gif|jpeg)$/i',$_POST['pic']))
        //{
        $clean_pic = $_POST['pic'];
        //}
    //else
        //{$error++; $errmsg .= 'Invalid pic. ';}

}


if (isset($_POST['add']) && ($error==0)) 
{                   


    if (!isset($_POST['pic'])) { echo"test1";}
else {echo"test222";}

    /*tied this too but it didnt work (it will always display result 1):
       if (!isset($_POST['pic'])) { echo"test1";}
   if (isset($_POST['pic']))  {echo"test222";}*/

}

else //output error messages 
{
/////////render form
?>
<form enctype="multipart/form-data" action="" method="post" id="save"><fieldset>
<table id="site-form">
    <tr>
    <td class="one_of_three"><label>Item Name:&nbsp;&nbsp;</label></td>
    <td class="two_of_three"><input type="text" name="fileName" id="fileName" value="<?php echo"$db_name";?>"/></td>
    <td><label class="errors" id="fileNameError">&nbsp;</label></td>
    </tr>
    <tr>
    <td class="one_of_three"><label>Picture:&nbsp;&nbsp;</label></td>
    <td class="two_of_three"><input type="file" name="userfile[]" id="pic"/></td>
    <td><label class="errors" id="picError">&nbsp;</label></td>
    </tr>

    <tr>
        <td class="one_of_three">&nbsp;</td>
        <td class="two_of_three"><input name="add" id="save_button" type="submit" value="Update"/>&nbsp;&nbsp;<a href="../">Cancel</a>.</td>
        <td>&nbsp;</td>
    </tr>
</table>
</fieldset></form>
<?php }?>
if(isset($\u POST['add']))
{
//验证“pic”:只能由字母数字字符组成。
$\u POST['pic']=isset($\u POST['pic'])?$\u POST['pic']:'';
//if(preg|u match('/\.(jpg | gif | jpeg)$/i',$|u POST['pic']))
//{
$clean_pic=$_POST['pic'];
//}
//否则
//{$error++;$errmsg.=“无效图片”。;}
}
如果(设置($_POST['add'])&($error==0))
{                   
如果(!isset($_POST['pic']){echo“test1”;}
else{echo“test222”;}
/*也绑定了此项,但它不起作用(它将始终显示结果1):
如果(!isset($_POST['pic']){echo“test1”;}
if(isset($_POST['pic']){echo“test222”;}*/
}
else//输出错误消息
{
/////////渲染形式
?>
项目名称:

如果(!isset($\u POST['pic'])

您不能使用'id'属性('pic')访问文件。您必须使用'name'属性('userfile')的值。您可以在php中使用$\u FILES数组检查文件是否上载

如果(isset($_文件)&&isset($_文件['userfile'])&&(trim($_文件['userfile']['name'])!=“”)){

//你的上传代码在这里

}

否则

{

//没有上载文件


}

您需要检查以下内容: 一个是$\u POST['pic']是一个数组
第二个是您必须使用enctype=“multipart/form data”的形式属性。

谢谢,但你完全误解了这个问题。问题是询问他们是否选择了表单中的文件,然后运行上载逻辑。如果他们没有选择文件,则不要运行上载逻辑。检查文件是否已上载是没有用的。我现在尝试此操作,但无效:“code”$\u POST['pic']=isset($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\“code”我不明白你可能想要实现什么。我以为你只想在用户选择文件时做一些事情,可以这样做:
感谢hellp,但这仍然不起作用。我尝试了你给我的代码。我修改了帖子,以便你能看到新代码是什么。pic的第一个isset测试似乎不起作用o影响事情。如果我按原样运行代码,如果我选择或不选择文件,我会得到echo test222作为结果。如果我去掉这一行,那么我会得到echo test1作为结果,如果我选择或不选择文件,test1也是结果。这给了我一个想法,我认为其他的可能工作不正常……你能告诉我是什么吗e print_r($_POST['pic'])print_r($_POST['pic'])的输出始终不返回任何内容