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

时间:2013-11-29 16:20:44

标签: php

我有这个表格,它将我的产品信息插入我的数据库,在同一页面上,我有另一个表格,在我的数据库的另一个表格上插入同一个项目的图像,我有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值传递给表单2,如果不是,我可以如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

好的,让我直截了当。

  

现在我有两个提交在同一页面上的两个表格

你想要的是你的页面有两种不同的形式

  • form1:输入产品信息(生成ID)
  • form2:与产品图片相关联的输入(与上述产品ID相关联)

我先做一些假设

  • 必须首先插入产品信息,以便之后可以关联图像
  • 插入并提交信息,然后按两个步骤上传和提交图像
  • 你不希望这种情况发生,要么......
    • 所有信息应该同时发送(这意味着一体化形式)
    • 保留2个表单,但链接提交执行,以便用户看起来只发送一个表单。

请给我一些评论,我很乐意扩展你的主张

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。我制作了不同复杂程度的MVC,但是有一些社区驱动的项目可以解决奇迹问题。我想你的下一步行动是做更多的研究

答案 1 :(得分:0)

当你处理两个单独的表格时,你应该

  • 或显示所选项目并将项目分配给隐藏字段的图像
  • 或显示新项目表单