如何传递$db->;insert_id在同一页面上从一个表单到另一个表单


how to pass $db->insert_id from one form to other on the same page

我有这个表格,它将我的产品信息插入我的数据库,在同一页上,我有另一个表格,它在我的数据库的另一个表上插入同一项目的图像,我有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分配给隐藏字段中的图像
  • 或显示新的项目表单