2016-04-03 2 views
0

私はPHPとデータベースクエリーの新機能です。データベースの選択とクエリに関する問題 - PHP

私はGenesisフレームワークがインストールされたWordPressサイトを持っており、そこから子テーマを作成して、データベースからデータを挿入するためのテンプレートページを追加しています。カテゴリページと商品ページを作成しています。

カテゴリページの質問データに問題があります。そこに正しい方向に向ける人がいれば、とても感謝しています。

私はすべてのデータベース行を個別にテーブル形式で出力していますが、これは私が望むとおりですが、表示された製品の上に出力することはできません。これまで仕事をしてきました。ここに私のコードです:

私の問題は、これらのコード行以内である
function child_product_data_loop() { 

global $wpdb; 
$category = $wpdb->get_results("SELECT * FROM product_data WHERE prod_cat_1='Retractable Plastic Pens';"); 

echo "<main class='content'> 

    <article class='page type-page status-publish entry' itemscope='' itemtype='http://schema.org/CreativeWork'> 

     <header class='entry-header'> 

      <h1 class='entry-title' itemprop='headline'>".$category->prod_cat_1."</h1> 

     </header> 

     <div class='entry-content' itemprop='text'> 

      <p>For more information on any product within our ".$category->prod_cat_1." range please click on &quot;details and prices&quot;.</p>"; 

      foreach($category as $product){ 

      echo "<table width='100%' border='0' cellpadding='2' cellspacing='0'> 

       <tbody> 

        <tr valign='top'> 

         <td><h3><a href='' style='color: rgb(51, 102, 153); text-decoration: none;'>".$product->prod_name."</a></h3></td> 

         <td style='color: #ff0000; text-align: right;'>From: &pound;".$product->prod_price_5."</td> 

        </tr> 

        <tr valign='top'> 

         <td colspan='2'><a href='' style='color: #CC6600; text-decoration: none;'>Click here for details and prices</a></td> 

        </tr> 

        <tr align='center' valign='middle'> 

         <td height='75' colspan='2'><a href='' title='".$product->prod_name."'><img width='100%' height='auto' src='http://thepensite.co.uk/wp-content/uploads/media-clic.jpg' class='prod-image' alt='".$product->prod_name."' srcset='http://thepensite.co.uk/wp-content/uploads/media-clic-300x33.jpg 300w, http://thepensite.co.uk/wp-content/uploads/media-clic.jpg 420w' sizes='(max-width: 420px) 100vw, 420px' /></a></td> 

        </tr> 

       </tbody> 

      </table>"; 

      } 

     echo "</div> 

    </article> 

</main>"; 

} 

:私は、私はかなりの数のソリューションを試してみました前に言ったように、何らかの理由で

echo "<main class='content'> 

    <article class='page type-page status-publish entry' itemscope='' itemtype='http://schema.org/CreativeWork'> 

     <header class='entry-header'> 

      <h1 class='entry-title' itemprop='headline'>".$category->prod_cat_1."</h1> 

     </header> 

     <div class='entry-content' itemprop='text'> 

      <p>For more information on any product within our ".$category->prod_cat_1." range please click on &quot;details and prices&quot;.</p>"; 

カテゴリ名が出力されていません私は見つけましたが、彼らは働いていないので、私は明らかに何かを間違ってやっています。

あなたのお役に立てれますか?

事前に感謝します。

答えて

2

$category[0]->prod_cat_1を使用すると、配列値に正しくアクセスできません。

は、クエリ後print("<pre>".print_r($category,true)."</pre>");を行うと、あなたは結果を得ている方法を見て:[0]

EDITここで重要です。

+0

あなたは絶対的なスターです、完璧に動作する、どうもありがとうございました。あなたは[0]が何をしているのかを説明するだけで、私は将来の参照のための考えを持っていますか? – SharpenedPixels

+0

@SharpenedPixelsクエリの後に 'print("

".print_r($category,true)."
");を実行して、どのように結果を得ているかを見てください。多次元配列の仕組みを理解してください。何か問題があれば。私はあなたを助けます。:)あなたが私の答えが役に立ったら、それを受け入れることができます。 – Dray

+0

これは、stdClass Object [0]から情報を取得すると言っているので、レコードが存在しない場合は何も出力しません。すべてのカテゴリに少なくとも1つのレコードが含まれているので、現在は機能します。助けてくれてありがとう。 – SharpenedPixels

0

おそらく、クエリから返されたものにはアクセスできません。あなたが確信するために十分な情報を投稿していないので、私は少し推測しなければならない。

提案#1: あなたのテーブル定義を質問に追加すると、あなたはどの列があるのか​​分かります。

投書#2:あなたの質問を編集し、出力を投稿

  foreach($category as $product){ 
       var_dump($category); // <--- add this 

データをダンプします。

私はあなたがテーブル内のすべての行を持つテーブルであるhtml構造を探していると仮定しています。あなたがループを作ったやり方によって、あなたは各製品のテーブルに終わるでしょう。

これは必要なものですか?

table 
    product 
    product 
    product 

これはあなたのコードが生成されますです:

table 
    product 
table 
    product 
table 
    product 
+0

応答をありがとう、それはテーブル形式の問題ではありませんでした。それは私が望むように働いた。独自のテーブル内に各製品を表示するので、個々のテーブルをスタイルすることができます。 私はタイトルとして投稿したかったカテゴリの名前であり、動作していませんでした。 @Drayは解決した解決策で答えましたが、あなたの時間に感謝します。 – SharpenedPixels

関連する問題