質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.04%

検索結果の件数表示がうまくいかない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,606
退会済みユーザー

退会済みユーザー

検索結果の件数表示を
「($key+1)」で取得しているのですが
0件表示の場合、1件と表示されてしまいます。
正常に動作しません。$key+1で取得しない方がよいのでしょうか。

<html lang="ja">
<head>
<meta charset="utf-8">
<title>DB連携</title>
</head>
<body>
<?php
require_once "../common_function.php";

try{

   $pdo = new PDO('sqlite:../haken.db'); 

  $sql = 'SELECT '.
' kyujin.id,   jikyu, work_type, gyoukai, keisai_start, keisai_end,  job_type.job_type, area.area'.
' FROM kyujin LEFT JOIN job_type '.
' ON kyujin.job_type=job_type.id '.
' LEFT JOIN area  '.
' ON  kyujin.area = area.id '.
' where kyujin.area = ? AND ( kyujin.job_type=? OR jikyu>=? OR work_type=? OR gyoukai=?)';


  $stmt = $pdo -> prepare($sql);

    // $_POSTから値を取得
  //6個を入れる変数を用意
  //勤務地
$todofuken = $_POST["todofuken1"];

  //職種
$syokushu = $_POST["SHOKUSHU_CD"];

  //時給
$jikyu = $_POST["PAY_START"];

  //フリーキーワード
$keyword = $_POST["FREE_KEYWORD"];

  //働き方
$tokucyo = $_POST["TOKUCYO"];

  //業界
$gyoukai = $_POST["GYOUKAI"];

  //データを?に入れることをbindという bindは危険なコードを無害化する
  $stmt->bindParam(1, $todofuken , PDO::PARAM_INT);
  $stmt->bindParam(2, $syokushu[0] , PDO::PARAM_INT);
  $stmt->bindParam(3, $jikyu , PDO::PARAM_INT);
  $stmt->bindParam(4, $tokucyo , PDO::PARAM_STR);
  $stmt->bindParam(5, $gyoukai , PDO::PARAM_STR);
  $stmt->execute();
  $result = $stmt->fetchAll();


  // $resultは配列の配列
  // fetchallは


 echo '<html lang="ja">';
 echo '<head><meta charset="utf-8"></head>';    
 echo '<body><div align="kensaku">';
    // $valueは配列
  // $keyと$valueは空のものを使用する
     foreach ($result as $key => $value ) {
          hyouji( $value['id'] . ":". $value['job_type']  . "時給:". $value['jikyu']
            . "業界:". $value['gyoukai'] . "地域:" . $value['area']);
    }
echo '</div>';    
echo '<hr>';

echo '<div align="center">検索結果は'.($key+1).'件です。</div>';
echo '<hr>';
 echo '</body>';
 echo '</html>';
//     // 実際に入れたいデータを配列に格納する 
//   $bind = array('オフィスワーク','アパレル',1100);

//   $bind[1]; ➡アパレル

/*    $bind = array();
    $bind[0] = 'オフィスワーク';
    $bind[1] = 'アパレル';
    $bind[2] = '1200';*/

    // pdoのprepareメソッドに引数としてsqlを渡す
   /* $stmt = $pdo->prepare($sql);*/

    // $job_type = '電気';
    // $gyoukai = 'メーカー';
    // $jikyu = 2600;

    //   $jikyu = 1300;
    //   $id = 4;

   /* $stmt->bindParam(1, $jikyu, PDO::PARAM_INT); //文字列型PDO::PARAM_STR
    $stmt->bindParam(2, $id, PDO::PARAM_INT);*/
    // $stmt->bindParam(3, $jikyu, PDO::PARAM_INT);

    // stmtオブジェクトにデータを渡す execueは実行という意味
/*    $stmt->execute();
    $result = $stmt->fetchAll();

    // 
      foreach ($result as $key => $value ) {
          hyouji( $value['id'] . "職種:". $value['job_type']  . "時給:". $value['jikyu']
            . "業界:". $value['gyouka']);
    }


   hyouji('データを表示する');*/

} catch(Exception $e){
    // エラーが発生したら即座にこのブロックに移る
    echo $e->getMessage() . "<br>\n";
    // 'ただの文字列' "改行とか/n 変数とか解釈される"
}





?>

</body>
</html>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

$result = $stmt->fetchAll();

array で結果を取得してるんですから、count($result) を件数とすればいいのでは。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/15 18:07

    うまくいきました。ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る