【问题标题】:Insert values into database from form with drop downs使用下拉菜单将值插入数据库
【发布时间】:2018-06-24 12:32:40
【问题描述】:

我正在尝试将表单中用户输入的值插入到我的数据库中。

我有 2 个用于验血的下拉列表,然后是类别。例如,用户首先选择下拉 1“甲状腺”(类别),然后下拉 2 显示“FT4、FT3 TSH”(血液测试)等,然后用户进行选择。

然后他们输入日期和数值。

在我的插入中,我需要将 user_id(使用会话变量登录后建立,bloodtest_id(从下拉 2)、日期、值插入到我的数据库中。

我无法让我的 SQL 查询适合插入,因此需要一些帮助。 下拉 2(验血)在一个单独的 php 文件中,我不确定如何告诉 SQL 查询如何找到要使用的值?

addBlood.php 如下。这是表单所在的页面

  <?php
session_start();

include('dbConnect.php');

$queryStr=("SELECT * FROM category");
    $dbParams=array();
  // now send the query
  $results  = $db->prepare($queryStr);
  $results->execute($dbParams);

?>
<html>
<head>
<TITLE>Category and Test</TITLE>
<head>
<!-- Help for code to create dynamic drop downs -->
<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
<script>
function getTest(val) {
    $.ajax({
    type: "POST",
    url: "get_test.php",
    data:'category_id='+val,
    success: function(data){
        $("#test-list").html(data);
    }
    });
}

function selectCategory(val) {
$("#search-box").val(val);
$("#suggesstion-box").hide();
}
</script>
</head>
<body>
<div class="frmDronpDown">
<div class="row">
<label>Category:</label><br/>
<select name="category" id="category-list" class="demoInputBox" onChange="getTest(this.value);">
<option value="">Select Category</option>
<?php
foreach($results as $category) {
?>
<option value="<?php echo $category["category_id"]; ?>"><?php echo $category["category_name"]; ?></option>
<?php
}
?>
</select>
</div>
<div class="row">
<form action="addBlood.php" method="post">
<label>Test:</label><br/>
<select name="test" id="test-list" class="demoInputBox">
<option value="">Select Test</option>
</select>
</div>
</div>

<label>Result:</label><input class="input" name="result" type="text"><br>
<label>Date:</label><input class="input" name="date" type="date"><br>
<input class="submit" name="submit" type="submit" value="Submit">
</form>

<?php

if(isset($_POST['submit'])){
    //$currentBloodTest=$test["bloodtest_id"];
    $currentUser=$_SESSION["currentUserID"];

    $value = $_POST['result'];
    $date = $_POST['date'];

        //$query = $db->prepare("INSERT INTO results (user_id, bloodtest_id,date,value)values ($currentUser,$currentBloodTest, $date , $value)");
        $dbParams = array();
        $query->execute($dbParams);
    echo "<br><br><span>Data Inserted successfully...!!</span>";


}

?>

</body>
</html>

下面是获取所有血液测试的getTest.php。

  <?php
include('dbConnect.php');


if(!empty($_POST["category_id"])) {
    $queryStr=("SELECT * FROM bloodtests WHERE category_id = '" . $_POST["category_id"] . "'");
    $dbParams=array();
  // now send the query
  $results  = $db->prepare($queryStr);
  $results->execute($dbParams);

?>
    <option value="">Select Test</option>
<?php
    foreach($results as $test) {
?>
    <option value="<?php echo $test["bloodtest_id"]; ?>"><?php echo $test["test_name"]; ?></option>
<?php
    }
}
?>

【问题讨论】:

  • 你的查询抛出了什么错误??
  • 我看不到任何错误。如果我输入虚拟值并点击 submit ,页面会刷新但没有任何内容插入数据库

标签: php forms pdo drop-down-menu


【解决方案1】:

如果您在这方面遇到了一些麻烦,并且不确定如何继续:

//$query = $db->prepare("INSERT INTO results (user_id, bloodtest_id,date,value)
//                       VALUES ($currentUser,$currentBloodTest, $date , $value)");
$dbParams = array();
$query->execute($dbParams);

那么这可能会帮助你(你非常接近):

$currentUser      = $_SESSION["currentUserID"];
$currentBloodTest = $_POST['test']; // name of the 'select' element
$value            = $_POST['result'];
$date             = $_POST['date'];

$query = $db->prepare("INSERT INTO results (user_id, bloodtest_id, date, value)
                       VALUES (?, ?, ?, ?)");
$query->execute( array($currentUser, $currentBloodTest, $date, $value) );

此外,这部分您在 ajax 查找中:

$queryStr=("SELECT * FROM bloodtests WHERE category_id = '" . $_POST["category_id"] . "'");
$dbParams=array();
// now send the query
$results  = $db->prepare($queryStr);
$results->execute($dbParams);

真的应该写成:

$queryStr = "SELECT * FROM bloodtests WHERE category_id = ?";
$results  = $db->prepare($queryStr);
$results->execute( array($_POST["category_id"]) );

【讨论】:

  • 没问题,请务必同时修复您的getTest.php(我已添加到答案中)。
猜你喜欢
  • 2020-03-27
  • 1970-01-01
  • 2018-11-12
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多