如何在PHP中使用一个提交将值保存到三个表单的数据库中

时间:2013-04-04 06:50:16

标签: php javascript html mysql

嗨我有三种形式,我想保存三个表单的值,一个提交按钮位于php中的三个表单之外我使用javascript提交我的表单现在我想将数据保存到我的数据库。 这是我的javascript

 function submit()
{
    document.form1.submit();
    document.form2.submit();
    document.form3.submit();

}

这是我的php

if(isset($_POST["submit"])){
    browse("1213 1314");
    $gen1 = mysql_query("SELECT MAX(accode) AS maxcode FROM quotmain LIMIT 0,1 ") or die(mysql_error());
    if (mysql_num_rows($gen1) > 0) {
        $vvouch = mysql_fetch_assoc($gen1);
        $qvouch = $vvouch["maxcode"] + 1;
    } else{
        $qvouch = '1';
    }

    $a = 1;
    $vouchdt  = mydt($_POST["vouchdt"]); 
    $name     = $_POST["cmbparty"];
    $refno    = $_POST["refno1"];
    browse($refno);
    $attn     = $_POST["attn"];
    $subj     = $_POST["subject"];
    $msg      = $_POST["messsage"];
    $rem      = $_POST["rem"];
    $count    = $_POST["items"];
    $h        = $_POST["h"]; 
    $status   = $_POST["cmbstatus"];

    mysql_query("DELETE FROM quotdtl WHERE vouchno='$qvouch'") or die(mysql_error());

    for ($i = 1; $i <= $count; $i++) {
        $ord     = $_POST['ord_' . $i];
        $srno    = $_POST['srno_' . $i];
        $descrip = $_POST['descrip_' . $i];
        $unit    = $_POST['unit_' . $i];
        $rate = $_POST['rate_' . $i];

        mysql_query("INSERT INTO `quotdtl`(vouchno, orderby, srno, `descrip`, unit, rate)
                            VALUES('$qvouch', '$ord', '$srno', '$descrip', '$unit', '$rate')") or die(mysql_error());
    }

     mysql_query("DELETE FROM quotnotes WHERE vouchno='$qvouch'") or die(mysql_error());

    for ($i = 1; $i <= $h; $i++) {
        $notes = $_POST['notes' . $i];

        mysql_query("INSERT INTO `quotnotes`(vouchno, `notes`)
                            VALUES('$qvouch', '$notes')") or die(mysql_error());
    }   

    if ($addflag == 1) {
        mysql_query("INSERT INTO `quotmain`(vouchno, `vouchdt`, `party`, refno, `attn`, `subject`, `message`, `rem1`, `status`, `username`)
                            VALUES($qvouch, '$vouchdt', '$name', '$refno', '$attn', '$subj', '$msg', '$rem', '$status','$_SESSION[username]')") or die(mysql_error());

        insmess();
        header("refresh: 1; quotation.php?mode=true");
     } else {
            $mvouch = $_POST["vouch"];
             mysql_query("UPDATE `quotmain` SET `vouchdt`='$vouchdt', `name`='$name', refno='$refno', `attn`='$attn', `subject`='$subj',
                                 `message`='$msg', `rem1`='$rem', `username`='$_SESSION[username]' WHERE vouchno = '$mvouch' ") or die(mysql_error());
             updmess();
             header("refresh: 1; menu.php?action=quotation");
     }

}

5 个答案:

答案 0 :(得分:0)

您只需将所有对象放在一个<form>标记中即可。由于您只调用一个提交按钮。

答案 1 :(得分:0)

仪式警告:请不要使用mysql_函数,而是使用mysqli_或PDO接口。

此代码:

function submit(){
    document.form1.submit();
    document.form2.submit();
    document.form3.submit();
} 

如果表单目标相同,则无效。

在这种情况下,您必须通过javaScript收集表单数据,并更好地将它们编码为JSON数组,然后POST到服务器。

要使用id ='SpecialInput1'访问第一个表单形式的输入值,请使用:

  var v1 = document.forms[0].SpecialInput.value; 
  // you can use form name also:
  var v1 = document.myFirstForm.SpecialInput.value;

将收集数据的循环写入Js对象,如f1Data = {“address”:“nowhere”,“name”:“John”,“surname”:“doe”} ...然后将f2data和f3Data放入将它们分成一个数组:[f1data,f2data,f3data],然后json对它们进行编码并将它们发布到服务器上。

在服务器json_decode上发布数据并随意做任何事情。

答案 2 :(得分:0)

您一次只能提交一份表格。在你的情况下,一旦你调用form1.submit()页面导航。

使用Ajax,您可以提交所有必需的表单。

答案 3 :(得分:0)

您可以使用下面的jQuery帖子

来完成
$('button').click(function() {
    $('form').each(function() {
        $.post(this.action, $form.serialize());
    });
});

如果上述条件不可行,请为表单提供不同的目标。当你点击提交时,这将打开2个新的窗口/标签

<form name="form1" id="form1" method="post" action="post.php">
<form name="form2" id="form2" method="post" action="post.php" target="_blank">
<form name="form3" id="form3" method="post" action="post.php" target="_blank1">

或者,您可以拥有3个不同的隐藏IFrame,并在表单中将目标指定为IFrame

<iframe name='if1' id='if1' src='dummy.html' border='0' frameborder='0' scrolling='auto' width='0' height='0'></iframe>
<iframe name='if2' id='if2' src='dummy.html' border='0' frameborder='0' scrolling='auto' width='0' height='0'></iframe>
<iframe name='if3' id='if3' src='dummy.html' border='0' frameborder='0' scrolling='auto' width='0' height='0'></iframe>

然后你的表格应该是

<form name="form1" id="form1" method="post" action="post.php" target="if1">
<form name="form2" id="form2" method="post" action="post.php" target="if2">
<form name="form3" id="form3" method="post" action="post.php" target="if3">

答案 4 :(得分:0)

你也可以使用这样的解决方法:

使用您的javascript submit()功能,而不是:

form1.submit();
form2.submit();
form3.submit();

您可以迭代form2和form3并将这些元素添加到form1,如下所示: (此代码未经过测试,只是概念)

for (element in form2.elements) {
     form1.elements['form2['+element['name']+']'] = element;
}
for (element in form3.elements) {
     form1.elements['form3['+element['name']+']'] = element;
}
form1.submit();

这样在你的form1中你可以得到其他表格中的所有数据,你可以告诉哪个表格提交了哪些数据,因为form2数据在$_POST['form2']数组中,而form3数据在$_POST['form3']数组中。 Form1数据仍可通过常规$_POST['field']访问。

祝你的项目好运。