簡體   English   中英

如何在循環中顯示循環中一行的所有結果?

[英]How can I display all the results of a row in a loop within a loop?

我目前的情況是這樣的 例

我想要的是,使用節名稱“ asd”,您還可以選擇“ Home”以及其中可能存在的任何其他選項,但是由於某種原因,它無法正常工作。

<table class="table">
        <tr>
            <td style="width: 60%;">Section name</td>
            <td>Edit section</td>
            <td>Category</td>
            <td>Order</td>
        </tr>
        <form method="post">
        <?php
            $query = $handler->query('SELECT * FROM section ORDER BY sorder');
            $cquery = $handler->query('SELECT * FROM category');

            if($query->rowCount()){
                while($fetch = $query->fetch(PDO::FETCH_ASSOC)){
                    echo'
                        <tr>
                            <td><strong>' . $fetch['secname'] . '</strong><br />' . $fetch['secdesc'] . '</td>
                            <td><a class="btn btn-warning" href="index.php?p=edit&id=' . $fetch['sc_id'] . '"><i class="fa fa-times fa-fw"></i> Edit</a>
                            <a class="btn btn-danger" href="index.php?p=del&id=' . $fetch['sc_id'] . '"><i class="fa fa-times fa-fw"></i> Delete</a></td>
                            <td><select name="' . $fetch['c_id'] . '" class="form-control" size="1">
                        ';
                        while($cfetch = $cquery->fetch(PDO::FETCH_ASSOC)){
                            echo'<option value="' . $cfetch['c_id'] . '" ' . (($cfetch['c_id'] == $fetch['c_id'])? 'selected' : '') . '>' . $cfetch['categoryname'] . '</option>';
                        }
                    echo'
                            </select></td>
                            <td><input type="number" class="form-control" name="' . $fetch['sc_id'] . '" value="' . $fetch['sorder'] . '" style="width: 60px;" /></td>
                        </tr>
                    ';
                }
            }
            else{
                echo '<tr><td colspan="4">' . $noResultsDisplay . '</td></tr>';
            }
        ?>
            <tr><td colspan="4"><input type="submit" name="section" class="btn btn-primary pull-right" value="Submit" /></td></tr>
        </form>
    </table>

附帶的SQL:

CREATE TABLE IF NOT EXISTS category(
    `c_id` int(10) NOT NULL auto_increment,
    `categoryname` varchar(250) NOT NULL,
    `corder` int(10) NOT NULL,
    PRIMARY KEY `c_id` (`c_id`),
    UNIQUE KEY (`categoryname`)
)Engine=InnoDB;

INSERT INTO category (`categoryname`, `corder`) VALUES ('Home', 1);

CREATE TABLE IF NOT EXISTS section(
    `sc_id` int(10) NOT NULL auto_increment,
    `c_id` int(10) NOT NULL,
    `secname` varchar(250) NOT NULL,
    `secdesc` varchar(500),
    `secimage` varchar(500),
    `sorder` int(10) NOT NULL,
    PRIMARY KEY `sc_id` (`sc_id`),
    UNIQUE KEY (`secname`)
)Engine=InnoDB;

我正在使用PDO,而$ handler是我的連接點。

我可以看到我走在正確的軌道上,但是由於某種原因,第二個循環只循環了一次,即使它應該循環多次。


發送表單后,我想在數據庫中設置類別,這是我當前的代碼:

    if(isset($_POST['section'])){
        $fetch = $query->fetch(PDO::FETCH_ASSOC);
        $category = $_POST['category'];

        foreach($_POST as $data => $value){
            if($data != 'section'){
                $sorder = (int)$value;

                if($sorder != $fetch['c_id']){
                    echo"UPDATE section SET sorder = :sorder, c_id = :cid WHERE sc_id = :id', [':sorder' => $sorder, ':id' => $data, ':cid' => $category]";
                    //echo perry('UPDATE section SET sorder = :sorder, c_id = :cid WHERE sc_id = :id', [':sorder' => $sorder, ':id' => $data, ':cid' => $category], null);
                }
            }
        }
    }

但是由於某種原因,我無法獲得選擇菜單的選項以發送到數據庫。

無需運行嵌套的第二個循環(它總是產生相同的輸出)。 我將首先以字符串形式獲取此輸出:

while($cfetch = $cquery->fetch(PDO::FETCH_ASSOC)){
    $option .= '<option value="' . $cfetch['c_id'] . '" ' . (($cfetch['c_id'] == $fetch['c_id'])? 'selected' : '') . '>' . $cfetch['categoryname'] . '</option>';
}

然后在循環中回顯它:

while($fetch = $query->fetch(PDO::FETCH_ASSOC)){
    echo'
        <tr>
            <td><strong>' . $fetch['secname'] . '</strong><br />' . $fetch['secdesc'] . '</td>
            <td><a class="btn btn-warning" href="index.php?p=edit&id=' . $fetch['sc_id'] . '"><i class="fa fa-times fa-fw"></i> Edit</a>
            <a class="btn btn-danger" href="index.php?p=del&id=' . $fetch['sc_id'] . '"><i class="fa fa-times fa-fw"></i> Delete</a></td>
            <td><select name="' . $fetch['c_id'] . '" class="form-control" size="1">
        ';
    echo $option;
    echo'
            </select></td>
            <td><input type="number" class="form-control" name="' . $fetch['sc_id'] . '" value="' . $fetch['sorder'] . '" style="width: 60px;" /></td>
        </tr>
    ';
}

暫無
暫無

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

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