Кажется, я не могу получить следующий код, чтобы создать раскрывающееся меню, содержащее данные из базы данных mysql. «Include (« connect.php »); подключается к базе данных mysql, и я знаю, что она работает на отдельных страницах. Какие-либо предложения?
Ниже приведен весь код. listCustomer
<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>
<?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>"; ?>
в<?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>
Во-первых, вам не хватает тега открытия опции, который правильно упоминается stslavik. Но это не вызывает проблемы здесь, как кажется (она автоматически исправлена браузером – по моим испытаниям по крайней мере).
Во-вторых, эта привычная работа (проблема причин):
echo "<option value=$r["Cnum"]>$r["CName"]</option>";
Вы должны использовать
echo "<option value=".$r["Cnum"].">".$r["CName"]."</option>";
или, поскольку я всегда предпочитаю одиночные кавычки для включения строк эха или печати:
echo '<option value='.$r['Cnum'].'>'.$r['CName'].'</option>';
Третья альтернатива (сложный синтаксис: что означает $ {} в синтаксисе PHP? )
echo "<option value={$r["Cnum"]}>{$r["CName"]}</option>";
предполагая, что вы получаете данные из базы данных, попробуйте это
echo "<option value={$r['Cnum']}>{$r['CName']}</option>";
пытаться,
echo "<option value=' . $r['Cnum'] . '>' . $r['CName'] . '</option>";
вместо
echo "<option value=$r[Cnum]>$r[CName]</option>";