【问题标题】:PHP- Fetch from database and store in drop down menu htmlPHP- 从数据库中获取并存储在下拉菜单 html 中
【发布时间】:2013-05-18 02:10:37
【问题描述】:

我似乎无法获得以下代码来制作包含来自 mysql 数据库的数据的下拉菜单。 “包括('connect.php');”连接到 mysql 数据库,我知道它可以在单独的页面上运行。有什么建议?

下面是整个代码。 列出客户

 <BODY>
 <H1>Find Customer's Albums Page</H1>
 From a dropdown list of customers, a user should be able to pick a customer and see a list of     albums (all fields in the CD table) purchased by that customer.
 <HR>
 <FORM ACTION="listCustomer.php" METHOD="POST"/>
 Customer:
 <select name="mydropdownCust">
 <option value="101">101</option>
 <option value="102">102</option>
 <option value="103">103</option>
 <option value="104">104</option>
 <option value="105">105</option>
 <option value="106">106</option>
 <option value="107">107</option>
 <option value="108">108</option>
 <option value="109">109</option>
 <option value="110">110</option>
 </select>
 <BR>

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

 $query = "SELECT Cnum, CName FROM Customer";
 $result = mysql_query ($query);
 echo "<select name=dropdown value=''>Dropdown</option>";
 while($r = mysql_fetch_array($result))
 {
 echo "<option value=$r["Cnum"]>$r["CName"]</option>"; 
 }
 echo "</select>";
 ?>

 <BR>
 <INPUT TYPE="SUBMIT" Value="Submit"/>
 </FORM>

 <FORM ACTION="listMenu.html" METHOD="POST"/>
 <INPUT TYPE="SUBMIT" Value="Main Menu"/>
 </FORM>
 </BODY>
 </HTML>

【问题讨论】:

  • 你能分享一下你得到了什么结果吗?此外,我认为
  • 那什么不起作用?
  • 这个效果更好吗? {$r['Cnum']}
  • 它显示这个“下拉菜单”; while($r = mysql_fetch_array($result)){ echo ""; } 回声“”; ?>”在网站上。
  • 我不认为变量语法是你的问题(只是用你构建回声的方式在本地测试了回声,在循环中尝试 $r 上的 var_dump

标签: php html mysql database drop-down-menu


【解决方案1】:
<?php
include('connect.php');

$query = "SELECT Cnum, CName FROM Customer";
$result = mysql_query ($query);
echo "<select name='dropdown' value=''><option>Dropdown</option>";
while($r = mysql_fetch_array($result)) {
  echo "<option value=".$r['Cnum'].">".$r['CName']."</option>"; 
}
echo "</select>";
?>

从外观上看,您缺少一个开始选项标记,因此它只是将“Dropdown”作为一行文本输出。

编辑

为了完全透明,因为我没有connect.php,我必须添加自己的数据库连接。我的整个页面看起来是这样的:

<?
//Adding to display errors.
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>
<HTML>
<HEAD>
</HEAD>
<BODY>
 <H1>Find Customer's Albums Page</H1>
 From a dropdown list of customers, a user should be able to pick a customer and see a list of albums (all fields in the CD table) purchased by that customer.
 <HR>
 <FORM ACTION="listCustomer.php" METHOD="POST"/>
 Customer:
 <select name="mydropdownCust">
 <option value="101">101</option>
 <option value="102">102</option>
 <option value="103">103</option>
 <option value="104">104</option>
 <option value="105">105</option>
 <option value="106">106</option>
 <option value="107">107</option>
 <option value="108">108</option>
 <option value="109">109</option>
 <option value="110">110</option>
 </select>
 <BR />
 <?php
  // BEGIN ADDED CONNECTION HACKY GARBAGE
  $con=mysql_connect("localhost","root","root");
  // Check connection
  if (mysqli_connect_errno($con)) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  $selected = mysql_select_db("sample",$con) 
    or die("Could not select examples");
  // END ADDED CONNECTION HACKY GARBAGE

  $query = "SELECT Cnum, CName FROM Customer";
  $result = mysql_query ($query);
  echo "<select name='dropdown' value=''><option>Dropdown</option>";
  while($r = mysql_fetch_array($result)) {
    echo "<option value=".$r['Cnum'].">".$r['CName']."</option>"; 
  }
  echo "</select>";
 ?>

 <BR />
 <INPUT TYPE="SUBMIT" Value="Submit"/>
 </FORM>

<FORM ACTION="listMenu.html" METHOD="POST"/>
<INPUT TYPE="SUBMIT" Value="Main Menu"/>
</FORM>
</BODY>
</HTML>

【讨论】:

  • 名称属性中的 Dropbox 周围也缺少引号。至少为了一致性。
  • 我无法让它工作。这是它的样子。 imageshack.us/photo/my-images/441/10517841.jpg
  • ... 真的吗?我创建了一个 2 行表,有 2 列 Cnum(一个 int)和 CName(一个 varchar,20 个字符长),上面的(有一些更改,因为我没有你的 connect.php)将信息拉到一个下拉列表中下。你上传的这个是打印的吗?你清除了缓存?
  • 会不会是我复制了很多代码而不是打出来的?
【解决方案2】:

首先,您缺少一个选项开始标记,正如 stslavik 正确提到的那样。但这并没有引起这里看起来的问题(它是由浏览器自动更正的 - 至少在我的测试中)。

其次,这不起作用(问题原因):

echo "<option value=$r["Cnum"]>$r["CName"]</option>"; 

你应该使用

echo "<option value=".$r["Cnum"].">".$r["CName"]."</option>"; 

或者,因为我总是喜欢用单引号括住 echo 或打印输出字符串:

echo '<option value='.$r['Cnum'].'>'.$r['CName'].'</option>';

第三种选择(复杂语法:What does ${ } mean in PHP syntax?

echo "<option value={$r["Cnum"]}>{$r["CName"]}</option>";

【讨论】:

    【解决方案3】:

    假设你从数据库中获取数据试试这个

    echo "<option value={$r['Cnum']}>{$r['CName']}</option>"; 
    

    【讨论】:

    • 你想在这里做什么?第一行与问题中的同一行相同 - 它过早地结束了字符串。
    • 抱歉代码搞砸了我想说的是您需要使用 {} 来处理复杂的表达式
    • 你为什么喜欢这里的括号!?这只会将变量包装在 {} 字符串中。
    • @FrederikWordenskjold 你知道 php 你没看到他使用双引号所以而不是使用单引号 echo "&lt;option value=$r["Cnum"]"; 这将是错误的,因为编译器会混淆 {} 大括号仅用于清晰度
    • 你是什么意思它不起作用哪部分不起作用我给你的代码完全没问题你甚至没有问你的问题@FrederikWordenskjold
    【解决方案4】:

    试试,

    echo "<option value=' . $r['Cnum'] . '>' . $r['CName'] . '</option>"; 
    

    而不是

    echo "<option value=$r[Cnum]>$r[CName]</option>";
    

    【讨论】:

    • 解析错误:语法错误,意外 '"',期待 T_STRING 或 T_VARIABLE 或 T_NUM_STRING 在...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 2021-02-01
    相关资源
    最近更新 更多