Php 从if(){…;}条件访问elseif(){..}条件中的数组数据
我在一个表单中有两个表单提交按钮,我想在Php 从if(){…;}条件访问elseif(){..}条件中的数组数据,php,arrays,forms,form-submit,Php,Arrays,Forms,Form Submit,我在一个表单中有两个表单提交按钮,我想在elseif(){…}中使用$data['picu path']=$upload,但它不起作用。我只能在if(){…}内部或html正文内部打印$upload。如何将$upload保存在$data数组中?谢谢 代码如下: 提交你的帖子 这是因为$uploaded只存在于您在中声明它的if语句中。您需要在elseif中再次循环文件,或移动$upload和$failed的声明,以及从该if块中填充它们的for循环,以便在两个路径中都可以访问变量 编辑-尝试
elseif(){…}
中使用$data['picu path']=$upload代码>,但它不起作用。我只能在if(){…}
内部或html正文内部打印$upload
。如何将$upload
保存在$data
数组中?谢谢
代码如下:
提交你的帖子
这是因为$uploaded
只存在于您在中声明它的if语句中。您需要在elseif中再次循环文件,或移动$upload
和$failed
的声明,以及从该if块中填充它们的for循环,以便在两个路径中都可以访问变量
编辑-尝试以下操作:
if (!empty($_FILES["files"]["name"][0]) ) {
$files = $_FILES["files"];
//arrarys to include files uploaded successfully and failed
$uploaded = array();
$failed = array();
//access tmp_name arrary
foreach ($files['name'] as $position => $file_name) {
$file_tmp = $files["tmp_name"][$position];
$file_ext = explode(".", $file_name);
$file_ext = strtolower(end($file_ext));
$file_name_new = uniqid("", true) . "." . $file_ext;
$file_destination = "uploads/" . $file_name_new;
if (move_uploaded_file($file_tmp, $file_destination)) {
$uploaded[$position] = $file_destination;
} else {
$failed[$position] = "error";
}
}
print_r($uploaded);
}
if (isset($_POST[submit_post])) {
$data = array();
$data['comments'] = $_POST['comments'];
$data ['pic_path'] = $uploaded;
}
我已经把$upload=array()代码>在if(){…}elseif(){…}
之外。但是仍然print\r($upload)
只在if(){…}
中有效,而不是在elseif(){…}
中。我用应该有效的代码编辑了我的答案。试试看。谢谢你的编辑,我已经试过了,但是$data['picu path']=$upload代码>值仍然为空。而且似乎摆脱if(isset($\u POST[submit\u POST]){…}
也会奏效。但是,我不知道这会对表单验证产生多大影响。但我将在我的完整代码中尝试一下:)一个可能的原因是,当您在提交文件后重新加载页面时,$_filesvar会被垃圾收集,因为您超出了范围,您需要确保在页面重新加载时将数据注入表单中,从而保留数据。实际上,在仔细查看之后,无法将文件重新填充回表单,您有两个选项。第一种方法是避免对每个文件都要求表单提交,而是使用JavaScript通过每次创建一个新字段来允许多次上传,或者可以使用JavaScript和Ajax从表单本身上传。另一个选项是临时保存文件,并创建某种ID系统来标识这些文件属于该用户表单,并在设置的时间后将其删除。就我个人而言,我只需要使用JavaScript,然后只有一个提交按钮。
if (!empty($_FILES["files"]["name"][0]) ) {
$files = $_FILES["files"];
//arrarys to include files uploaded successfully and failed
$uploaded = array();
$failed = array();
//access tmp_name arrary
foreach ($files['name'] as $position => $file_name) {
$file_tmp = $files["tmp_name"][$position];
$file_ext = explode(".", $file_name);
$file_ext = strtolower(end($file_ext));
$file_name_new = uniqid("", true) . "." . $file_ext;
$file_destination = "uploads/" . $file_name_new;
if (move_uploaded_file($file_tmp, $file_destination)) {
$uploaded[$position] = $file_destination;
} else {
$failed[$position] = "error";
}
}
print_r($uploaded);
}
if (isset($_POST[submit_post])) {
$data = array();
$data['comments'] = $_POST['comments'];
$data ['pic_path'] = $uploaded;
}