0


タイトルとタイトルのタグを取得したい。

public function titles()
{
     $query=mysql_query("SELECT * FROM title");
     while($row = mysql_fetch_object($query)){
          $data->title[] = $row;
          $data->tag[] = $this->tags($row->id);
     }
     return $data;
}

public function tags($title_id)
{
     $query=mysql_query("SELECT * FROM tag WHERE title_id = '$title_id'");
     while($row = mysql_fetch_object($query)){
           $tag[] = $row;
     }
     return $tag;
}

この方法で印刷しようとしています

$data = titles();
foreach($data->title as $title)
{
     echo $title->topic;
     foreach($data->tag as $tag)
     {
         echo $tag->name;
     }
}

しかし、うまくいきません。どのようにできるのか?ご協力ありがとう御座います。

4

1 に答える 1

1

titles メソッドにこのようなものが必要です

$data = new stdClass();
$data->title = array();
$data->tag = array();

このようなファイルも追加する必要があります

$data->title[$row->id][] = $row;
$data->tag[$row->id][] = $this->tags($row->id);

次に、このようにループできます

foreach($data->title as $id => $title)
{
    echo $title->topic;
    foreach($data->tag[$id] as $tag)
    {
        echo $tag->name;
    }
}

また、エラーを有効にして、ページの上部に PHP エラー .. が表示されるようにします。

error_reporting(E_ALL);
ini_set("display_errors","On");

PHP ドキュメント オンmysql_***

この拡張機能の使用はお勧めできません。代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。詳細については、MySQL: API ガイドの選択および関連する FAQ も参照してください。この関数の代替手段には、次のものがあります。

あなたのコードはどのように見えるべきだと思いますか

class Somthing {
    private $db;

    function __construct() {
        $this->db = new mysqli("localhost", "user", "password", "db");
    }

    function titles() {
        $data = new stdClass();
        $data->title = array();
        $data->tag = array();

        $result = $this->db->query("SELECT * FROM title");
        while ( $row = $result->fetch_object() ) {
            $data->title[$row->id] = $row;
            $data->tag[$row->id] = $this->tags($row->id);
        }
        return $data;
    }

    function tags($title_id) {
        $tag = array();
        $result = $this->db->query("SELECT * FROM tag WHERE title_id = '$title_id'");
        while ( $row = $result->fetch_object() ) {
            $tag[] = $row;
        }
        return $tag;
    }
}

$somthing = new Somthing();

foreach ($somthing->titles() as $id => $title ) {
    echo $title->topic;
    foreach ( $data->tag[$id] as $tag ) {
        echo $tag->name;
    }
}
于 2012-10-12T23:39:18.690 に答える