- ベストアンサー
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>
- みんなの回答 (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) はこの場合、常に成立しますよね?
その他の回答 (2)
正常系のメッセージがcatchの中に含まれているため。
お礼
回答いただきありがとうございます。 まだ基礎も分かっていなかったようです。 もう少し勉強します。 ありがとうございました。
- dell_OK
- ベストアンサー率13% (766/5720)
ここを、 if (strpos($errorMessage, "$errorMessage") !== false) { こうしてみてはいかがでしょうか。 if (!empty($errorMessage)) {
補足
回答していただきありがとうございます。 変えてみましたが、同じでエラーの時のみメッセージが表示され、正常に登録できた時は何も表示されませんでした...。
お礼
具体的に書いていただきありがとうございます。 こちらのコードで目的の表示ができました。 if (strpos($errorMessage, "$errorMessage") !== false) については、PHP勉強中のためよくわからないままどこかのサイトをコピペしたものですが、エラーが発生していない場合は「登録できませんでした」の表示はありませんでした。