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

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

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1236閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/10/15 08:46

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

php

1<html lang="ja"> 2<head> 3<meta charset="utf-8"> 4<title>DB連携</title> 5</head> 6<body> 7<?php 8require_once "../common_function.php"; 9 10try{ 11 12 $pdo = new PDO('sqlite:../haken.db'); 13 14 $sql = 'SELECT '. 15' kyujin.id, jikyu, work_type, gyoukai, keisai_start, keisai_end, job_type.job_type, area.area'. 16' FROM kyujin LEFT JOIN job_type '. 17' ON kyujin.job_type=job_type.id '. 18' LEFT JOIN area '. 19' ON kyujin.area = area.id '. 20' where kyujin.area = ? AND ( kyujin.job_type=? OR jikyu>=? OR work_type=? OR gyoukai=?)'; 21 22 23 $stmt = $pdo -> prepare($sql); 24 25 // $_POSTから値を取得 26 //6個を入れる変数を用意 27 //勤務地 28$todofuken = $_POST["todofuken1"]; 29 30 //職種 31$syokushu = $_POST["SHOKUSHU_CD"]; 32 33 //時給 34$jikyu = $_POST["PAY_START"]; 35 36 //フリーキーワード 37$keyword = $_POST["FREE_KEYWORD"]; 38 39 //働き方 40$tokucyo = $_POST["TOKUCYO"]; 41 42 //業界 43$gyoukai = $_POST["GYOUKAI"]; 44 45 //データを?に入れることをbindという bindは危険なコードを無害化する 46 $stmt->bindParam(1, $todofuken , PDO::PARAM_INT); 47 $stmt->bindParam(2, $syokushu[0] , PDO::PARAM_INT); 48 $stmt->bindParam(3, $jikyu , PDO::PARAM_INT); 49 $stmt->bindParam(4, $tokucyo , PDO::PARAM_STR); 50 $stmt->bindParam(5, $gyoukai , PDO::PARAM_STR); 51 $stmt->execute(); 52 $result = $stmt->fetchAll(); 53 54 55 // $resultは配列の配列 56 // fetchallは 57 58 59 echo '<html lang="ja">'; 60 echo '<head><meta charset="utf-8"></head>'; 61 echo '<body><div align="kensaku">'; 62 // $valueは配列 63 // $keyと$valueは空のものを使用する 64 foreach ($result as $key => $value ) { 65 hyouji( $value['id'] . ":". $value['job_type'] . "時給:". $value['jikyu'] 66 . "業界:". $value['gyoukai'] . "地域:" . $value['area']); 67 } 68echo '</div>'; 69echo '<hr>'; 70 71echo '<div align="center">検索結果は'.($key+1).'件です。</div>'; 72echo '<hr>'; 73 echo '</body>'; 74 echo '</html>'; 75// // 実際に入れたいデータを配列に格納する 76// $bind = array('オフィスワーク','アパレル',1100); 77 78// $bind[1]; ➡アパレル 79 80/* $bind = array(); 81 $bind[0] = 'オフィスワーク'; 82 $bind[1] = 'アパレル'; 83 $bind[2] = '1200';*/ 84 85 // pdoのprepareメソッドに引数としてsqlを渡す 86 /* $stmt = $pdo->prepare($sql);*/ 87 88 // $job_type = '電気'; 89 // $gyoukai = 'メーカー'; 90 // $jikyu = 2600; 91 92 // $jikyu = 1300; 93 // $id = 4; 94 95 /* $stmt->bindParam(1, $jikyu, PDO::PARAM_INT); //文字列型PDO::PARAM_STR 96 $stmt->bindParam(2, $id, PDO::PARAM_INT);*/ 97 // $stmt->bindParam(3, $jikyu, PDO::PARAM_INT); 98 99 // stmtオブジェクトにデータを渡す execueは実行という意味 100/* $stmt->execute(); 101 $result = $stmt->fetchAll(); 102 103 // 104 foreach ($result as $key => $value ) { 105 hyouji( $value['id'] . "職種:". $value['job_type'] . "時給:". $value['jikyu'] 106 . "業界:". $value['gyouka']); 107 } 108 109 110 hyouji('データを表示する');*/ 111 112} catch(Exception $e){ 113 // エラーが発生したら即座にこのブロックに移る 114 echo $e->getMessage() . "<br>\n"; 115 // 'ただの文字列' "改行とか/n 変数とか解釈される" 116} 117 118 119 120 121 122?> 123 124</body> 125</html>

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

$result = $stmt->fetchAll();

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

投稿2017/10/15 08:55

SugiTK

総合スコア495

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/15 09:07

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問