Remembering options in a select box array after submitting through php
Question by Marcus Edensky
<form method="post">
<select name="box[]">
<option value="1" <?php if ($_POST['box[0]'] == "1") echo "selected="selected";"?>>1</option>
<option value="2" <?php if ($_POST['box[0]'] == "2") echo "selected="selected";"?>>2</option>
<option value="3" <?php if ($_POST['box[0]'] == "3") echo "selected="selected";"?>>3</option>
</select>
<p>
<select name="box[]">
<option value="1" <?php if ($_POST['box[1]'] == "1") echo "selected="selected";"?>>1</option>
<option value="2" <?php if ($_POST['box[1]'] == "2") echo "selected="selected";"?>>2</option>
<option value="3" <?php if ($_POST['box[1]'] == "3") echo "selected="selected";"?>>3</option>
</select>
<p>
<input type="submit" value="Submit">
</form>
When I use box names “box1” and “box2”, it works without a problem. What am I doing wrong?
****** EDIT ********
Thanks a lot for your comments, but I actually found the solution myself, even if it doesn’t make much sense. Instead of using $_POST[‘box’][0] and [1] at the if statement, I simply used $box[0] and [1]. Even though it’s posted, apparently php sees it as a normal array, and not as some kind of $_POST-array! Working code:
<form method="post">
<select name="box[]">
<option value="1" <?php if ($box[0] == "1") echo "selected='selected'";?>>1</option>
<option value="2" <?php if ($box[0] == "2") echo "selected='selected'";?>>2</option>
<option value="3" <?php if ($box[0] == "3") echo "selected='selected'";?>>3</option>
</select>
<p>
<select name="box[]">
<option value="1" <?php if ($box[1] == "1") echo "selected='selected'";?>>1</option>
<option value="2" <?php if ($box[1] == "2") echo "selected='selected'";?>>2</option>
<option value="3" <?php if ($box[1] == "3") echo "selected='selected'";?>>3</option>
</select>
<p>
<input type="submit" value="Submit">
</form>
Answer by Marcus Edensky
Thanks a lot for your comments, but I actually found the solution myself, even if it doesn’t make much sense. Instead of using $_POST[‘box’][0] and [1] at the if statement, I simply used $box[0] and [1]. Even though it’s posted, apparently php sees it as a normal array, and not as some kind of $_POST-array! Working code:
<form method="post">
<select name="box[]">
<option value="1" <?php if ($box[0] == "1") echo "selected='selected'";?>>1</option>
<option value="2" <?php if ($box[0] == "2") echo "selected='selected'";?>>2</option>
<option value="3" <?php if ($box[0] == "3") echo "selected='selected'";?>>3</option>
</select>
<p>
<select name="box[]">
<option value="1" <?php if ($box[1] == "1") echo "selected='selected'";?>>1</option>
<option value="2" <?php if ($box[1] == "2") echo "selected='selected'";?>>2</option>
<option value="3" <?php if ($box[1] == "3") echo "selected='selected'";?>>3</option>
</select>
<p>
<input type="submit" value="Submit">
</form>
Answer by Starx
Both, elements have same name. Thats the problem.
$_POST['box[0]']
, $_POST['box[1]']
, contains the array of the two elements, not the value it self.