выпадающий список php из массива не заполняется

#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. Это было неловко, но я бы не поймал это без вашей помощи.