如何使用在类中获取的数组创建PHP循环?

时间:2017-05-25 10:10:13

标签: php mysql

我正在尝试在页面中创建一个循环,该循环使用数据库中的多个选项填充表单。在这种情况下,表单旨在创建一个ASSEMBLY,并且需要在数据库中选择已存在的PARTS。

我想要实现的方法如下:

一个。我在一个名为classes.php的文件中创建了一个包含以下函数的类:

<?php 

$depth = "../";
require_once("connection.php");

////////////////////////////////////////////

class Parts
{
    // SELECTS ALL PARTS FROM DATABASE
    public function getPartInfo() {
        global $con;
        $partinfo = mysqli_query($con,"SELECT * FROM parts ORDER BY name");
        $row = mysqli_fetch_assoc($partinfo);
        return $row;
    }

} // end of Parts

?>

B中。在另一个文件(assemblies.php)中,我试图捕获数组中所有字段的值,以便创建一个列出所有行的循环,以便用户可以选择程序集所需的部分。我正在尝试以下代码但没有成功:

    <?php
    session_start();

    include "php_includes/classes.php";

    $parts = new Parts();
    $parts_detail = $parts->getPartInfo();

    ?>

    <div class="row">
       <div class="form-group col-md-12">
          <table width="100%" id="partsTable">
             <?php 
                foreach($parts_detail as $row) {
                   echo '<tr>
                         <td><input type="checkbox" name="parts[]" value="'.$row["id"].'" /></td>
                         <td><img src="https://lux365.s3.amazonaws.com/landing-pages/easilite/v1/img/easilite-logo.jpg" alt="" /></td>
                         <td>'.$row["name"].'</td>
                         <td><input type="number" name="partQuantity[]" min="0" /></td>
                         </tr>';
                 }
              ?>
           </table>
        </div>
    </div>

$row["name"]试图从部件表中获取字段NAME,$row["id"]尝试从部件表中调用字段ID。

但是当我尝试这个时,会导致名字和身份证明都出现非法字符串偏移错误。

任何帮助都表示赞赏,因为我的OOP技能非常有限。

提前致谢

2 个答案:

答案 0 :(得分:2)

getPartInfo()只返回查询返回的第一行。然后你的for ($parts_detail as $row)循环遍历该行中的列,而不是所有行。因此$row是包含列值的字符串,$row['name']会收到错误,因为$row不是关联数组。

它应该有一个循环并返回所有行。

public function getPartInfo() {
    global $con;
    $partinfo = mysqli_query($con,"SELECT * FROM parts ORDER BY name");
    $result = array();
    while ($row = mysqli_fetch_assoc($partinfo)) {
        $result[] = $row;
    }
    return $result;
}

答案 1 :(得分:1)

...试

class Parts
{
    // SELECTS ALL PARTS FROM DATABASE
    public function getPartInfo() {
        global $con;
        $partinfo = mysqli_query($con,"SELECT * FROM parts ORDER BY name");
        $arrRow = array();
        while($row = mysqli_fetch_assoc($partinfo)){
            $arrRow[] = $row;
        }
        return $arrRow;
    }

}