【问题标题】:Dropbox not returning values [closed]Dropbox不返回值[关闭]
【发布时间】:2015-04-16 09:28:59
【问题描述】:

此程序中的获取数据方法似乎不正确,您能看到是什么导致下拉框在用户与之交互时填充为空吗?

更新 get_data 类确实有效,感谢反馈

 <?php
    require("db.php");
    include("functions.php");
    if(isset($_POST['submit']))
    {
      $Date = date('Y-m-d H:i:s');
      $FirstName = $mysqli->real_escape_string($_POST['FirstName']);
      $LastName = $mysqli->real_escape_string($_POST['LastName']);
      $Rating = $mysqli->real_escape_string($_POST['Rating']);
      $Comment = $mysqli->real_escape_string($_POST['Comment']);

      $sql = "INSERT INTO guest(GuestID, FirstName, LastName, PostcodeFK, Email, Date, Rating,Comment)"
       ." VALUES ('', '$FirstName', '$LastName', '$Postcode', '$Email', '$Date', '$Rating', '$Comment')";

    if($mysqli->query($sql)==TRUE)
    {
      echo "<script>alert('Record Added.'); location.href='customers.html'</script>";
    }else{
     echo "<script>alert('Error'); location.href='#'</script>"; 
    }
    function get_data($mysqli)
    {

       $sql="SELECT `MealOption` FROM menu";
       $result=$mysqli->query($sql);
           while ($row=$result->fetch_assoc())
          {
            echo "<option value='". $row['MealOption'] . "'>". $row['MealOption'] ."</option>";
          }

    }
    }

    ?>
    <html>

    <body>
    <form action="" method="post">
    First Name: <input type="text" name="FirstName" require/><br>
    Last Name: <input type="text" name="LastName" require/><br>
    Postcode: <input type="number" name="Postcode" require/><br>
    Email: <input type="email" name="Email" require/><br>
    <button class="btn" onclick="get_data(Meal);">Add</button>
    <label for="Meal">Meal:</label>
    <select name="Meal">
    <?php
     //echo get_data($mysqli);   
    ?>
    </select><br>
    Rating: <input type="number" name ="Rating" min="1" max="5" require/><br>
    Comment: <input type="text" name ="Comment"><br>
    <input type="submit" name="submit">
    </form>
    </body>
    </html>

【问题讨论】:

  • “不起作用”是什么意思?代码运行时会发生什么?
  • @Cristik 有一个下拉框,它应该从 get_data 函数中填充,这就是它的样子,其他一切都很好,只是菜单框gyazo.com/366c81a8652e856d31bf9d4d7c407077
  • “付钱检查它,他说它应该可以工作” 所以你问其他人而不是检查它?你从别人那里拿钱让别人检查?
  • 你的意思是你付钱来检查它?
  • 包含function get_data(obj)的Javascript在哪里?

标签: php html sql


【解决方案1】:

您的&lt;button class="btn" onclick="get_data(Meal);"&gt;Add&lt;/button&gt; 与函数get_data(Meal) 无法调用php 函数。

因此,您必须创建一个 JavaScript 函数 get_data(),例如通过 ajax 请求信息。

你应该从那个人那里拿回你的钱。

【讨论】:

  • 想到“被骗”这个词
  • +1 表示最后一句话。总的来说,但如果该人必须检查该代码并且必须实际说出什么是不好的做法,告诉 OP 他应该做些什么不同等,他肯定不知道自己在做什么,他确实是一个 骗子.
【解决方案2】:

您需要将 get_data 函数移出 if 语句。缩进可以帮助你。

if(isset($_POST['submit']))
{
  $Date = date('Y-m-d H:i:s');
  $FirstName = $mysqli->real_escape_string($_POST['FirstName']);
  $LastName = $mysqli->real_escape_string($_POST['LastName']);
  $Rating = $mysqli->real_escape_string($_POST['Rating']);
  $Comment = $mysqli->real_escape_string($_POST['Comment']);

  $sql = "INSERT INTO guest(GuestID, FirstName, LastName, PostcodeFK, Email, Date, Rating,Comment)"
   ." VALUES ('', '$FirstName', '$LastName', '$Postcode', '$Email', '$Date', '$Rating', '$Comment')";

   if($mysqli->query($sql)==TRUE)
   {
       echo "<script>alert('Record Added.');location.href='customers.html'</script>";
   } else {
       echo "<script>alert('Error'); location.href='#'</script>"; 
   }
}

function get_data($mysqli)
{

   $sql="SELECT `MealOption` FROM menu";
   $result=$mysqli->query($sql);
       while ($row=$result->fetch_assoc())
      {
        echo "<option value='". $row['MealOption'] . "'>". $row['MealOption'] ."</option>";
      }

}

对于 html 的使用,你需要在使用 php 函数之前添加 php 标签。

 <?php get_data($mysqli); ?>

【讨论】:

    【解决方案3】:

    您的代码对 XSS 攻击并不安全 - 这可能会导致问题,例如如果您的膳食选项包含撇号。

    尝试更改此行:

    echo "<option value='". $row['MealOption'] . "'>". $row['MealOption'] ."</option>";
    

    到这一行:

    echo "<option value='". htmlspecialchars($row['MealOption'],ENT_QUOTES) . "'>". htmlspecialchars($row['MealOption']) ."</option>";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 2019-09-14
      • 2014-06-27
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      相关资源
      最近更新 更多