Запоминание опций в массиве select box после отправки через php - PullRequest
0 голосов
/ 22 июня 2011
<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>

Когда я использую имена ящиков "box1" и "box2", это работает без проблем. Что я делаю не так?

****** РЕДАКТ. **** ****

Большое спасибо за ваши комментарии, но я сам нашел решение, даже если оно не имеет особого смысла. Вместо использования $ _POST ['box'] [0] и [1] в операторе if я просто использовал $ box [0] и [1]. Несмотря на то, что он размещен, php видит его как обычный массив, а не как $ _POST-массив! Рабочий код:

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

Ответы [ 3 ]

3 голосов
/ 22 июня 2011

Попробуйте использовать $_POST['box'][0] и $_POST['box'][1];) Поскольку они публикуются в виде массива, вам необходимо использовать их как массив.

0 голосов
/ 11 апреля 2012

Большое спасибо за ваши комментарии, но я сам нашел решение, даже если оно не имеет особого смысла.Вместо использования $ _POST ['box'] [0] и [1] в операторе if я просто использовал $ box [0] и [1].Несмотря на то, что он размещен, php видит его как обычный массив, а не как $ _POST-массив!Рабочий код:

<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>
0 голосов
/ 22 июня 2011

Оба элемента имеют одинаковое имя. Это проблема. $_POST['box[0]'], $_POST['box[1]'], содержит массив двух элементов, а не само значение.

...