我目前有一个在数据库中创建项目的表格,然后在下一步中,该表格允许用户上传多个图像,以列出两个部分的工作,但是我需要能够将第一页的$ id插入图片上传查询,以识别图片对应的列表
这是允许用户上传多张图片的页面
<input name="name" type="text" id="name" size="40" placeholder="Homestay's Name"/>
<input name="type" type="text" id="type" size="40" placeholder="Homestay's Type"/>
<input name="category" type="text" id="category" size="40" placeholder="Homestay's Category"/>
<input class='file' multiple="multiple" type="file" class="form-control" name="userfile[]" placeholder="Please choose your image">
这是功能
$path = pathinfo($_SERVER['PHP_SELF']);
for ($i = 0; $i < count ($_FILES['userfile']['name']); $i++)
{
$tmp_file = $_FILES['userfile']['tmp_name'][$i];
$filetype = $_FILES['userfile']['type'][$i];
$filesize = $_FILES['userfile']['size'][$i];
$filename = $_FILES['userfile']['name'][$i];
$destination = $path['dirname'] . '../data/' . $filename;
if (move_uploaded_file($tmp_file, $_SERVER['DOCUMENT_ROOT'] . $destination))
{
$name = $_POST['name'];
$type = $_POST['type'];
$category = $_POST['category'];
$sql="INSERT INTO homestay (name, type,category,)
VALUES
('$name', '$type','$category')";
$result = mysql_query ("insert into img_homestay (id, location,filetype, filename, filesize)
values ('".$id."', '" . $destination . "','" . $filetype ."','" . $filename . "'," . $filesize . ") ");
}
}
最佳答案
我认为您最好的选择是:
创建表单以插入数据库项
获取插入项的ID,并在第二步中将其添加为隐藏元素
一旦第二张表格回来,您就可以轻松看到所需的ID。
请注意,这种方法将发送数据库ID的客户端,但这是最简单的选择。
第二种方法是利用会话变量-只需将项目ID存储到用户会话中,然后在第二步中检索它即可。如果同一位帐户/人员可以同时提交多个表格,这是比较安全的方法,但不是一个好方法。
$_SESSION['the_id'] = $result->id;
接着
$id = $_SESSION['the_id'];
最好的方法(我认为总是如此)是在客户端使用非明智的令牌,并使用某种逻辑将其映射到正确的ID。一个简单的示例是为ID生成一个复杂的哈希,并在发送步骤2的表单时将其作为隐藏字段发送给用户。将ID和哈希存储在数据库表中。
当用户回发该帖子时,请使用哈希将其映射回普通ID,然后销毁该条目。