#php #mysql #arrays #drop-down-menu #array-population
#php #mysql #массивы #выпадающее меню #массив-заполнение
Вопрос:
У меня возникли проблемы с заполнением элемента select с помощью PHP. В настоящее время я создаю массив с информацией, извлеченной из базы данных. Используется для редактирования или вставки записи в журнал для моего ведения записей.
Переменные, используемые в коде, имеют дело с номерами клиентов и именами клиентов, если это помогает придать дополнительную значимость.
Метод, описанный ниже, отлично работает в случае, если это не новая запись (редактирование существующей записи), но параметры не заполняются в случае новой записи (где $ID == 0).
$ID = $_GET['ID'];
connectDB();
$mons = "SELECT * FROM mons ORDER BY mName ASC";
$mons = queryHashArray($mons);
disconnectDB();
<tr><td><select name="mID"> <?php
foreach($mons as $m) {
if($ID == 0) { ?>
<option value="<?= $m['cusNum'] ?>"><?= $m['mName'] ?></option> <?php }
else { ?>
<option value="<?= $m['cusNum'] ?>" <?php if($record['mID'] == $m['cusNum']) echo "selected="selected""; ?> ><?= $m['mName'] ?></option> <?php
}
}?>
</select></td>
Буду признателен за любую помощь. Я не смог найти в Интернете пример, который был бы достаточно специфичен для моей проблемы. Я надеюсь, что это что-то маленькое и простое, что я упустил из виду.
Обновить:
Ниже приведен исходный код страницы из редактирования существующей записи и из новой записи.
Существующая запись: Из соображений конфиденциальности текст опции был изменен на «Имя опущено».
<tr><td><select name="mID"> <option value="3" selected="selected" >Name Omitted</option> <option value="0" >Name Omitted</option> <option value="0" >Name Omitted</option>
Новая запись:
<tr><td><select name="mID"> <br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/home/folder/public_html/subfolder/file.php</b> on line <b>265</b><br />
</select></td>
$record определен в другом месте кода и является редактируемой записью. Если это новая запись, все значения устанавливаются в «.
Помогает ли это?
Комментарии:
1. Это весь фрагмент кода? Вы никогда не выпадали из php (до раздела tr / td), но вы заходите и выходите из него впоследствии. Такое ощущение, что вы пропустили часть кода.
2. после строки
disconnectDB();
вставьте это:var_dump($mons)
и расскажите нам, что там написано3. Вы не получаете никакой опции, отображаемой в выпадающем списке при нажатии на нее?
4. Что вы видите, когда смотрите на HTML в View Source?
5. @MJB — Я опустил вводный код, но я действительно переключаюсь в режим php и из него.
Ответ №1:
Похоже, что ваша queryHashArray
функция не возвращает массив, когда идентификатор равен 0. Убедитесь, что переменная ID или $_GET[‘ID’] не перезаписывает переменную, используемую в вашей функции.
Попробуйте print_r($mons)
сразу после запуска функции. Это покажет вам, что возвращает функция.
Комментарии:
1. Кроме того, поделитесь с нами своим кодом для
queryHashArray
функции.2. Итак, мой запрос $ mons был в другом случае, который запрашивал бы его, только если ID ! = 0. Это было неловко, но я бы не поймал это без вашей помощи.