• ベストアンサー

PHPのifでエラーがある場合とない場合で分岐

phpでエラーがある場合とない場合で表示内容を変えたいです。 フォームを使ってデータベースに登録をするものです。 現状下記のコードでエラーが発生していればエラーメーッセージはきちんと表示されるのですが、エラーがない場合はphp外に記載してある戻るボタンが表示されるだけでメッセージが表示されません。 表示されないだけでデータベースへの登録は正常にできております。 下記のコードも色々と調べすぎてどこを参考にしたものか忘れてしまいました。 エラーがない場合にもちゃんと表示されるようにするにはどのように書くのが正解なのでしょうか? 調べ方が悪いのか調べても解決できるページは見つかりませんでした・・・。 よろしくお願いいたします。 【test.php】 <?php //省略 try { //省略 } catch (PDOException $e) { $errorMessage = $e->getMessage(); ?> <div class="error"><?php echo $errorMessage; ?></div> <?php if (strpos($errorMessage, "$errorMessage") !== false) { ?> <p>エラーのため登録できませんでした。</p> <?php } else { ?> <p>登録が完了しました。</p> <?php } } ?> <a href="URL">戻る</a>

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率72% (424/583)
回答No.3

No.2さんの言うとおりですが、具体的にはこうなります。 <?php //省略 try { //省略 ?> <p>登録が完了しました。</p> <?php } catch (PDOException $e) { $errorMessage = $e->getMessage(); ?> <div class="error"><?php echo $errorMessage; ?></div> <p>エラーのため登録できませんでした。</p> <?php } ?> <a href="URL">戻る</a> あと、  if (strpos($errorMessage, "$errorMessage") !== false) はこの場合、常に成立しますよね?

95959595
質問者

お礼

具体的に書いていただきありがとうございます。 こちらのコードで目的の表示ができました。 if (strpos($errorMessage, "$errorMessage") !== false) については、PHP勉強中のためよくわからないままどこかのサイトをコピペしたものですが、エラーが発生していない場合は「登録できませんでした」の表示はありませんでした。

その他の回答 (2)

noname#262292
noname#262292
回答No.2

正常系のメッセージがcatchの中に含まれているため。

95959595
質問者

お礼

回答いただきありがとうございます。 まだ基礎も分かっていなかったようです。 もう少し勉強します。 ありがとうございました。

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.1

ここを、 if (strpos($errorMessage, "$errorMessage") !== false) { こうしてみてはいかがでしょうか。 if (!empty($errorMessage)) {

95959595
質問者

補足

回答していただきありがとうございます。 変えてみましたが、同じでエラーの時のみメッセージが表示され、正常に登録できた時は何も表示されませんでした...。

関連するQ&A