我有这个表格,它将我的产品信息插入我的数据库,在同一页上,我有另一个表格,它在我的数据库的另一个表上插入同一项目的图像,我有5个上传图像的文件,现在,当我插入我的产品信息时,我会创建一个$db->insert_id
,以便在另一个表单上上传图像时使用它,以定义稍后调用它们的图像id。先看代码
<?php
if (isset($_POST['submit'])){
$target = '../images/Projects/';
$pro_name = $_POST['pro_name'];
$pro_address = $_POST['pro_address'];
$area_from = $_POST['area_from'];
$area_to = $_POST['area_to'];
$pro_kind = $_POST['pro_kind'];
$pro_finish = $_POST['pro_finish'];
$pro_small_rooms = $_POST['pro_small_rooms'];
$pro_big_rooms = $_POST['pro_big_rooms'];
$pro_receptions = $_POST['pro_receptions'];
$pro_small_bathrooms = $_POST['pro_small_bathrooms'];
$pro_big_bathrooms = $_POST['pro_big_bathrooms'];
$pro_description = $_POST['pro_description'];
$proActivity=$_POST['propActivity'];
$putData = "INSERT INTO project_info (id, pro_title, pro_address, pro_area_from, pro_area_to, pro_kind, pro_description, pro_finish, pro_big_rooms, pro_small_rooms, pro_reception, pro_big_bathroom, pro_small_bathroom, propActivity) values ( '', '$pro_name', '$pro_address', '$area_from', '$area_to', '$pro_kind', '$pro_description', '$pro_finish', '$pro_big_rooms', '$pro_small_rooms', '$pro_receptions', '$pro_big_bathrooms', '$pro_small_bathrooms', '$proActivity')";
$result = $db->query( $putData ) or die ( $db->error );
$projectID=$db->insert_id;
}
if(isset($_POST['submitImages'])){
$target = '../images/Projects/';
$num=1;
foreach ($_FILES["img"]["error"] as $key => $error)
{
if ($error==UPLOAD_ERR_OK)
{
$tmp_name = $_FILES["img"]["tmp_name"][$key];
$name = $_FILES["img"]["name"][$key];
move_uploaded_file($tmp_name, "$target/$name");
$putData = "INSERT INTO projects_images (id, image, image_id)VALUE('', '$name', '$projectID')";
$result = $db->query($putData)or die($db->error);
if($result){
echo "OK";
}else{
echo"error";
}
}
}
}
?>
现在我在同一页上有两个提交两个表单,所以是否可以将$db->insert_id
值传递给表单二,如果不能,我如何解决这个问题。
好的,让我直说吧。
现在我有两份在同一页上提交的两份表格
你想要的是你的页面可以容纳两种不同的
- 表单1:输入产品信息(生成ID)
- form2:与产品图像相关联的输入(与上述产品ID相关联)
我会先做一些假设
- 必须先插入产品信息,然后才能关联图像
- 插入并提交信息,然后在两步过程中上传并提交图像
- 你也不希望发生这种事。。。
- 所有信息应同时发送(这意味着一体式表单)
- 保留两个表单,但将提交执行链接起来,这样用户就好像只发送了一个表单
请给我一些意见,我会很乐意扩展你的主张
PD:顺便说一句,我们应该只使用PHP吗?
编辑
这是一个模型骨架脚本,向你展示你可以做什么
// some starter logic
if (isset($_POST['operation'])) switch ($_POST['operation']) {
case 'createProject':
// logic behind submitting this form
// all goes well
$selectedProyect = $someResultFromLogic_MaybeAnObjectThatHoldsAnId;
break;
case 'fileLoader':
// logic behind submitting this form
break;
default: $msg = 'Unknown operation: '.$_POST['operation']; break;
}
if ($selectedProyect) {
// the user has already submitted our project info form
include 'fileLoaderForm.template.php';
} else {
// the user is setting up a new project
include 'createProyectForm.php';
}
当然,当你试图构建的东西变得很大时,这会很快变得复杂。有一些框架可以帮助你更好地组织代码,我知道(并且已经使用过)MVC。我自己制作各种复杂程度的MVP,但也有一些社区驱动的项目创造了奇迹。我想你的下一步行动是做更多的研究
当您处理两个单独的表单时,您应该
- 或者显示所选项目并将projectid分配给隐藏字段中的图像
- 或显示新的项目表单