1

私はphp/sqlで、ユーザーが販売したいアイテムを投稿できるWebアプリケーションを開発しています(ebayのようなものです)。非会員がアイテムについてコメントしたり、アイテムについて質問したりできるようにしたい.

私の問題は、Facebook の壁が機能するのと同じように、各アイテムとそのアイテムに関するコメント/クエリを表示したいということです。

各項目に「コメントを追加」(もしあれば) したい。コメント テーブルは、列 item_id を介してアイテム テーブルにリンクされています。そして、items テーブルは列 user_id を介して users テーブルにリンクされています。アイテムの詳細を表示するアイテム テーブルと結合されたユーザー テーブルを残しました。結合された 3 つのテーブルがあるように、コメント テーブルも結合しようとしました。

各テーブルに複数のエントリがあるにもかかわらず、コメントが表示されず、1 つの項目しか表示されないため、これは失敗します。これが私が使用しているコードです。

$database->query
    ('
    SELECT sale.*, query.*, users.id AS userid, users.username as user 
    FROM sale 
    LEFT JOIN users ON sale.user_id = users.id 
    LEFT JOIN query on sale.id = query.item_id
    where category = "$category" ORDER BY sale.id DESC
    ');

    $show = " "; //variable to hold items and comments

    if ($database->count() == 0) {

      // Show this message if there are no items  

      $show .= "<li class='noitems'>There are currently no items to display.</li>" ; 

    } else {

        $show .= "<li>";

        while ( $items = $database->statement->fetch(PDO::FETCH_ASSOC) )  
        {

            $show .= "
                //show item details in html
               ";

            while( $query = $database->statement->fetch(PDO::FETCH_ASSOC) )
            {

                $show .= "
                  //show queries below item details
                        ";                    
            }     

      $show .= "</li>" ; 
        }
4

1 に答える 1

0

スタックオーバーフローへようこそ!

pdoをご覧になることをお勧めします。すでにmysql_関数を使用している場合は、切り替えることをお勧めします。詳細については、こちらをご覧ください


クエリを接続/実行するときに使用する関数の方向を示したので、テーブルを作成する必要があります。データベースの管理にphpmyadminを使用しています。非常に優れていると思いますが、何を使用するかはあなた次第です。データベースの管理に使用するサービスを決定したら、Google 検索を行ってその使用方法を学習する必要があります。


ここで、テーブルをセットアップして正しく構造化する必要があります。アイテムを持っていると言う場合は、 というテーブルを作成する必要がありますitems。次に、項目のプロパティへの列を作成します。また、SQL テーブルなどを設定する際の重要な側面であるDatabase Normalizationについて読むことをお勧めします。


すべての設定が完了すると、データベースに正常に接続されます。次に、 「動的ページ」を設定する必要があります。つまり、「動的」と呼ばれるページが 1 つしかなく、変数がurl. これらはGETHTTP リクエストと呼ばれます。これがどのように見えるかの例を次に示します: http://example.com/item?id=345

?お気づきの場合は、id変数が に定義されていることがわかります345。と呼ばれる組み込みの PHP 配列にアクセスすることにより、この変数を から取得できます。次に、取得する変数名を に入力できます。これが例です。url$_GET[][]

<?php
$data = $_GET['varname']; // get varname from the url
if(isnumeric($data)){ // is it totally made out of numbers?
    $query = "SELECT fieldname FROM table WHERE id=:paramname";
    $statement = $pdo->prepare($query); // prepare's the query
    $statement->execute(array(
        'paramname'=>$data // binds the parameter 'paramname' to the $data variable.
    ));
    $result = $statement->fetch(PDO::FETCH_ASSOC); // grabs the result of the query
    $result = $result['fieldname'];
    echo 'varname was found in the database with the id equal to:'.$data.', and the             result being: '.$result;
}
?>

これで、URL から変数を取得して、そこからページ内のコンテンツを動的に変更する方法がわかります。

これが役に立ったことを願っています:)

于 2012-09-17T18:57:13.900 に答える