2016-05-31 4 views
0

私は調査のトラッキングウェブサイトを作成しており、問題があります。最後の7日間に完了したすべてのアンケートを表示したい。私はmysqli_fetch_rowを使用して、検索された行があるかどうか、表示されているかどうかを確認しています。彼らが過去7日間に強制されていない場合は、「最近表示されたアンケートを表示する必要はありません」という言葉を表示します。mysqli_fetch_rowが私のすべての結果を表示できないのはなぜですか?

<?php 
      require('db/connect.php'); 
      if (!isset($_GET['sort'])) { 
       $sort = 'client_id'; 
      } else { 
       $sort = $_GET['sort']; 
      } 
      if ($result = $db->query("SELECT client_id, date_added, client, email, date_sent, date_completed FROM clients NATURAL JOIN surveys WHERE date_completed BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE() ORDER BY $sort")) {//shows surveys completed in the last 7 days 
       if (mysqli_fetch_row($result) == 0) { 
        echo "No recently completed surveys to show."; 
       } else { 
        echo "<table>"; 
        echo "<tr><th><a href='portal.php?sort=client_id'>ID</a></th><th><a href='portal.php?sort=date_added'>Date Added</a></th><th><a href='portal.php?sort=client'>Client</a></th><th><a href='portal.php?sort=email'>Email</a></th><th><a href='portal.php?sort=date_sent'>Sent</a></th><th><a href='portal.php?sort=date_completed'>Completed</a></th>"; 
         $rows = $result->num_rows; 
         for ($num = 0; $num < $rows; ++$num) { 
          $row = $result->fetch_array(MYSQLI_NUM); 
           $client_id = $row[0]; 
           $date = $row[1]; 
           $client = $row[2]; 
           $email = $row[3]; 
           $sent = $row[4]; 
           $completed = $row[5]; 
           echo "<tr>"; 
           echo "<td>$client_id</td>"; 
           echo "<td>$date</td>"; 
           echo "<td>$client</td>"; 
           echo "<td>$email</td>"; 
           echo "<td>$sent</td>"; 
           echo "<td><a href='survey/completed/index.php?id=$client_id'>$completed</a></td>"; 
           echo "</tr>"; 
          } 
          echo "</table>"; 
         } 
        } 
     ?> 

私はmysqli_fetch_rowためのif節を削除すると、それが最近完了調査のすべてを表示しますが、私はそれを残せば、それは常に1を残します。誰も助けることができますか?

+1

なぜあなたは手続き*混合されている*オブジェクト指向スタイル* *と、すなわちあなたの代わりにこのような行数を取得することができます。 'mysqli_fetch_row()'、 '$ result-> fetch_array()'? – Marcus

+1

'if(mysqli_fetch_row($ result)== 0){'最初の行を取り出して、その結果を破棄します。 –

+0

@MarkBakerどのように修正するのか?私は0の結果が返された場合、私は見ていたと思っていた場合は、メッセージを印刷し、そうでない場合は、データを表示します。 – jaydickey

答えて

0

テストを行うときは、最初のテストは破棄されます。

if ($result->num_rows == 0) { 
    echo "No recently completed surveys to show."; 
} else { 
    // .... 
} 

ドキュメント:mysqli_result::$num_rows

+0

ありがとうございます。それがそれでした。 – jaydickey

関連する問題