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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

223閲覧

検索フォーム 結果表示

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/08/27 04:11

編集2018/08/27 04:33

検索フォームサイトを作成しています。

セレクトボックスの選択状況によって、実行するSQL文を分けるという処理をしたいです。
php部分で、場合分けを行っているのですが、
($KEY1 == "0")と($KEY2 == "0")を条件に指定した部分のSQL文の結果が表示されません。
結果を表示するのは、html内のphp部分です。

原因は、どこがどこにあるか分からないので、教えていただきたいです。

php

1<?php 2error_reporting(E_ALL & ~ E_DEPRECATED & ~ E_USER_DEPRECATED & ~ E_NOTICE); 3 4 5 $P_IP = "xxxx"; 6 $P_PORT = "xxxx"; 7 $P_DBNAME = "xxx"; 8 $P_DBUSER = "xxx"; 9 $P_DBPASS = "xxx"; 10 11header('Content-Type: text/html; charset=utf8'); 12 13 // 各種パラメータを指定して接続 14$connect = "host=$P_IP port=$P_PORT dbname=$P_DBNAME user=$P_DBUSER password=$P_DBPASS"; 15 16if (! $con = pg_connect( $connect ) ){ 17 die( 'Postgres接続失敗' ); 18 } 19 20 // フォームへの入力値を受けとる 21session_start(); 22$_SESSION['word1'] = $_GET['word1']; 23$_SESSION['word2'] = $_GET['word2']; 24$_SESSION['word3'] = $_GET['word3']; 25 26$KEY1 = $_SESSION['word1']; 27$KEY2 = $_SESSION['word2']; 28$KEY3 = $_SESSION['word3']; 29 30 31if (!isset($_GET['page'])) { 32 $page = 1; // 最初のアクセス 33} else { 34 $page = intval($_GET['page']); // ページ指定でのアクセス 35 if ($page == 0 ) { die('page no error');} 36} 37 38print $page; 39 40 41session_start(); 42 $_SESSION['page'] =$page; 43session_start(); 44 $_SESSION['page'] =$page; 45 46 47$pagehead = "<B>全$tcnt 件"; 48$offset = ($page-1) * 5; 49 50 51 52 53print $offset; 54 55if ($KEY1 == "0" && $KEY2 == "0"){ 56 print "ワードのみ指定の検索"; 57 $test ="test1"; 58 $sql = "SELECT * FROM theme WHERE(aaa LIKE '%{$KEY3}%') OR (bbb LIKE '%{$KEY3}%')limit 5 offset $offset"; 59}else if($KEY1 == "0"){ 60 print "A種別のみの指定"; 61 $test ="test2"; 62 $sql = "SELECT * FROM theme WHERE (ccc LIKE '%{$KEY1}%') and (aaa LIKE '%{$KEY3}%' or bbb LIKE '%{$KEY3}%') limit 5 offset $offset"; 63}else if($KEY2 == "0"){ 64 print "B種別のみの指定"; 65 $test ="test3"; 66 $sql = "SELECT * FROM theme WHERE (ddd LIKE '%{$KEY2}%') and (aaa LIKE '%{$KEY3}%' or bbb LIKE '%{$KEY3}%') limit 5 offset $offset"; 67}else{ 68 print "全て指定で検索"; 69 $test ="test4"; 70 $sql ="SELECT * FROM theme WHERE (ccc LIKE '%{$KEY1}%' and ddd LIKE '%{$KEY2}%') and (aaa LIKE '%{$KEY3}%' or bbb LIKE '%{$KEY3}%') limit 5 offset $offset"; 71} 72 73$result = pg_query($con,$sql); 74 75 76$total = pg_query($con, "SELECT * FROM theme order by den_num limit 10 offset $offset"); 77$totalPage = pg_num_rows($total); 78 79 80//登録されている全行数を取得 81 82$totalpage = pg_query($con, "SELECT * FROM theme"); 83$total_num = pg_num_rows($totalpage); 84 85 86//表示されている行数を取得 87 88$result_sum = pg_num_rows($result); 89$totalpage = ceil($result_sum/5) * $page; 90 91 92 93//各種エラーの設定 94 95if (!$result) { 96 die('クエリー1が失敗しました。'.pg_last_error()); 97} 98?>

html

