如何保存值到三个表单的数据库与一个提交在php

how to save the values into database of three forms with one submit in php

本文关键字:数据库 一个 提交 php 表单 何保存 保存 三个      更新时间:2023-09-26

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

您只需将所有对象放在一个<form>标记中。因为你只调用了一个提交按钮

一次只能提交一个表单。在您的示例中,一旦调用form1.submit(),页面就会导航。

使用Ajax可以提交所有需要的表单。

您可以使用下面的jQuery post来实现

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

如果上面的不可行,那么为表单提供不同的目标。当你点击submit

时,会打开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">

您还可以使用以下方法:

使用你的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']访问。

祝你项目顺利。

仪式警告:请不要使用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", "姓氏":"doe"}…然后将f2data和f3Data放入数组中:[f1data,f2data, f3Data],然后json对它们进行编码并将它们发送到服务器。

在服务器上json_decode post数据并对其进行任何操作

相关文章: