• ベストアンサー

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>

  • PHP
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • luka3
  • ベストアンサー率74% (299/401)
回答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)

回答No.2

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

95959595
質問者

お礼

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

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

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

95959595
質問者

補足

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

関連するQ&A

  • エラーの意味がどうしてもわからない(PHP)

    ●質問の主旨 Parse error: syntax error, unexpected 'maker_id' (T_STRING) in C:\xampp\htdocs\shop\input_do.php on line 23 というエラーが出ます。なぜエラーが出るのか分かりません。 エラーを表示させないためには、下記のコードをどのように 書き換えればよいでしょうか?ご存知の方、ご教示願います。 ●質問の補足 1.HTMLフォームinput.php(添付画像)に情報を入力。登録ボタンを押す ↓ 2.受付画面(input_do.php)に遷移 という流れを作りたいのですが、上記のエラーが出ます。 もちろんデータベース(mydb3)やテーブル(my_items)は、 すでにphpmyadminに用意しています。 ●開発環境 windows8 xammp1.8.1 ●参考文献 たにぐちまこと 「よくわかるPHPの教科書」P200 ●コード (input.php) <!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title>商品登録</title> </head> <body> <div id="wrap"> <div id="head"> <h1>トップページ</h1> </div> <div id="content"> <p style="margin-top: 20px"> <?php mysql_connect('localhost', 'root','') or die(mysql_eror()); mysql_select_db('mydb3') or die(mysql_error()); mysql_query('SET NAMES UTF8'); $sql = sprintf('INSERT INTO my_items SET maker_id=%d, item_name="%s", price=%d, keyword="%s", mysql_real_escape_string($_POST['maker_id']), mysql_real_escape_string($_POST['item_name']), mysql_real_escape_string($_POST['price']), mysql_real_escape_string($_POST['keyword']) ); mysql_query($sql) or die(mysql_error()); ?> </p> </div> <p>商品を登録しました</p> <div id="foot"> <p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p> </div> </div> </body> </html> (input_do.php) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title>商品登録</title> </head> <body> <div id="wrap"> <div id="head"> <h1>商品登録</h1> </div> <div id="content"> <p>登録する商品の情報を記入してください。</p> <form id="frmInput" name="frmInput" method="post" action="input_do.php"> <dl> <dt> <label for="maker_id">メーカーID</label> </dt> <dd> <input name="maker_id" type="text" id="maker_id" size="10" maxlength="10" /> </dd> <dt> <label for="item_name">商品名</label> </dt> <dd> <input name="item_name" type="text" id="item_name" size="35" maxlength="255" /> </dd> <dt> <label for="price">価格</label> </dt> <dd> <input name="price" type="text" id="price" size="10" maxlength="10" /> 円</dd> <dt> <label for="keyword">キーワード</label> </dt> <dd> <input name="keyword" type="text" id="keyword" size="50" maxlength="255" /> </dd> <input type="submit" value="登録する" /> </form> </div> <div id="foot"> <p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p> </div> </div> </body> </html>

    • ベストアンサー
    • PHP
  • php 何故、エラー???

    いつもお世話になりありがとうございます。 標記の件。 $subject = "お仕事に関するお問い合わせ"; がエラーになってしまいます。 PHP Syntax Check: Parse error: syntax error, unexpected variable "$subject" in your code on line 2 全体のコードは下記です。 <? php $subject = "お仕事に関するお問い合わせ"; $body = "お見積の件で、連絡をしました。"; ?> <!doctype html > <html > <head > <meta charset =" utf-8"> <title>お問い合わせ</title> </head> <body> <h1><? php echo $subject ?></h1> <p><? php echo $body ?></p> </body > </html > どうして2行目がエラーになるのでしょうか? どうか教えてください。 ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • PHPの条件文について

    お世話になります。 PHPの条件文で データベースからの カラム(db_url)にデータが存在する場合は <div>URLデータはhttp......です</div>  を表示させて 存在しない場合は なにも表示させないようにしたいのですが PHPやjavascript で出来ると伺ったのですが どちらを用いてどのようにすればいいのでしょうか 御教示頂ければ幸いでございます。

    • ベストアンサー
    • PHP
  • PHPのエラー表示について

    PHPを勉強し始めたばかりの初心者です。 開発環境はDreamweaverとwebmatrixです。 出力結果をブラウザで確認しているのですが、 エラーの詳細が表示されず HTTPステータスコード(404 Not Foundなど)しか返ってきません。 php.iniは、ネットで調べて以下のように設定しました。 display_errors = On error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT でも、表示が変わりません。 phpinfo();の結果表示内のLoaded Configuration Fileの項目は C:\xampp\php\php.iniですので、それを編集しています。 更新されてないのかな?と思ってPCを再起動しましたが変わりませんでした。 ご存知の方がいらっしゃいましたら、ご教示ください。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • phpでhtmlを取り出すには

    こんにちは。phpを勉強中なのですが質問があります。 phpでhtmlソースを取り出したいのですが、htmlソース(内容はdiv~/divで囲んだソース)はどのように保存すれば良いでしょうか? htmlソースなのですが大量にありまして、そのソースごと並び替えをしてhtmlを表示したいのですが・・。 今自分で作ってみたのは、単純にテキストファイルにhtmlを書いて、phpで並び替え、テキストファイル読み込み表示するという方法なのですが、とりあえずは上手くできたのですが、この方法ですとテキストファイルが大量にできてしまいます。 初心者のサイトではデータはmysqlのデータベースを使う・・とあったので同時にmysqlを少しさわってみたのですが、例えばデータベースの値の所にhtmlのソースを放り込むという事なのでしょうか? 作りたいのはゲームのレビューサイトなのですが可能であれば日付順などボタン一つで並び変えたいのです。(div~/divで囲んだソースごと並び変えたい。div~/divの中には自分のレビューやら画像が入ります) htmlとphpを覚え始めたばかりで、よく分からないのですが通常みなさんはhtmlファイルは何に格納するのでしょうか?

    • ベストアンサー
    • PHP
  • PHPで入力した内容をMYSQLに登録するとエラーが表示。

    PHPで入力した内容をMYSQLに登録するとエラーが表示。 PHP側のフォームにパソコンと入力しMYSQL側に登録すると、 DB Error unknown errorと表示されていますが、 MYSQLのデータベースの中を確認すると、パソコンと登録されています。 PHPとMYSQLはsjisで設定します。 このエラーの回避は出来るのでしょうか?ご教授お願いします。

    • 締切済み
    • PHP
  • strposでEmptyのエラーが。引数には何を?

    PHPのプログラムを書いているのですが、以下のエラーが出てしまい困っています。 Warning: strpos() [function.strpos]: Empty delimiter in /xxx/hoge.php on line 22 22行目には以下のコードがあります。 if( strpos( $v['email'] , $record ) !== false ){ $record にはこちらです。 $record = trim( fgets( $r_fp , 1024 ) ); 調べてみますと、strposの$recordの引数が空?のためのエラーではないかという記事があったのですが、この場合には何を入れればよいのでしょうか?引数に何かを定義しないとだめですか? ちなみに、これは重複アドレスを弾く記述を行っている一部となります。 何かアドバイスありましたらお願いいたします。 宜しくお願いします!m(_ _)m

    • ベストアンサー
    • PHP
  • PHPエラーが出て困ってます

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>通販サイト</title> <link href="common/css/base.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="common/js/base.js"></script> </head> <body onload="MM_preloadImages('common/img/bt1_f2.gif','common/img/bt2_f2.gif','common/img/bt3_f2.gif','common/img/bt3_2_f2.gif','common/img/bt_login_f2.gif')"> <?php // データベースに接続する処理。 // 環境に応じて以下の変数を書き換えます。 $host = "localhost"; // 接続先ホスト名 $user = "root"; // 接続ユーザ名 $pass = ""; // 接続パスワード $dbname = "ec"; // データベース名 if( !$conn = mysql_connect( $host, $user, $pass ) ) { die("MySQL 接続エラー"); } mysql_select_db( $dbname ); mysql_set_charset("utf8"); // 文字コードを指定します。 ?> <div id="wrap"> <div id="contents"> <!-- 右コンテンツ --> <div id="rightbox"> <div id="main"> <div id="main2"> <!-- ↑↑タイトル以外共通部分↑↑ --> <?php $sql = "select * form m_items where item_code=" .$_GET["code"]; $res = mysql_query($sql); →ココ if( $sql = mysql_fetch_assoc($item["item_code"]) ) { ?> <form name="detail_form" action="cart.php" method="get"> <input type="hidden" name="cmd" value="add_cart"/> <input type="hidden" name="code" value="<?php print( $item["item_code"] ); ?>"/> <!-- メイン部分 各ページごとに作成--> <div id="mainbox" class="clearfix"> <h2>商品詳細</h2> <div class="list clearfix"> <h3><?php print( $item["item_name"] ); ?></h3> <p class="photo"><img src="img/<?php print( $item["image"] ); ?>" width="400" height="400"/></p> <p class="text"><?php print( $item["detail"] ); ?></p> <div class="buy"> <p class="price">価格:<strong>&yen;<?php print( $item["price"] ); ?></strong></p> 個数: <select name="num"> <option value="">1</option> <option value="">2</option> <option value="">3</option> <option value="">4</option> </select> <input type="button" value="カートにいれる" onclick="location.href='cart.php'"/> <input type="button" value="前の画面へ戻る" onclick="history.back()"/> </div> </div> </div> </form> <!-- /メイン部分 各ページごとに作成--> <?php } →ココ mysql_free_result($item["code"]); ?> Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in 上のIF文 Warning: mysql_free_result() expects parameter 1 to be resource, null given in mysql_free_result に上記のようなエラーが出ています。 どう直したらいいのかわかりません。 宜しくお願い致します。

    • 締切済み
    • PHP
  • PHPとデータベースの接続ができません

    開発環境はXamppで、OSはWindowsです。 データベースを使いたいと考えていますが、初心者で非常に困っています。 <?php $dsn = 'mysql:dbname=testdb1; host=127.0.0.1'; $usr = 'ユーザー名'; $passwd = 'パスワード'; try { $db = new PDO($dsn, $usr, $passwd); print '接続に成功しました'; $db = NULL; } catch (PDOException $e) { die("接続エラー:{$e->getMessage()}"); } 上記のファイル、connect.phpを実行しても、 Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\connect.php on line 3 と表示されてしまいます。 構文エラーだと思い、自分で出来る限りなおしたのですが解決できません。 どなたかアドバイスよろしくお願いいたします。

  • PHPでFetalなエラーが発生した場合

    PHPでFetalなエラーが発生した場合 に、ApacheのErrorDocument 500で指定したメッセージを表示させたいのですが、上手くいきません。 ■Apacheの設定 ErrorDocument 500 "The server made a boo boo." ■PHPの設定 error_reporting(6135); // 0にしてもダメでした ini_set('display_errors', '1'); // 0にしてもダメでした ■PHPのコード <?php throw new Excpetopn('err!'); ?> ブラウザからアクセスすると、httpレスポンスコードは500が返ってきています。 ini_set('display_errors', '1'); にすると、 Fatal error: Uncaught exception 'Exception' with message が表示されます。 逆に ini_set('display_errors', '0'); にすると、 何も表示されません。 どうしたら、ErrorDocument 500で設定した"The server made a boo boo."が表示されるようになりますでしょ うか。。 そもそも表示できないのでは?と思いはじめてますが。。 知っている方いましたら、ぜひともご教授下さい。 よろしくおねがいいたします。 Apache 2.2.3 PHP5.3.0

    • ベストアンサー
    • PHP

専門家に質問してみよう