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

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

ただいまの
回答率

90.35%

  • PHP

    21275questions

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

  • MySQL

    6147questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

php検索結果の反映ができない

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 246

aikawa-

score 1

はじめて質問をするのでつたない点があるかもしれません。

仕様環境 個人用windows10 php mysql windowspowershell cyberduck putty

phpとmysqlを使ってhttp://php.dori-mu.net/search.html#searchのサイトにある名簿の検索のアプリを制作したのですが検索結果(人名)の表示ができず原因がよくわかりません。

mysqlでデータベースを作成し、テーブルの追加を行い、insertで人物も追加したのでデータベース
にデータは作成できていると思います。データベースの指定ができていないために結果として表示されてないのか(db名は同じにしているのでipアドレスが違う?)?それともコードが不足しているのか?mysqlが起動させた状態でローカル環境を起動させてないから(puttyを使っているためmysqlかローカル環境のどちらかしか起動させれない)?のどれかが原因かと思うのですがどなたかわかる方いたらご教授おねがいします。

正規の表示
イメージ説明
私の表示
イメージ説明

index.html

<head>
<title>PHP SEARCH</title>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="" method="post" action="search.php">
  検索条件を指定してください<br>
  <table width="500" border="1" cellspacing="1" cellpadding="0">
    <tr> 
      <td>名前</td>
      <td> 
        <input type="text" name="name" size="40" maxlength="255">
      </td>
    </tr>
    <tr> 
      <td>住所</td>
      <td> 
        <input type="text" name="address" size="40" maxlength="255">
      </td>
    </tr>
    <tr> 
      <td>性別</td>
      <td> 
        <input type="radio" name="gender" value="男性">
        男性  <br>
        <input type="radio" name="gender" value="女性">
        女性<br>
        <input type="radio" name="gender" value="その他">
        その他</td>
    </tr>
    <tr> 
      <td>スキル</td>
      <td> 
        <input type="checkbox" name="skill[0]" value="ワープロ">
        ワープロ<br>
        <input type="checkbox" name="skill[1]" value="表計算">
        表計算<br>
        <input type="checkbox" name="skill[2]" value="プログラミング">
        プログラミング<br>
        <input type="checkbox" name="skill[3]" value="営業">
        営業<br>
        <input type="checkbox" name="skill[4]" value="音楽">
        音楽</td>
    </tr>
  </table>
  <input type="submit" name="submit" value="検索">
  <input type="reset" value="条件クリア">
</form>
</body>
</html>
コード


search.php

<head>
<title>PHP SEARCH RESULT</title>
<meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
</head>
<body>
<?
$debug = false;

//DB接続
mysql_connect("127.0.0.1","sample","");
mysql_select_db("sample");

if($debug) print_r($HTTP_POST_VARS);

//エラーチェック
 //リクエストメソッドチェック
if($REQUEST_METHOD != "POST") {
 print "Error: invalid method";
 exit();
}

//クエリ生成
$query = "SELECT * FROM search ";

//検索条件生成
 //名前
 if(!empty($name)) {
  $name = addslashes($name);
  $where = "name = '$name' && ";
 }
 //住所
 if(!empty($address)) {
  $address = addslashes($address);
  $where .= "address REGEXP '$address' && ";
 }
 //性別
 if(!empty($gender)) {
  $gender = addslashes($gender);
  $where .= "gender = '$gender' && ";
 }
 //スキル
 if(!empty($skill)) {
  foreach($skill as $value) {
   $value = addslashes($value);
   $temp_where .= "skill REGEXP '$value' || ";
  }
  $temp_where = substr($temp_where, 0, -4);
  $where .= "(". $temp_where. ") && ";
 }
if(!empty($where)) {
 $where = substr($where, 0, -4);
 $where = "WHERE " . $where;
}
$query .= $where;
if($debug) {
 print "<BR><BR>";
 print $query;
}

$result = mysql_query($query);
$num_rows = mysql_num_rows($result);

if($num_rows == 0) $message = "該当するデータはありませんでした";
else $message = $num_rows . "件ヒットしました";
?>
検索結果<br>
<?=$message?>
<table border=1>
<tr><td>名前</td><td>住所</td><td>性別</td><td>スキル</td></tr>
<? while($row = mysql_fetch_assoc($result)): ?>
<tr><td><?=$row[name]?></td><td><?=$row[address]?></td><td><?=$row[gender]?></td><td><?=$row[skill]?></td></tr>
<? endwhile; ?>
</table>
<a href="input.html">再検索</a>
</body>
</html>
コード
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2018/06/29 06:58

    PHP,MySQLなど各バージョンを追記してください。

    キャンセル

  • mts10806

    2018/06/29 07:00

    コードブロック内には実際のコードのみを記載してください。「コード」という文言は本当に入っているのでしょうか?入っていないのであれば、再現確認のためには不要です。また冒頭の```に```html ```PHPなどとすると指定プログラミング言語にあわせて最適にハイライトするようになっているのでご活用ください。

    キャンセル

回答 2

checkベストアンサー

+4

参考にしている記事は プログラミングの世界でいうともはや化石、古文と言えるほど古い です。
もっと新しい記事を探して欲しい。

古いとする根拠

・今どき、文字コードでEUC-JPを指定しない。よほどの理由がない限りUTF-8を使う。
・PHP7の時代、mysql_* 系の関数は廃止されている。(動きません)公式マニュアル
・SQLのエスケープにaddslashesを使っている。公式マニュアル
・$HTTP_POST_VARS は非推奨(公式マニュアル)$HTTP_POST_VARS
・$REQUEST_METHODはかつての古いPHPのバージョンで、かつ register_global = on になっていれば、利用できたが、現在のPHP(といっても結構前)から削除。利用できない。

ちなみに、お使いのPHPのバージョンは?


 良記事を探すためのヒント

・DBアクセスのために PDO または mysqli を使っていること
・プレースホルダを使っていること
・文字コードはUTF-8を使っていること
・前提となるPHPのバージョンを明記していること

※質問文で、英数字は全角でなく半角で書いて欲しい。少なくとも、半角と全角をごちゃ混ぜに書かないで欲しい。プログラマという人種は、嫌悪感を感じます。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+2

Kosuke_Shibuya さんの指摘どおり、参考にしてはいけないモノを参考にしています。

今参考にするならこの辺が定番です。
PHPでデータベースに接続するときのまとめ

追記
これ、php 動いてないんじゃないかなぁ。。。
html のソースコード見て、php のソースコードがそのまま表示されていないか確認してください。

たぶん、<? → <?php とすると、php として動くようになる気がします。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/06/29 08:24

    バージョンや設定にもよりますが<?でもPHPとして動作させられます。

    キャンセル

  • 2018/06/29 09:05

    設定してないんだと思いますよ。
    まぁ、このソース動かすことにあまりメリット無いんで余談ですね。

    表示の確認しましたが、<? の範囲が html としてブラウザに解釈されると、画像のような表現になりました。
    ただ、なぜ2回表示されているのか、不明^^;

    キャンセル

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

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

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

  • PHP

    21275questions

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

  • MySQL

    6147questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。