簡體   English   中英

在另一個foreach循環中使用PHP foreach循環

[英]Using a PHP foreach loop within another foreach loop

我試圖用數據庫中的行填充表。 但是,列之一是一個下拉列表,需要使用多個值填充該下拉列表,因此需要使用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。 大多數行位於東南或密歇根州,但不管是什么行,由於某種原因,它默認為Bowling Green

在此處輸入圖片說明

在此處輸入圖片說明

是的,做錯了,您正在使用外部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
  }
 ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM