【问题标题】:Insert Drop Down Menu Item in a database在数据库中插入下拉菜单项
【发布时间】:2020-03-27 15:49:51
【问题描述】:

我对 HTML 和 PHP 非常陌生。我正在尝试创建一个下拉菜单以将选择插入到我的数据库中。我已经尝试了几个小时来让它发挥作用。我有一个客户需要填写的表格进行评估,他们只能从数据库中已经存在的工作中进行选择。

评估表有 JobNo、evalDate、raterName、rating 和 comment(可选)。 JobNo 在jobs 表中作为jobNo 找到(jobs 表中的j 小写,评估中的大写)

如果您可以让它从数据库中填充数据作为下拉框选项,则可以获得奖励积分。我也一直在尝试。

请告诉我我错过了什么或做错了什么?

<!DOCTYPE html>
<html>
<body>
 <body style="background-color:#FAEBD7;">
<title>CTS Employment Agency | Evaluation</title>  <!-- title for tab on website -->

<center><h1 style="background-color: #FAEBD7;">CTS Employment Agency</h1></center>
<center><p>123 Anywhere St.<br>Huntsville, AL 35649<br>P: (256)555-5555<br>Fax:(256)554-5554<br>E-mail: questions@ctsemployment.com</p></center>
<center><h3>Evaluation Form</h3></center>

<center><p>Please take a moment to fill out the evaluation form concerning the worker that was provided to you.<br>
Please leave a rating from 1(unsatisfactory) to 5(excellent) for the worker along with a comment box for additional information.
<br> If you have any questions, please feel free to send us an email or call us!</p></center>

<form action="php_formStore.php" method="$Post_"> <!-- beginning of form -->
 <br>
 <center>

Worker First Name: <input type="text" name="wFName">

Middle: <input type="text" name="wMinit">

Last: <input type="Text" name="wLName">

SSN <input type="text" name="snn" placeholder="000-00-0000">
<br><br>


 Job No: 
<select name="JobNo">
  <option value="46">46</option>
  <option value="47">48</option>
  <option value="48">48</option>
</select>

//<input type="text" name="JobNo">  //this works fine, why doesn't the select box work?


 Worker's Job Title: <input type="text" name="title">

Rating: <input type="text" name="rating" placeholder="Rate from 1-5">
<br><br>    

Evaluator's Name: <input type "text" name="raterName">

Evaluation Date:   <input type="date" name="evalDate">
     <br><br>  

 <!-- comment box -->
<textarea name="comment"  rows="8" cols="60"> 
(Optional)
Leave any additional comments here. 
</textarea><br>

<input type="submit" value="Submit">  <!-- The submit buttom -->
<input type="reset">
</center>
</form>


</body>
<html>

这是 PHP 文件

<?php
$servername = "localhost";

$username = "root";

$password = "";

$db="cts employment agency";  //Database Name 
$con=mysqli_connect($servername, $username, $password, $db);

//check connection
if(mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

       $Job_No = $_GET['JobNo'];
       $raterName = $_GET['raterName'];
       $evalDate = $_GET['evalDate'];
       $rating = $_GET['rating'];
       $comment = $_GET['comment'];

       echo "<br><br><br><br>";
       echo "<center><h2>Thank you for taking the time to fill out this evaluation<br>";
       echo "Your feedback helps us to provide you with the highest quality employees<br>";

       echo "If you have any questions, please e-mail us at: questions@ctsemployment.com or call: (256)555-5555</h2></center>";

      mysqli_query($con, "INSERT INTO evaluation (JobNo, evalDate, raterName, rating, comment)
      VALUES ('$Job_No', '$evalDate', '$raterName', '$rating', '$comment')");

      mysqli_close($con);
?>



  [1]: https://i.stack.imgur.com/2mJGC.png

【问题讨论】:

    标签: php html mysql forms insert


    【解决方案1】:
    
           $Job_No= "";
        foreach ($_POST['JobNo'] as $select) {
            $Job_No = $select;
        };
           $raterName = $_POST['raterName'];
           $evalDate = $_POST['evalDate'];
           $rating = $_POST['rating'];
           $comment = $_POST['comment'];
    
           echo "<br><br><br><br>";
           echo "<center><h2>Thank you for taking the time to fill out this evaluation<br>";
           echo "Your feedback helps us to provide you with the highest quality employees<br>";
    
           echo "If you have any questions, please e-mail us at: questions@ctsemployment.com or call: (256)555-5555</h2></center>";
    
          mysqli_query($con, "INSERT INTO evaluation (JobNo, evalDate, raterName, rating, comment)
          VALUES ('$Job_No', '$evalDate', '$raterName', '$rating', '$comment')");
    
          mysqli_close($con);
    

    【讨论】:

    • 这是 Paulo44 的去向吗?
    【解决方案2】:

    首先将[]添加到您的名字中

    Job No: 
    <select name="JobNo[]">
      <option value="46">46</option>
      <option value="47">48</option>
      <option value="48">48</option>
    </select>
    

    然后到你的 PHP 文件

    $Job_No= "";
        foreach ($_POST['JobNo'] as $select) {
            $Job_No = $select;
        }
    

    要从数据库中填充数据作为下拉框选项,此链接可能会对您有所帮助

    Adding options to select with javascript

    How do I pass variables and data from PHP to JavaScript?

    【讨论】:

    • 我不能把它放在正确的部分。现在我收到一条错误消息,提示警告:第 18 行 C:\xampp\htdocs\php_formStore.php 中为 foreach() 提供的参数无效
    【解决方案3】:

    在您的 php 脚本中,您尝试使用 $_GET 访问 $_POST 变量。

    如果您想按照表单上的建议使用帖子,请将声明更改为:

     <form action="php_formStore.php" method="post"> <!-- beginning of form -->
    

    然后在您的 php 脚本中,将您的 $_GET 变量更改为 $_POST,如下所示:

       $Job_No = $_POST['JobNo'];
       $raterName = $_POST['raterName'];
       $evalDate = $_POST['evalDate'];
       $rating = $_POST['rating'];
       $comment = $_POST['comment'];
    

    您的代码也很容易受到 SQL 注入的威胁。您应该研究使用准备好的语句来抵消这种情况。这方面的指南可以在下面看到:

    https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

    这对于保持数据完整性和安全性免受不必要的数据访问至关重要。

    【讨论】:

    • 好的,谢谢,我会试试的。我知道代码是有风险的,但它用于一个永远不会发布的学校项目。刚刚在 root 上编写和测试。
    • 使用准备好的语句会给您留下更好的印象。实现和学习它的最小努力在 PHP 开发中至关重要
    • 我将所有内容更改为发布并刷新页面以使用一些测试值重试,现在我收到错误:注意:未定义索引:C:\xampp\htdocs\php_formStore.php 中的 JobNo第 17 行注意:未定义索引:第 18 行 C:\xampp\htdocs\php_formStore.php 中的 raterName 注意:第 19 行未定义索引:C:\xampp\htdocs\php_formStore.php 中的 evalDate 注意:未定义索引:C 中的评级:\xampp\htdocs\php_formStore.php 第 20 行 注意:未定义索引:C:\xampp\htdocs\php_formStore.php 第 21 行注释
    • 好的,这就是我们在课堂上学到的所有内容就是 $_GET
    • 我猜您在提交表单时将这些字段留空?如果未填写,则不会作为表格的一部分发送。在尝试使用它们之前,您需要检查它们是否使用 isset 或 !empty 设置
    猜你喜欢
    • 2020-09-04
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多