🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

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

Q&A

解決済

2回答

1238閲覧

phpで、表示がうまくいきません。。

rink

総合スコア80

PHP

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

0グッド

0クリップ

投稿2019/09/10 20:56

コードは単純で、idを打ち込んだら、登録してあるデータベースからidにある人の情報を取り出すというもので、動くには動きます。
idにないものを打ち込んだら、
this id is not exist
と表示されるようになっています。
ただ、画面をはじめに表示した時点で、(そのページに入った時点で)this id is not existと表示されるのは違和感なので、違う表示がされるように

php

1<?php 2 if($_SERVER['REQUEST_METHOD'] !== 'GET') 3 { 4 ?> 5 <p>please input id</p>

としたのですが、依然とページに入った時点で
this id is not exist
と表示されてしまいます。以下がコードです。

php

1<?php 2 3 $id = ''; 4 5 if(isset($_GET['id'])) 6 { 7 $id = (int)$_GET['id']; 8 } 9 10 $dsn = 'mysql:dbname=sample;host=localhost;charset=utf8'; 11 $user = 'root'; 12 $password = ''; 13 14 try 15 { 16 $dbh = new PDO($dsn, $user, $password); 17 $dbh -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 18 $sql = <<<SQL 19 SELECT user.name, user.age, club.club_name, club.count, club.overview 20 FROM user 21 JOIN club ON user.club_id = club.club_id 22 WHERE user.id = :id 23 LIMIT 1 24 SQL; 25 $stmt = $dbh -> prepare($sql); 26 $stmt -> bindValue(':id', $id, PDO::PARAM_INT); 27 $stmt -> execute(); 28 $row = $stmt -> fetch(PDO::FETCH_ASSOC); 29 }catch (PDOException $e) 30 { 31 echo ($e -> getMessage()); 32 die(); 33 } 34 35?> 36 37<html> 38 <head> 39 <meta charset = utf-8> 40 <style type = 'text/css'> 41 .search{float:right;} 42 </style> 43 </head> 44 <body> 45 <div class = 'search'> 46 <p>input the member id</p> 47 <form action = '' method = 'GET'> 48 <input type = 'text' name = 'id'> 49 <input type = 'submit' value = '確認する'> 50 </form> 51 </div> 52 <h1>member data</h1> 53 <?php 54 if($_SERVER['REQUEST_METHOD'] !== 'GET') 55 { 56 ?> 57 <p>please input id</p> 58 <?php 59 }elseif($row === FALSE) 60 { 61 ?> 62 <p>this id is not exist</p> 63 <?php 64 }else 65 { 66 ?> 67 <table boader = "1"> 68 <tr> 69 <th>name</th> 70 <th>age</th> 71 <th>club_name</th> 72 <th>count</th> 73 <th>overview</th> 74 </tr> 75 <tr> 76 <td><?php echo $row['name']; ?></td> 77 <td><?php echo $row['age']; ?></td> 78 <td><?php echo $row['club_name']; ?></td> 79 <td><?php echo $row['count']; ?></td> 80 <td><?php echo nl2br($row['overview']); ?></td> 81 </tr> 82 </table> 83 <?php 84 } 85 ?> 86 </body> 87</html> 88

どなたかよろしくお願いします。

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

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

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

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

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

m.ts10806

2019/09/10 22:48 編集

インデントもそのまま手元のコードのままですか?だとしたら構文エラーになりそうですけども
rink

2019/09/11 07:45

ご回答ありがとうございます。
guest

回答2

0

コードそのままだと構文的にマズいです。

php

1<?php 2$test = <<<TEST 3 TEST;

ヒアドキュメント

非常に重要なことですが、終端 ID がある行には、セミコロン (;) 以外の他の文字が含まれていてはならないことに注意しましょう。 これは、特に ID はインデントしてはならないということ、 セミコロンの前に空白やタブを付けてはいけないことを意味します。 終端 ID の前の最初の文字は、使用するオペレーティングシステムで定義された 改行である必要があることにも注意を要します。 これは、例えば、Macintoshでは \r となります。 最後の区切り文字の後にもまた、改行を入れる必要があります。

php

1 $sql = <<<SQL 2 SELECT user.name, user.age, club.club_name, club.count, club.overview 3 FROM user 4 JOIN club ON user.club_id = club.club_id 5 WHERE user.id = :id 6 LIMIT 1 7 SQL; //←ここ 8

まずそこを修正してから確認してみてはどうでしょうか。

投稿2019/09/11 00:36

編集2019/09/11 00:38
m.ts10806

総合スコア80875

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

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

rink

2019/09/11 07:47

ご回答ありがとうございます。動くには動くので、構文は大丈夫だと思ってました。
m.ts10806

2019/09/11 07:51

「動けばいい」わけではありませんからね。組方次第ではエラーになります。 提示されたコードのシンタックスハイライト見てみるとおかしいと感じるはずです。問題のあたりから真っ赤。
rink

2019/09/11 08:11

ご回答ありがとうございました! 出来ました!
guest

0

ベストアンサー

ただ、画面をはじめに表示した時点で、(そのページに入った時点で)this id is not existと表示されるのは違和感なので、違う表示がされるように

初回の「id が与えられてないとき」と id が与えられたが「id が検索結果としてないとき」を条件として分岐してあげると良いです。

投稿2019/09/10 23:06

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

rink

2019/09/11 07:48

ご回答ありがとうございます。 初回の「id が与えられてないとき」に対応するために <?php if($_SERVER['REQUEST_METHOD'] !== 'GET') { ?> <p>please input id</p> としたんですけど、何がダメかわかりませんでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/11 07:52

初回の「id が与えられてないとき」と id が与えられたが「id が検索結果としてないとき」を条件として分岐できてません。
rink

2019/09/11 08:11

ご回答ありがとうございました! 出来ました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問