【问题标题】:php mysql displaying results as drop down listphp mysql 将结果显示为下拉列表
【发布时间】:2012-04-21 03:55:57
【问题描述】:

我正在努力尝试从数据库中获取结果以显示为下拉列表。

基本上我正在获取外键、它的唯一代码和它的名称/标题。我需要将其显示为下拉列表,以便正确输入到新表中

        $sql = "SELECT quali_code, title FROM `qualifications`  ";
    $result = mysql_query($sql, $this->connection);
    $result_array = array();
    while($r=mysql_fetch_array($result))
    {
    $result_array[$r['quali_code']][] = $r;
    }
    return $result_array;

因此,我需要在 HTMl/PHP 中创建一个下拉列表以从中选择标题,但显然是存储值。有点像<list name=array[title] value=array[code] >

目前我已经被困在一个适合我的数组中返回我的 SQl 结果,并且不知道如何使用正确的数组结果填充下拉列表。

上面的示例代码说明了我如何获取 sql 结果以及我的数组的外观:

Array ( [AAT] => Array ( [0] => Array ( [0] => AAT [quali_code] => AAT [1] => AAT qualification [title] => AAT qualification ) ) [A_lev] => Array ( [0] => Array ( [0] => A_lev [quali_code] => A_lev [1] => A levels [title] => A levels ) ) [HNC] => Array ( [0] => Array ( [0] => HNC [quali_code] => HNC [1] => Fdsc/HNC [title] => Fdsc/HNC ) ) [Lan_ISLT] => Array ( [0] => Array ( [0] => Lan_ISLT [quali_code] => Lan_ISLT [1] => EISLT Qualification [title] => EISLT Qualification ) ) [Lan_qua] => Array ( [0] => Array ( [0] => Lan_qua [quali_code] => Lan_qua [1] => Language qualification [title] => Language qualification ) ) [Nat_Dip] => Array ( [0] => Array ( [0] => Nat_Dip [quali_code] => Nat_Dip [1] => National Diploma [title] => National Diploma ) ) ) 

请记住,我对 PHP 完全陌生。任何帮助,将不胜感激。但是这个数组对我来说看起来没用,并且不确定如何填充列表。我获取结果/数组的文件不是我将数组填充到列表中的位置。

非常感谢您对此事的任何提示

【问题讨论】:

  • 请停止使用古老的mysql_* 函数编写新代码。它们不再维护,社区已经开始 deprecation process 。相反,您应该了解prepared statements 并使用PDOMySQLi。如果你想学习,here 是一个相当不错的 PDO 相关教程。
  • 谢谢,一旦我完成了这个项目,我会仔细研究这个。我承受着巨大的时间压力。例如,这句话会是什么样子?

标签: php mysql html


【解决方案1】:

假设您要做的就是将这些行回显到下拉列表中:

$sql = "SELECT quali_code, title FROM `qualifications` ORDER BY title ";
$result = mysql_query($sql, $this->connection);
while($r=mysql_fetch_array($result))
{
$quali_code = $r['quali_code'];
$result_array[$quali_code][] = $r['title'];
}


echo "<select name='x'>";
foreach($result_array as $q_code => $value)
{
    foreach($value as $title) {
    echo "<option value='" . $q_code . "'>" . $title . "</option>";
    }
}
echo "</select>";

【讨论】:

  • 知道如何在将维度数组打印到列表之前返回它们吗?我与数据库连接有关的功能位于不同的文件中,而不是我将使用它的文件!
  • 所以我首先需要创建一个我可以使用的数组,将它传递给不同的文件,然后将它们作为列表打印出来
  • 除了在查看它时,我很难理解要打印它的循环。因为循环中的 q_code、value 和 title 变量是组成的,但它仍然可以正确打印项目。我猜第一个循环表示数组的第一部分,第二个循环是数组的第二部分!?
  • 是的,这些变量名称只是指定引用指针当前所在的项目。 foreach($array as $key => $value)
【解决方案2】:

自从我使用 PHP 以来已经有一段时间了,但是,我记得这是我从 MySQL 查询中打印列的方式。在 while 循环中使用 $r["columnName"]。可能存在语义错误,但这应该会给你一个很好的主意。

 echo "<select>";
 while($r = mysql_fetch_array($result))
 {
    echo "<option value=\".$r['quali_code'].\">.$r['title'].</option>";
 }
 echo "</select>";

我使用http://www.tizag.com/phpT/ 来自学 PHP。他们有很多很棒的教程。这是关于 Tizag 的 MySQL/PHP 教程的链接:http://www.tizag.com/mysqlTutorial/

编码愉快。

【讨论】:

  • 感谢答案和链接!非常感谢,我会不时浏览该网站!
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 2019-08-25
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多