Использование цикла foreach PHP в другом цикле foreach - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь заполнить таблицу строками из базы данных.Однако один из столбцов является раскрывающимся списком, который должен быть заполнен несколькими значениями, поэтому необходимо использовать fetchAll.Однако у меня возникли проблемы, поскольку я использую конструкцию foreach внутри другой конструкции foreach.

Я предполагаю, что это невозможно, или я просто что-то делаю не так?Как найти обходной путь, чтобы можно было заполнить всю таблицу, а также заполнить раскрывающийся список более чем одним значением, но по-прежнему иметь значение по умолчанию, равное значению в базе данных?

<?php
$sql = "SELECT TOP 100 *
        FROM Table_OS_List
        ORDER BY [CURRENT_SKU] ASC";


$drops = "SELECT [Purchasing_Group]
        FROM Table_OS_List
        GROUP BY [Purchasing_Group]";
$drop = $dbh->query($drops);
?>

<?php
    /* Foreach loop that brings in information to populate table */
    foreach ($dbh->query($sql) as $rows) {
    ?>
    <tr class="row">    
        <td class="old_sku" id="old_sku"><?php echo intval ($rows['OLD_SKU'])?></td>
        <td class="current_sku" id="current_sku"><?php echo intval ($rows['CURRENT_SKU'])?></td>
        <td class="id" id="id" style="display: none;"><?php echo intval ($rows['ID'])?></td>


        <td class="dropdown-select" id="purchgroup">
            <select id="selected_group" class="selected_group" disabled>
                <?php foreach($drop->fetchAll() as $dropdown) { ?>

                  <option class="choice" value="Purchasing Group"><?php echo $dropdown['Purchasing_Group'];?></option>

                <?php } ?>

            </select>
        </td>


        <td><input type="button" class="edit" name="edit" value="Edit"></td>
        <td><input type="button" class="delete" name="delete" id="<?php echo intval ($rows['ID'])?>" value="Delete"></td>
    </tr>
 <?php
  }
 ?>

ПРИМЕЧАНИЕ Этот код правильно заполняет всю таблицу, однако раскрывающийся список содержит только значение в каждой строке и не заполняется другими параметрами значения, если мне нужно выбрать что-то другое:

<?php
    /* Foreach loop that brings in information to populate table */
    foreach ($dbh->query($sql) as $rows) {
    ?>
    <tr class="row">    
        <td class="old_sku" id="old_sku"><?php echo intval ($rows['OLD_SKU'])?></td>
        <td class="current_sku" id="current_sku"><?php echo intval ($rows['CURRENT_SKU'])?></td>
        <td class="id" id="id" style="display: none;"><?php echo intval ($rows['ID'])?></td>


        <td class="dropdown-select" id="purchgroup">
            <select id="selected_group" class="selected_group" disabled>

                <option class="choice" value="Purchasing Group"><?php echo $rows['Purchasing_Group'];?></option>

            </select>
        </td>           

        <td><input type="button" class="edit" name="edit" value="Edit"></td>
        <td><input type="button" class="delete" name="delete" id="<?php echo intval ($rows['ID'])?>" value="Delete"></td>
    </tr>
 <?php
  }
 ?>

РЕДАКТИРОВАТЬ:

Каждый выпадающий автоматически по умолчанию устанавливается на Bowling Green, даже если этот ряд не должен быть Bowling Green.Большинство рядов либо Юго-Восток, либо Мичиган, но независимо от того, что это должно быть, он по умолчанию почему-то имеет Боулинг Грин

enter image description here

enter image description here

1 Ответ

0 голосов
/ 21 сентября 2018

Да, делая это неправильно, вы потребляете второй набор результатов по завершении первой итерации внешнего foreach, поэтому вместо этого извлекайте выпадающее содержимое в массив, чтобы вы могли использовать его много раз

<?php
$sql = "SELECT TOP 100 *
        FROM Table_OS_List
        ORDER BY [CURRENT_SKU] ASC";


$drops = "SELECT [Purchasing_Group]
        FROM Table_OS_List
        GROUP BY [Purchasing_Group]";
$drop = $dbh->query($drops);
$allDrops = $drop->fetchAll();

?>

<?php
    /* Foreach loop that brings in information to populate table */
    foreach ($dbh->query($sql) as $rows) {
    ?>
    <tr class="row">    
        <td class="old_sku" id="old_sku"><?php echo intval ($rows['OLD_SKU'])?></td>
        <td class="current_sku" id="current_sku"><?php echo intval ($rows['CURRENT_SKU'])?></td>
        <td class="id" id="id" style="display: none;"><?php echo intval ($rows['ID'])?></td>


        <td class="dropdown-select" id="purchgroup">
            <select id="selected_group" class="selected_group" disabled>
                <?php 
                foreach($allDrops as $dropdown) { 
        //--------------^^^^^^^^^
        // Also changed the way you fill the option tag below
                ?>

                  <option class="choice" 
                          value="<?php echo $dropdown['Purchasing_Group'];?>">
                    <?php echo $dropdown['Purchasing_Group'];?>
                  </option>

                <?php } ?>

            </select>
        </td>


        <td><input type="button" class="edit" name="edit" value="Edit"></td>
        <td><input type="button" class="delete" name="delete" id="<?php echo intval ($rows['ID'])?>" value="Delete"></td>
    </tr>
 <?php
  }
 ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...