-1
 public function Read($Table, $Fields, $Where, $OrderBy, $Limit) {
        if ($this->TableExists($Table)) {
            $Query = "SELECT " . $Fields . " FROM " . "$Table";
            if ($Where != "") {
                $Query .= " WHERE " . $Where;
            }
            if ($OrderBy != "") {
                $Query .= " ORDER BY" . $OrderBy;
            }
            if ($Limit != "") {
                $Query .= " LIMIT " . $Limit;
            }
            $Result = mysql_query($Query);
            $Records = mysql_fetch_assoc($Result);
            //Extracting the field names
            $Keys = array_keys($Records);
            $this->Keys = $Keys;
            //Extracting recordset
            while($Values = array_values($Records)){

            $this->Values = $Values;
            }
            return $this->Values;
            return $this->Keys;
        }
        else {
            echo "This table doesn't exists!";
        }
        } // End Read();
?>

        <table>
            <tr>

                <?php
                foreach ($Object->Keys as $Key) {
                    ?>
                    <th><?php echo $Key; ?></th>
                    <?php
                }
                ?>
            </tr>
          // Here i want the database record to be displayed.
        </table>

実際には、結果を取得するためのジェネリック クラスを作成しようとしています。目標は、php コードを html 要素から解放することです。array_keys の表示に成功しました。array_values を表示するためだと思います レコードをテーブルに表示したい これを達成するのを手伝ってください。

4

1 に答える 1

0

ループの反復ごとに $this->Values をオーバーライドしています。試してください:

$this->Values = array();
while($Records && $Values = array_values($Records)){
    $this->Values[] = $Values;
    $Records = mysql_fetch_assoc($Result);
}

mysql_fetch_assoc()行がなくなるまで、呼び出されるたびに結果セットから連想配列を引き出します。したがって、反復の考え方は、while($Records && ...ループを続け、行をフェッチし、それらを$this->Valuesuntilに入れることを意味します$Results

と:

<table>
    <tr>
        <?php foreach ($Object->Keys as $Key) { ?>
            <th><?php echo $Key; ?></th>
        <?php } ?>
    </tr>
    <?php foreach ($Object->Values as $Values) { ?>
    <tr>
        <?php foreach ($Values as $Value) { ?>
            <td><?php echo $Value; ?></td>
        <?php } ?>
    </tr>
    <?php } ?>
</table>

$this->Valuesこれは、配列であるため、それを反復し、次に各値内の配列を反復する必要があることを除いて、あなたが行っていたことの単なる拡張です。それは2D 配列です。

目標を達成するためのより良い方法がありますが、これは機能するはずです。mysqlitoまたは the PDOtooを調べることを検討してください。

于 2013-09-18T01:07:39.773 に答える