0

クエリからデータを取得し、その情報をテーブル (html) の読み込みを要求するページに送信する関数が必要です。表示される内容を試していますが、結果が得られません。

クラス PHP

class products {

    public $Id;
    public $sku;
    public $name;
    public $price;

    var $function_result = array();

    function getProducts() {
        $mysqli = new mysqli("localhost", "root", "usbw", "Datos");
        if (mysqli_connect_errno()) {
            printf("Error in conection: %s\n", mysqli_connect_error());
            exit();
        }
        $query = "SELECT Id,sku,name,price FROM products";
        if ($result = $mysqli->query($query)) {
            $i = 0;
            while ($obj = mysqli_fetch_object($result)) {
                $object = new stdClass;
                $object->Id = $obj["Id"];
                $object->sku = $obj["sku"];
                $object->name = $obj["name"];
                $object->price = $obj["price"];
            }
        }
        $mysqli->close();
        return $object;
    }

}

HTML (PHP)

        <?php
        require 'Clases/productos.class.php';
        $pro = new productos();
        $datos = $pro->getProducts();
        ?>
       <!DOCTYPE html>
             <html>
                 <head>
                   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                 <title></title>
                 </head>
               <body>
             <?php
                 for ($i = 0; $i < sizeof($datos); $i++) {
               ?>
             <p><?php echo $datos[$i]["name"]; ?></p>
              <?php
                 }
                ?>
               </body>
               </html>

提案とヘルプに注意してください!

ありがとうございました!よろしく

マウリシオズ

4

2 に答える 2

1

各オブジェクトを配列に追加して返す必要があります。getProducts 関数を次のように変更します。

function getProducts() {
    $mysqli = new mysqli("localhost", "root", "usbw", "Datos");
    if (mysqli_connect_errno()) {
        printf("Error in conection: %s\n", mysqli_connect_error());
        exit();
    }
    $query = "SELECT Id,sku,name,price FROM products";
    $objects = array();
    if ($result = $mysqli->query($query)) {
        $i = 0;
        while ($obj = mysqli_fetch_object($result)) {
            $object = new stdClass;
            $object->Id = $obj["Id"];
            $object->sku = $obj["sku"];
            $object->name = $obj["name"];
            $object->price = $obj["price"];
            $objects[] = $object;
        }
    }
    $mysqli->close();
    return $objects;
}

また、Mark Bmysqli_fetch_objectがコメントで述べたように、少なくともコードが現在作成されているため、呼び出しの結果を格納するために新しいオブジェクトを作成する必要はありません。そのため、while ループは次のように単純化できます。

while ($obj = mysqli_fetch_object($result)) {
    $objects[] = $obj;
}
于 2013-06-24T21:01:13.993 に答える
1

各行を配列に保存する必要があります。objectの配列を生成していることを忘れないでください。角括弧を使用してその要素にアクセスすることはできません。

class Products
{
    public $Id;
    public $sku;
    public $name;
    public $price;

    var $function_result = array();

    public function getProducts () {
        $products = array();
        $mysqli = new mysqli("localhost", "root", "usbw", "Datos");

        if (mysqli_connect_errno()) {
            printf("Error in conection: %s\n", mysqli_connect_error());
            exit();
        }

        $query = "SELECT Id,sku,name,price FROM products";

        if ($result = $mysqli->query($query)) {
            while ($obj = mysqli_fetch_object($result)) {
                $object = new stdClass;
                $object->Id = $obj["Id"];
                $object->sku = $obj["sku"];
                $object->name = $obj["name"];
                $object->price = $obj["price"];

                $products []= $object;
            }
        }

        $mysqli->close();

        return $products;
    }
}

オブジェクトのプロパティにアクセスするには、矢印演算子を使用します。

require_once 'Clases/productos.class.php';
$almacen = new Productos();
$productos = $almacen->getProducts();

foreach ($productos as $producto) { ?>
    <p><?php echo htmlspecialchars($producto->name)></p>
<?php }
于 2013-06-24T21:08:06.597 に答える