1<html> 2<head> 3 <meta charset="UTF-8"> 4 <link rel="stylesheet" type="text/css" href="style.css"> 5<title>FAQ</title> 6</head> 7<body> 8<div class="page_title"> 9 10 <p class="title_p">FAQサイト</p> 11 <a href="xxx.php" class="top_retern">xxx</a> 12 <a href="xxx.php" class="top_retern">xxx</a> 13</div> 14 15 16 17<div class="siborikomi"> 18 <div class="title"> 19 <h3 class="title_s">検索</h3> 20 21 </div> 22<div class="search1"> 23 <form method="get" action='<?= $_SERVER["PHP_SELF"] ?>'> 24 <p>xxx</p> 25 <select class="soft_select" name="word1"> 26          <option value="0" name="word1" >0.xxx</option> 27 <option value="1" name="word1" >1.xxx</option> 28 <option value="2" name="word1" > 2.xxx</option> 29 <option value="3" name="word1" >3.xxx</option> 30           <option value="3" name="word1" >4.xxx</option> 31            32 </select> 33  <p>xxx</p> 34  <select class="type_select" name="word2"> 35 <option value="0" name="word2" >0.xxx</option> 36 <option value="1" name="word2" >1.xxx</option> 37 <option value="2" name="word2" > 2.xxx</option> 38 <option value="3" name="word2" >3.xxx</option> 39 <option value="4" name="word2" >4.xxx</option> 40 <option value="5" name="word2" >5.xxx</option> 41  </select> 42 <p>ワード</p> 43 44 45 46 <input type="text" name="word3" id="" value="<?php print $KEY3 ?>"> 47 <input type="submit" value="検索"> 48    49 <p>件/全<?php print $total_num ?></p> 50 <p><a class="botton" href="xxx.php?page=<?php echo ($page + 1); ?>&word1=<?php echo $KEY1;?>&word2=<?php echo $KEY2;?>&word3=<?php echo $KEY3;?>">next</a></p> 51 <p><a class="botton" href="userxxx.php?page=<?php echo ($page - 1); ?>&word1=<?php echo $KEY1;?>&word2=<?php echo $KEY2;?>&word3=<?php echo $KEY3;?>">back</a></p> 52 </form> 53 </div> 54 55 56 57<table> 58 <tr> 59 <th class="den_num"></th> 60 <th class="type_q">xxx</th> 61 <th class="contents">xxx</th> 62 <th class="question">xxx</th> 63 <th class="answer">xxx</th> 64 </tr> 65 66 67 68 <?php 69 if 70 ($KEY3==""){ 71 for ($i = 0 ; $i < pg_num_rows($total) ; $i++){ 72 $rows = pg_fetch_array($total, NULL, PGSQL_ASSOC); 73 $_GET['xxx'] = $rows['xxxx']; 74 $denden = $_GET['xxx']; 75 print '<tr>'; 76 print'<th class="xxx"><a href="userxxx.php?link='.($rows['xxx']).'&get='.$denden.'" class="m" >'.($rows['xxx']).'</a></th>'; 77 print'<th class="type_q">'.($rows['xxx']).'</th>'; 78 print'<th class="contents">'.($rows['xxx']).'</th>'; 79 print'<th class="question">'.($rows['xxx']).'</th>'; 80 print'<th>'.($rows['xxx']).'</th>'; 81 print '</tr>'; 82 } 83 }else{ 84 for ($i = 0 ; $i < pg_num_rows($result) ; $i++){ 85 $rows = pg_fetch_array($result, NULL, PGSQL_ASSOC); 86 print '<tr>'; 87 print'<th class="den_num"><a href="xxx.php?link='.($rows['xxx']).'&get='.$denden.'" class="m" >'.($rows['xxx']).'</a></th>'; 88 print'<th class="type_q">'.($rows['xxx']).'</th>'; 89 print'<th class="contents">'.($rows['xxx']).'</th>'; 90 print'<th class="question">'.($rows['xxx']).'</th>'; 91 print'<th>'.($rows['xxx']).'</th>'; 92 print '</tr>'; 93 }} 94 95?> 96 97 </table> 98 </div> 99 100 101</body> 102</html> 103 104

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

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

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

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

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

m.ts10806

2018/08/27 04:13

selectタブというのはありませんよ。語句は正しくしていただかないとあらぬ誤解を与えます。
退会済みユーザー

退会済みユーザー

2018/08/27 04:15

修正したしました。ご指摘ありがとうございます。
m.ts10806

2018/08/27 04:15

デバッグはされましたか。変数の値がどこまで想定通りに渡っているか確認してください。
dit.

2018/08/27 04:25

<p1>とは?あと、インデントを全角スペースで開けるのはやめましょう…(半角で開けててもズレてるところありますし)
退会済みユーザー

退会済みユーザー

2018/08/27 04:29

print $KEY1,print $KEY2,print $KEY3を行いました。検索ボタンを押した際、$KEY1,$KEY2,$KEY3の部分はセレクトボックスで選択したものが画面に表示されています。
m.ts10806

2018/08/27 04:30

想定したifに入っているかとか、SQLが正しいものかとか
m.ts10806

2018/08/27 04:33

dit.さん どこかと思ったらHTML・・・。これはブラウザによっては表示崩れそう。
退会済みユーザー

退会済みユーザー

2018/08/27 04:37

想定したifで→print "B種別のみの指定";などの文章部分はifの条件通りに適切に表示されています。また、ifで場合分けせず、単独のSQL分を$resultに代入すると、結果は表示されるので、SQL部分に問題はないと思われるのですが。
退会済みユーザー

退会済みユーザー

2018/08/27 04:38

<p1>はミスだったので、修正しました。
dit.

2018/08/27 04:41 編集

mts10806さん 指摘がわかりにくかったですね、反省。質問者さんが気づいて直してくれたようなのでよかったです。 質問者さん 見出しなのであればHタグが適当かと思います(そこまで重要な見出しではないのでpでもいいと思います)。あと、直接的な原因ではないですがword1の4.xxxのvalueが3になってます。
guest

回答1

0

まずはselectの選択値に"0"をもってくるのはやめたほうがいい
厳密なチェックをすればなんとかなりますが
質問者さんのスキルを想像すると0の取扱を理解していないように見えます。
selectのデータは1から始めるようにしてください

その他、基礎ができてない部分が大量にあります

  • $_SERVER["PHP_SELF"]はNG→$_SERVER["SCRIPT_NAME"]に
  • optionにnameをつけてる→はずす
  • print $KEY3→どこから$KEY3はきている?最低限htmlspecialcharsすべし
  • &word3=<?php echo $KEY3;?>→urlencodeしてください
  • aaa LIKE '%{$KEY3}%') →prepareで処理してください

この調子で書いても穴だらけでバグったときにどこが原因か特定できない
と思うのでもう少し簡単な処理から始めたほうがよいように見受けられます

投稿2018/08/27 04:43

yambejp

総合スコア114839

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問