0

嗨,我有三个表单,我想用一个提交按钮保存三个表单的值,该按钮位于 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");
     }

}
4

5 回答 5

0

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

于 2013-04-04T06:56:24.297 回答
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" }...and f2data 和 f3Data 然后将它们放入array : [f1data,f2data,f3data],然后对它们进行 json 编码并将它们发布到服务器。

在服务器上 json_decode 发布数据并使用它做任何你想做的事情。

于 2013-04-04T07:01:24.897 回答
0

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

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

于 2013-04-04T07:03:34.170 回答
0

你可以使用 jQuery post 来做到这一点,如下所示

$('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">
于 2013-04-04T07:04:31.900 回答
0

您还可以使用一些解决方法,如下所示:

使用您的 javascriptsubmit()函数,而不是:

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']

祝你的项目好运。

于 2013-04-04T07:15:53.837 回答