2017-06-17 6 views
-4

各インタビューの下に18のインタビューとボタンがあります。しかし、私はサイクルを台無しにして、各インタビューの下にある18個のボタンで18回のインタビューを受けました。 1つのボタンでなければなりません。PHP While Cycle

私はそれがサイクルの問題であると確信しています。私のミスはどこにあるのか教えていただけますか?ここで

が私のコードです:

<?php 
    $sql = "SELECT * FROM interviews WHERE featured = 1"; 
    $featured = $db->query($sql); 
?> 

<div class="container"> 
    <table class="rwd-table"> 
     <tbody> 
      <br><br> 
      <tr> 
       <?php 
     include_once("../forum/connect.php"); 
     $sql = "SELECT * FROM categories2 ORDER BY category ASC"; 
     $res = mysql_query($sql) or die(mysql_error()); 
     $interviews = ""; 
if(mysql_num_rows($res) > 0){ 
    while($row = mysql_fetch_assoc($res)){ 
     $id = $row['id']; 
     $category = $row['category']; 

     $sql2 = "SELECT * FROM interviews WHERE categories='".$id."'ORDER BY title DESC"; 
     $res2 = mysql_query($sql2) or die(mysql_error()); 
     if(mysql_num_rows($res2) > 0){ 

      while($row2 = mysql_fetch_assoc($res2)){ 
      $tid = $row2['id']; 
      $title = $row2['title']; 
       $interviews .= "<a href='view_interview.php?cid=".$id."&tid=".$tid."' class='cat_links'>".$category." - ".$title."</a>";  

    } 
    } 
} 

    $counter = 0; 
    while($product = mysqli_fetch_assoc($featured)){ 
     $image = $product['image']; 
     $title = $product['title']; 
     $decs = $product['description']; 
     if($counter % 3 == 0){ 
      echo '</tr><tr>'; 
     } 
     ++$counter; 


echo "<td> 
<div id='element1'></div> 
<div id='content1'> 
      <img src=".$image." alt=".$title."> 
      <h3>".$title."</h3> 
      <hr> 
      <h4>".$decs."</h4> 

     <div id='hovers'> 
     <a href='view_interview.php?cid=".$id."&tid=".$tid."' class='button' target='_blank'> 
     <span class='contentbut'> Read More</span> 
     </a> 
    </div>"; echo $interviews; 
} 
    ?> 
       <br><br> 

       </td> 
       <?php 
    } 

     ?> 
      </tr> 
     </tbody> 
    </table> 
</div> 
+0

* 18人のインタビューや各面接下のボタンを持っている:

あなたのループstructreはこのようなものです。しかし、私はサイクルを混乱させました。そして今、私は各インタビューの下の18のボタンで18のインタビューをしています*。あなたの声明は矛盾しています。 – Ravi

+0

私は各インタビューの下にただ一つのボタンがあるべきであることを意味する。つまり、18回のインタビューと18回のボタンが必要です。 – Kaloyan

+0

しかし、私は各インタビューの下に18のインタビューと18のボタンを持っています。それは18 * 18 = 324ボタンを意味します。 – Kaloyan

答えて

0

私は同じコードで二度の任意のポイントのクエリと同じテーブルが表示されません。

$sql = "SELECT * FROM interviews WHERE featured = 1"; 
    $featured = $db->query($sql); 
?> 

<div class="container"> 
    <table class="rwd-table"> 
     <tbody> 
      <br><br> 
      <tr> 
       <?php 
     include_once("../forum/connect.php"); 
     $sql = "SELECT * FROM categories2 ORDER BY category ASC"; 
     $res = mysql_query($sql) or die(mysql_error()); 
     $interviews = ""; 
if(mysql_num_rows($res) > 0){ 
    while($row = mysql_fetch_assoc($res)){ 
     $id = $row['id']; 
     $category = $row['category']; 

     $sql2 = "SELECT * FROM interviews WHERE categories='".$id."'ORDER BY title DESC"; 

あなたはjoincategories2interviewsテーブルとは、一つだけのループを使用することはできません?

また、以下のコード行は2つのループの一部であり、実際は18x18の理由です。

<a href='view_interview.php?cid=".$id."&tid=".$tid."' class='button' target='_blank'> 
+0

どのようにそれらに参加することをお勧めしますか?あなたは自分のphpmyAdminでそれらを結合するか、そのコードを変更して、それらをクエリと結合することを意味します。それらをクエリと結合することを意味する場合は、ソリューションを提供できますか。前もって感謝します。 – Kaloyan

+0

あなたはすでに 'SELECT * FROM interviews WHERE categories = '"。$ id。 "ORDER BY title DESC'と書いています。あなたは 'インタビュー'テーブルを問い合わせるために 'category id'を使用しています。それでは、単一のクエリでそれに加わってみませんか? – Ravi

+0

カテゴリはインタビューテーブルのカラムで、categories2テーブルのカラムIDの外部キーです – Kaloyan

0

ボタン(s)は、各面接の後に行くべきかあなたは面接のための出力を生成するループに2番目のインタビュー「ループ」を移動する必要があります。

featuresクエリは1つの結果にバインドする必要はありません。いくつかのfeature=1レコードがある場合は、それぞれに1つのボタンが表示されます。

ほとんどの場合、18の特集インタビューがあります。

loop through categories[ 
    loop through inteviews[ 
      Generate output for interview 
    ] 
] 

loop through featured interviews [ 
      Generate output for button 
] 
+0

はい、わかりました。私は変更を適用しましたが、今18のボタンのすべてが最後のインタビューに行きましたか? – Kaloyan

+0

特集インタビューは、18回のインタビューのすべてです。しかし、私は今最後のインタビューの下にあるすべてのボタンを取得します。 – Kaloyan

+0

Yoyは、ボタンのコードを、ボタンを表示させたい場所の$インタビューHTML文字列に混ぜなければなりません。 – Juan