2017-11-05 12 views
0

私はCMSを構築し、worpressデータベースwp_posts & wp_postmetaを使用しています。SQLクエリーのデータアドバイス

私が達成しようとしているのは、すべての投稿を表示するwp_postsからデータを取得し、次に2番目のクエリで画像を取り出そうとしています。

wp_postsにIDが私のコードは、しかし、2番目のクエリ上の画像は、すべての記事を同じ画像を引っ張って取り組んでいる

、どのように私は$ IDから画像を引っ張って行くのですwp_postmetaにpost_idのに等しいです最初のクエリから取得します。


<?php 
 
$query = "SELECT * FROM wp_posts 
 
      ORDER BY post_date DESC LIMIT 0, 25"; 
 

 
$result = mysqli_query($connection, $query) or die(mysqli_error($connection)); 
 

 
while($row = mysqli_fetch_array($result)) { 
 
    
 
    $ID   = $row['ID']; 
 
    $post_title = $row['post_title']; 
 
    $post_date = $row['post_date']; 
 
    $post_excerpt = $row['post_excerpt'];  
 
    $post_content = $row['post_content']; 
 

 
    
 
     
 
    $querystrs = " 
 
     SELECT post_id, 
 
     MAX(CASE WHEN meta_key = '_wp_attached_file' THEN meta_value END) '_wp_attached_file' 
 
    FROM wp_postmeta 
 
WHERE meta_key IN('_wp_attached_file') AND post_id = '' "; 
 
    
 
      $select_postmetaimage = mysqli_query($connection, $querystrs) or die(mysqli_error($connection)); 
 
       
 
       while($row = mysqli_fetch_assoc($select_postmetaimage)) { 
 
        
 
        
 
        $image = $row['key_value']; 
 
     
 
    ?> 
 

 

 
       <!-- First Blog Post --> 
 
      
 
<div class="panel panel-primary"> 
 
    <div class="panel-heading"> 
 
    
 

 
       <h3><a href="post.php?p_id=<?php echo $ID; ?>"><font color="white"><?php echo $post_title; ?></font></a></h3> 
 
       <p><span class="glyphicon glyphicon-time"></span> <?php echo humanTiming(strtotime($post_date)); ?> 
 
       </p> 
 
    </div> 
 
    
 
    <div class="panel-body"> 
 
       
 
       <img class='col-md-4' align='left' width='148' src='images/<?php echo $image; ?>' alt=''> 
 
       <p><?php echo $post_content; ?></p> 
 
       
 
    </div> 
 
    <p align="right"><a class="btn btn-primary" href="post.php?p_id=<?php echo $ID; ?>">Read More <span class="glyphicon glyphicon-chevron-right"> </span></a></p> 
 
</div> 
 
     <?php } } ?> 
 
      

+0

一度に必要なすべてのデータを取得するために1つのクエリを使用してください。あなたはデータベースの紹介と質問を読む必要があります。ここでは、結合を使用します。 [mcve]も読んで行動してください。また、あなたのコードは動作しているが、それは動作していないと言う。あなたが実際に何を意味しているかを十分な言葉と段階でご記入ください。 – philipxy

+0

クエリはwp_postsのデータベースからすべてのストーリーを引っ張っていますが、2番目のクエリーのイメージは1つのイメージをすべてのポストで同じイメージを取得するだけです。INNER JOINとLEFT JOINを使用しようとしましたが空白のページです – Brian

+0

編集してくださいあなたの投稿への明確化、それらをコメントに入れないでください。 [wordpress.so]を試してみてください。しかし、あなたはまだ[mcve]を与えるべきです。これは、あなたが望むもの、望ましい出力、実行可能な入力と最小限のコードの明確な説明です。しかしあなたはあなたの質問を編集していません。あなたが何を意味するのかをすでに知っていれば、あなたが何を言いたいのか分かりません。それがうまくいくまでコードを切り取り、エラーを表示するのに十分な量を加えてください。文字列をエコーし​​てから実行してください。 *内側と外側の結合の定義を読んでください。* – philipxy

答えて

1

編集:変更された画像の位置。

2回目のループは必要ないと思います。最初のクエリでイメージをフェッチするためにパーツを追加すると、一度だけ実行する必要があります。 (私は100%を確認するためのデータがありません)、試してみてください。正しいトラックにあるはずです:

<?php 
$query = "SELECT 
     wp_posts.*, 
     (SELECT meta_value FROM wp_postmeta WHERE wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = '_wp_attached_file' ORDER BY meta_id DESC LIMIT 1) as image 
    FROM wp_posts 
    ORDER BY post_date DESC 
    LIMIT 0, 25"; 

$result = mysqli_query($connection, $query) or die(mysqli_error($connection)); 

while ($row = mysqli_fetch_array($result)) { 

    $ID   = $row['ID']; 
    $post_title = $row['post_title']; 
    $post_date = $row['post_date']; 
    $post_excerpt = $row['post_excerpt'];  
    $post_content = $row['post_content']; 
    $image  = $row['image']; 
?> 
    <!-- First Blog Post --> 

    <div class="panel panel-primary"> 
     <div class="panel-heading"> 
      <h3><a href="post.php?p_id=<?php echo $ID; ?>"><font color="white"><?php echo $post_title; ?></font></a></h3> 
      <p><span class="glyphicon glyphicon-time"></span> <?php echo humanTiming(strtotime($post_date)); ?></p> 
     </div> 
     <div class="panel-body"> 
      <img class='col-md-4' align='left' width='148' src='/wp-content/uploads/<?php echo $image; ?>' alt=''> 
      <p><?php echo $post_content; ?></p> 
     </div> 
     <p align="right"><a class="btn btn-primary" href="post.php?p_id=<?php echo $ID; ?>">Read More <span class="glyphicon glyphicon-chevron-right"> </span></a></p> 
    </div> 

<?php } ?> 
+0

ありがとうございました。私は画像がまだ表示されていませんが、画像は表示されません。 – Brian

+0

最も挑戦的に正しい軌道に乗りますよろしくお願いします。 – Brian

+0

誰もがイメージが引っ張られない理由をご覧ください。 – Brian

関連する問題