PHP - Database Form dropdown Undefined index



Im trying to create a form with drop down which is populated from database, when i select the value and i press submit i get an error as described below please i need some help.

require_once ('conn.php');
$sql = mysqli_query(db_connect(), "SELECT Title FROM $table WHERE NOT Status='Links_added' ORDER BY Title ASC");



<form method="post" action="pass.php" name="resources">

	Name: <select  name="title_name">
		echo "<option value=name1>" . "Select Title" . "</option>";
		while ($row = $sql->fetch_assoc()){
			echo "<option value='" .$row['Title'] ."'>" . $row['Title'] . "</option>";
	<input type="submit" name="submit" value="Submit">



    echo $_POST["title_name"];


array(0) { }
Notice: Undefined index: title_name in pass.php on line 3

When i add to pass.php this :

if (isset($_POST['submit'])) {

    echo $_POST["title_name"];

I dont get any response, why there is no data after i select and submit the form ?!


you have to check every variable for existence before using it. e.g. with isset, or empty, or the coalesce operator. var_dump it when you are not sure about what it contains.


i have done all those but there is no data in the $_POST


Did you try


to see what is actually arriving? (ETA, I see you did, sorry).

In any case, I don't understand this line:

echo "<option value=\"name2\">" . $row['Title'] . "</option>";

which surely means that the form will pass "name2" for every single option in the list?

Could there be anything in your included file that is upsetting the form somehow? Maybe move that include to outside the form definition?


I changed the code but still no success.


have a look at getallheaders()


What did you change it to? How does it look now?


You can look the question above, it is updated too.


What environment are you running in? I can't see anything in your code that would cause the problem, as long as there's nothing in your included file to unset the array. I did pick up on a problem with PHPStorm causing something similar.

The workaround in your pass.php was something like:

$postdata = file_get_contents("PHP://input");


If POST isn't getting sent might it be because the form is broken?

ie. Is the HTML for the form as it looks in view-source - not the PHP file - like you expect it to be and valid?


You are missing the quotes for the value which shouldn't even have a value for this part in the first place.


Is that a requirement? I thought that was a good thing, but not actually required unless the parameter value contains a space or some other character that might cause confusion.


I usually put attribute values inside quotation marks out of long habit. But going by the W3C HTML5 documentation:

Attributes can be specified in four different ways:
- Empty
- Unquoted
- Single-quoted
- Double-quoted


Same here, but as you confirmed, it's not a reason for the form to not work.


What does the full code for pass.php look like? And also what is $table? You have it as "SELECT Title FROM $table WHERE NOT Status='Links_added' ORDER BY Title ASC" So what is $table set as?


I've presumed that $table was defined in the database include file.


This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.