PHP- Fetch from database and store in drop down menu html

45,229

Solution 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>";
?>

From the looks of things, you're missing an opening option tag, so it's just outputting "Dropdown" as a line of text.

Edit

Just to be completely transparent, because I did not have connect.php, I had to add my own DB connections. My whole page looked thusly:

<?
//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>

Solution 2

First off, you are missing an option opening tag, as correctly mentioned by stslavik. But this is not causing the issue here as it seems (it's auto-corrected by the browser - in my tests atleast).

Secondly, this wont work (problem causer):

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

You should use

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

or, as I always prefer single quotes to enclose echo or print output strings:

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

Third alternative (complex syntax: What does ${ } mean in PHP syntax?)

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

Solution 3

assuming you get data from the database try this

echo "<option value={$r['Cnum']}>{$r['CName']}</option>"; 
Share:
45,229
Sean Cleveland
Author by

Sean Cleveland

Updated on August 21, 2022

Comments

  • Sean Cleveland
    Sean Cleveland over 1 year

    I can't seem to get the following code to make a dropdown menu that contains data from a mysql database. The "include('connect.php');" connects to the mysql database and I know it works on separate pages. Any suggestions?

    Below is the entire code. 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>