【问题标题】:PHP script not submitting HTML form data to the databasePHP脚本未将HTML表单数据提交到数据库
【发布时间】:2019-03-11 08:13:14
【问题描述】:

我现在真的需要帮助。 我正在尝试制作一个记录现金/银行付款的应用程序。

我有一张叫做“现金簿”的桌子。它存储有关现金/银行付款的数据。它有 8 列:

id (stores transaction id)
enter code here
tdate (stores transaction date
chequeno (stores cheque number, if the payment is made by cheque)
originator (stores the name of the person to whom payment is made)
cr_amount (stores the amount of cash/bank payment)
tclass (stores the information about the class of transaction)
pmode (stores the mode of transaction-cash or bank)
payer (stores the name of the person making the payment)

我正在制作一个程序,当满足某些条件时,它将数据插入到“现金簿”表的特定列中。我定义了 4 记录现金/银行付款的条件。

下面是用来收集数据的html表单:

$(document).ready(function(){
	$('#designation').on('change', function(){
        if ( this.value == '1')
        {
            $("#supp").show();
            $("#paye").hide();
        }
        else if ( this.value == '2')
        {
            $("#paye").show();
            $("#supp").hide();
        }
        else
        {
            $("#supp").hide();
        }
    });
});
    

$(document).ready(function(){
    $('#pmoder').on('change', function(){
        if ( this.value == '2')
        {
            $("#chequeno").show();
        }
        else
        {
            $("#chequeno").hide();
        }
    });
});
<script  src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form role="form" method="post" action="registercash.php">
	<div class="form-group">
		<label>Date</label>
		<input class="form-control" name="tdate" type="date">
		</div>
		<div class="form-group">
			<label>Mode of Payment</label>
			<select class="form-control" id="pmoder" name="pmode">
				<option>0</option>
				<option>1</option>
				<option>2</option>
			</select>
		</div>
		<div class="form-group" id="chequeno" style="display: none;">
			<label>Cheque no</label>
			<input class="form-control" name="chequeno" >
			</textarea>
		</div>
		<div class="form-group" >
			<label>Amount</label>
			<input class="form-control" name="tamount" >
			</textarea>
		</div>
		<div class="form-group">
			<label>Designation / Supplier</label>
			<select class="form-control" id='designation' name="desig">
				<option>0</option>
				<option>1</option>
				<option>2</option>
			</select>
		</div>
		<div class="form-group" id="paye" style="display: none;">
			<label>Name of Payee</label>
			<input class="form-control" name="payeename" >
			</textarea>
		</div>
		<div class="form-group" id='supp' style="display: none;">
			<label>Select Supplier</label>
			<select class="form-control" name="suppliername">
				<option>Ministry of Trade and Industry</option>
				<option>Okaikwei North Municipal Assembly</option>
			</select>
		</div>
		<div class="form-group">
			<label>Class</label>
			<select class="form-control" name="tclass">
				<option>Personnel Emoluments</option>
				<option>Materials & Office consumables</option>
				<option>Serminars & Conferences</option>
			</select>
		</div>
		<button type="submit" name="Submit" class="btn btn-default">Record</button>
	</form>

以下是将数据添加到“现金簿”表的脚本:

<html>
    <head>
        <title>Add Data</title>
    </head>

    <body>
    <?php
    //including the database connection file
    include_once("config.php");

    $keyb = "";
    $keya = "";
    $chequeno = "";
    $keyc = "";
    $payeename = "";
    $suppliername = "";
    $tdate = "";
    $tclass = "";
    $tamount = "";
    if(isset($_POST['Submit'])) {	
        $keyb = mysqli_real_escape_string($mysqli, $_POST['pmode']);
        $chequeno = mysqli_real_escape_string($mysqli, $_POST['chequeno']);
        $keyc = mysqli_real_escape_string($mysqli, $_POST['desig']);
        $payeename = mysqli_real_escape_string($mysqli, $_POST['payeename']);
        $suppliername = mysqli_real_escape_string($mysqli, $_POST['suppliername']);
        $tdate = mysqli_real_escape_string($mysqli, $_POST['tdate']);
        $tclass = mysqli_real_escape_string($mysqli, $_POST['tclass']);
        $tamount = mysqli_real_escape_string($mysqli, $_POST['tamount']);
    }

    if(empty($keyb) || empty($keyc)|| empty($chequeno)|| empty($payeename)|| empty($suppliername)|| empty($tdate)|| empty($tclass)|| empty($tamount)) {
        if(empty($keyb)) {
            echo "<font color='red'>Payment mode is empty.</font<br/>";
        }

        if(empty($keyc)) {
            echo "<font color='red'>Designation is empty.</font><br/>";
        }
        if(empty($tdate)) {
            echo "<font color='red'>Transaction date is empty.</font><br/>";
        }
        if(empty($tclass)) {
            echo "<font color='red'>Transaction class is empty.</font><br/>";
        }
        if(empty($tamount)) {
            echo "<font color='red'>Transaction amount is empty.</font><br/>";
        }
    } elseif ($keyb=="1" && $keyc =="2"){
        $result = mysqli_query($mysqli, "INSERT INTO cashbook(tdate, originator,     cr_amount, tclass, pmode, payer) VALUES   ('$tdate', '$payeename','$tamount', '$tclass','$keyb','$payeename')");
            echo "<font color='green'>Data added successfully.";
        echo "<br/><a href='index.php'>View Result</a>";

    }elseif ($keyb=="2" && $keyc =="1"){
        $result = mysqli_query($mysqli, "INSERT INTO cashbook(tdate, chequeno, originator, cr_amount, tclass, pmode, payer) VALUES('$tdate', '$chequeno','$suppliername','$tamount','$tclass','$keyb','$payeename')");
        echo "<font color='green'>Data added successfully.";
        echo "<br/><a href='index.php'>View Result</a>";

    }elseif ($keyb=="2" && $keyc =="2") {
        $result = mysqli_query($mysqli, "INSERT INTO cashbook(tdate, chequeno, originator, cr_amount, tclass, pmode, payer) VALUES('$tdate','$chequeno', '$payeename','$tamount', '$tclass','$keyb','$payeename')");
        echo "<font color='green'>Data added successfully.";
        echo "<br/><a href='index.php'>View Result</a>";
            
    }elseif ($keyb=="1" && $keyc =="1") {
        $result = mysqli_query($mysqli, "INSERT INTO cashbook(tdate, originator, cr_amount, tclass, pmode, payer) VALUES('$tdate','$suppliername','$tamount','$tclass','$keyb','$payeename')");
        echo "<font color='green'>Data added successfully.";
        echo "<br/><a href='index.php'>View Result</a>";
    }else {
        echo "error,,";
    }
    ?>
    </body>

</html>

我的问题是,插入数据的唯一时间是 $keyb=='2' 和 $keyc=='2' (这是条件之一)。 但是,对于其他 3 个条件,即使满足这些条件,也不会插入任何内容。

请帮帮我。

【问题讨论】:

  • 请格式化您的代码并使用正确的缩进。
  • 你的
  • 到目前为止,您为调试代码做了哪些工作?你检查$keyb$keyc 的值了吗?
  • 是的,我做到了。 $keyb 和 $keyc 输出预期值。但脚本没有按预期处理它

标签: php jquery html mysql


【解决方案1】:

这并不是真正的解决方案,而是一种找出问题所在的方法:

确保您获得正确的价值观

将不同的 keyb (pmode) 和 keyc (desig) 值发送到 PHP 脚本,然后在脚本的最顶部执行 var_dump($_REQUEST);exit; 以查看您得到的结果。你得到了你期望的值吗?

确保 SQL 查询有效

对于每个 SQL 查询(mysql_query() 调用),请确保您发现任何错误。而不是像你正在做的那样调用它:

elseif ($keyb=="1" && $keyc =="2"){
    $result = mysqli_query($mysqli, "INSERT INTO ...");
    echo "<font color='green'>Data added successfully.";
    echo "<br/><a href='index.php'>View Result</a>";
}

添加if() 以捕获任何错误:

elseif ($keyb=="1" && $keyc =="2"){
    if(!$result = mysql_query($mysql, "INSERT..."){
        die('Invalid query: ' . mysql_error());
    }
    echo "<font color='green'>Data added successfully.";
    echo "<br/><a href='index.php'>View Result</a>";
}

简化

最后,这更像是一个风格说明,我可能会重新构建你的结构,以减少那么多 elseif() 部分。也许有它,以便您根据值格式化查询 string,然后在代码中触发 SQL 查询 once

【讨论】:

  • 亲爱的,我没有得到你最后一点标题为“简化”的最后一句话
  • @Clinton,OP 有 4 个elseif() 部分,他在其中不断重复 SQL 查询调用和两行回显,它们都是一样的。编程的一般规则是,你永远不应该把同样的东西写两次。写一次,参考多次。 OP 可以做的是构造他的代码,使elseif()s 只与实际查询本身有关,然后运行查询并输出回显语句一次
  • 我已经应用了您的第一点,即确保我得到正确的值,并输出预期值。您可以在示例中应用您的第二点为我设置路径吗?
  • 我更新了答案以包含一个更符合您的代码的示例。这有帮助吗?
  • 是的。谢谢@dearsina。实际上,我通过打破用 else 语句检查空字段的 if 语句解决了这个问题,然后开始一个新的 if 语句来执行我的 sql 查询
【解决方案2】:

首先检查您的查询:

$result = mysqli_query($mysqli, "INSERT...");

使用if() 捕获错误:

也使用此代码接收错误

if(!$result = mysql_query($mysql, "INSERT..."){

    die('Invalid query: ' . mysql_error());
}

【讨论】:

  • 你能解释一下你到底做了什么改变以及为什么你认为这可以解决问题吗?
  • 我不是要小气,但你只是复制粘贴我的答案吗?
猜你喜欢
  • 2015-12-30
  • 1970-01-01
  • 2023-03-15
  • 2018-01-12
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
相关资源
最近更新 更多