【问题标题】:Trying to run a SELECT sql query based on the dropdown list result. mySQL php尝试根据下拉列表结果运行 SELECT sql 查询。我的SQL php
【发布时间】:2012-06-25 05:52:06
【问题描述】:

我已经有 3 年没有设计网站了,所以至少可以说我很生疏。我必须依靠 Dreamweaver CS5 来帮助我。 对……

我想要一个新闻页面,用户/客户将从下拉菜单中选择日期(1 月、2 月、3 月、4 月等)现在,我的 mySQL 数据库中有一个名为“新闻”的表这些日期引用了每一行。我已经为日期设置了一个动态列表(下拉列表)。

我想要客户从下拉列表中选择日期,并将结果显示在下面的记录集中。我假设 SQL 查询需要按照以下方式编写:

选择日期、主题、消息 来自新闻 WHERE 日期 = $ XXXXXDROPDOWNLIST XXX $

如您所见,我制作了最后一行,因为我不太了解它应该如何运作。我认为下拉列表需要采用 POST 的形式,结果表需要采用 GET 的形式。

谁能比我更有技术性,请赐教我的困境?

谢谢,罗伯。

代码

mysql_select_db($database_rcc, $rcc);
$query_dropdowndate = "SELECT DATE_FORMAT(date, '%M %Y') AS FORMATTEDDATE FROM news GROUP BY FORMATTEDDATE ORDER BY Date DESC  ";
$dropdowndate = mysql_query($query_dropdowndate, $rcc) or die(mysql_error());
$row_dropdowndate = mysql_fetch_assoc($dropdowndate);
$totalRows_dropdowndate = mysql_num_rows($dropdowndate);

mysql_select_db($database_rcc, $rcc);
$query_newsitems = "SELECT `Date`, Subject, Message FROM news WHERE date = $_POST['dropdowndate']";
$newsitems = mysql_query($query_newsitems, $rcc) or die(mysql_error());
$row_newsitems = mysql_fetch_assoc($newsitems);
$totalRows_newsitems = mysql_num_rows($newsitems);
?>



<form id="choosedate" name="choosedate" method="post" action="#">
  <label for="dropdowndate"></label>
  <select name="dropdowndate" id="dropdowndate">
    <?php
do {  
?>
    <option value="<?php echo $row_dropdowndate['FORMATTEDDATE']?>"<?php if (!(strcmp($row_dropdowndate['FORMATTEDDATE'], $row_dropdowndate['FORMATTEDDATE']))) {echo "selected=\"selected\"";} ?>><?php echo $row_dropdowndate['FORMATTEDDATE']?></option>
    <?php
} while ($row_dropdowndate = mysql_fetch_assoc($dropdowndate));
  $rows = mysql_num_rows($dropdowndate);
  if($rows > 0) {
      mysql_data_seek($dropdowndate, 0);
      $row_dropdowndate = mysql_fetch_assoc($dropdowndate);
  }
?>
  </select>
  <input type="submit" name="submit" id="submit" value="Submit" />
</form>
<p>&nbsp;</p>
<form id="form1" name="form1" method="get" action="">
  <table border="0" cellpadding="5" cellspacing="2">
    <tr>
      <td>Date</td>
      <td>Subject</td>
      <td>Message</td>
    </tr>
    <?php do { ?>
      <tr>
        <td><?php echo $row_newsitems['Date']; ?></td>
        <td><?php echo $row_newsitems['Subject']; ?></td>
        <td><?php echo $row_newsitems['Message']; ?></td>
      </tr>
      <?php } while ($row_newsitems = mysql_fetch_assoc($newsitems)); ?>

其中一些可能看起来很奇怪,所以让我解释一下...动态列表(下拉列表)称为“dropdowndate”,表单称为“choosedate”。有一个名为“submit”的按钮可以提交表单。 FORMATTEDDATE 是记录集的名称,它为下拉菜单提供动态列表。

我希望在用户 POST 时将动态列表中的值插入到我提到的查询中... SELECT Date, Subject, Message FROM news WHERE date = $_POST['dropdowndate']"; (这个位可能是错误的)

罗伯

【问题讨论】:

  • 请输入代码。最好使用 $_POST['fieldname']
  • 不要忘记验证输入或对其进行转义,请参阅 mysqli_real_escape_string()

标签: php mysql select drop-down-menu recordset


【解决方案1】:
SELECT date, subject, message FROM news WHERE date = $_POST['fieldvalue']

$_POST 变量包含表单发布时发送的所有数据。字段值应与您为选择字段指定的名称相对应。

这可能会被注入,因此请确保您使用合理的安全措施。

如果您希望在不刷新的情况下获取数据,则需要使用 AJAX,以下解释得很漂亮http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/,如果您需要更多信息,请询问。

【讨论】:

  • @RobHatton 我刚读过它,我不确定的部分是,您是否尝试在不刷新页面(AJAX)的情况下执行此操作,或者这无关紧要,您只想将表单刷新为普通的。如果你告诉我,我可以提供更多帮助:)
【解决方案2】:

HTML 下拉菜单示例

<form method="POST">
<select name="animal">
    <option value="dog">Dog</option>
    <option value="cat">Cat</option>
</select>
</form>

一个如何用php捕获信息的例子

<?php
    echo $_POST['animal'];
?>

【讨论】:

  • 谢谢,如何在同一页面上的 SQL SELECT 查询中使用此 POST?
  • @RobHatton: $sql = mysql_query('SELECT * FROM pets WHERE type='.$POST['animal']); 你可以根据自己的目的调整它,不要忘记接受答案,不管它是什么。
  • @RobHatton,上面有一个sintax错误,正确的句子是$sql = mysql_query("SELECT * FROM pets WHERE type = '$_POST['animal']'");,假设“animal”是你数据库中的字符串字段。不要在查询中直接使用$_POST['animal'],这一点非常重要,因为SQL Injection attacks 很容易受到攻击。
【解决方案3】:

您希望在用户从下拉列表中选择某些内容时加载记录,还是希望它与页面一起加载?

在第一种情况下,您需要使用 Ajax,将记录带到后台。

在另一种情况下,您可以像在页面加载时发布的那样做一个声明。

【讨论】:

  • 感谢您到目前为止的输入,感谢您的帮助 - 尽管我似乎正在为这个 php 页面做一顿正确的狗晚餐!
【解决方案4】:
$select = $_POST['dropdowndate'];
$sql = "SELECT * FROM table WHERE attribute = '$select'" or die (mysql_error());

【讨论】:

  • 我可以在这里提问吗?这对我来说真的很紧急:'(
猜你喜欢
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2013-04-30
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 2019-11-28
相关资源
最近更新 更多