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

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

ただいまの
回答率

90.53%

  • PHP

    23553questions

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

php_エラーメッセージの出力

受付中

回答 1

投稿

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

pomi

score 2

名前欄”name”に入力がなかった場合、
”ユーザー名を入力してください”
エラーメッセージを出力させたいと思っています。

if($statement->execute())
の条件文にelseを挿入。

ちなみにその状態でのエラー文は下記の状態になっています
Notice: Undefined variable: rows in /Applications/XAMPP/xamppfiles/htdocs/phpkiso/DB/DB_search.php on line 88

Warning: Invalid argument supplied for foreach() in /Applications/XAMPP/xamppfiles/htdocs/phpkiso/DB/DB_search.php on line 88

恐らく名前欄"name"がnullであっても,
このelseフラグには入ってないと思われます。

飛んでエラー文は88行、
<?php foreach($rows as $row){ ?>

試行錯誤したのですが原因がわからず、
質問作せて頂きました。

よろしくお願い致します。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>顧客管理*検索</title>
    <link rel="stylesheet" href="DB_color.css" class="e">
    <form action="DB_top.php" method="post">  
  </head>
  <body background="back.gif" bgcolor="#ccc" class="a">
    <h1>顧客情報 検索画面</h1>
   <?php      
          $hurigana = $_POST['hurigana'];
          $name = $_POST['name'];
          $sex = $_POST['sex'];
          $post1 = $_POST['post1'];
          $post2 = $_POST['post2'];
          $adress = $_POST['adress'];
          $tell = $_POST['tell'];
          $email = $_POST['email'];
          $birth = $_POST['birth'];
          $birth_m = $_POST['birth_m'];
          $birth_d = $_POST['birth_d'];
          $hour = $_POST['hour'];
          $minute = $_POST['minute'];
          $year1 = $_POST['year1'];
          $year2 = $_POST['year2'];
          $year3 = $_POST['year3'];
          $year01 = $_POST['year01'];
          $year02 = $_POST['year02'];
          $year03 = $_POST['year03'];
          $syoukai = $_POST['syoukai'];

      $dsn = 'mysql:host=localhost;dbname=customer;charset=utf8';
      $user = 'root';
      $password = '';

      $dbh = new PDO($dsn, $user, $password);
      $dbh->query('SET NAMES utf8');
      $sqlcmd = "SELECT * FROM `customer_member`
                WHERE name like '%$name%'
                and hurigana like '%$hurigana%'
                and sex like '%$sex%'
                and post1 like '%$post1%'
                and post2 like '%$post2%'
                and adress like '%$adress%'
                and tell like '%$tell%'
                and email like '%$email%'
                and birth like '%$birth%'
                and birth_m like '%$birth_m%'
                and birth_d like '%$birth_d%'
                and hour like '%$hour%'
                and minute like '%$minute%'
                and year1 like '%$year1%'
                and year2 like '%$year2%'
                and year3 like '%$year3%'
                and year01 like '%$year01%'
                and year02 like '%$year02%'
                and year03 like '%$year03%'
                and syoukai like '%$syoukai%'";

      $statement = $dbh->prepare($sqlcmd);
      $statement->execute();
      $rows;

      if($statement->execute())
        {
          $row_count = $statement->rowCount();
//          if(!($row_count))
          if($row_count == 0)
          {
//                    if(empty($row['name']));
//                    {
                      $ErrorTest = "ユーザー名を入力してください";
//                    }
          }

           while($row = $statement->fetch())
            {
               $rows[] = $row;
            }
        }
        else
       {
        //仮定する
        $ErrorTest ="";
        //$_POSTの中がnullの場合
        if(!empty($row))
        {
          if(empty($row['name']));
          {
            $ErrorTest = "ユーザー名を入力してください";
          }
        }
        $dbh = null;
        }
      ?>
        <input type="button" onclick="location.href='DB_top.php'" value="トップ戻る" name="botton1 "class="main">      
        <?php foreach($rows as $row){  ?>
          <fieldset>
          <table id="main-category">   
            <tr>    
                <th>フリガナ</th>
                <td><input type="text" value="<?php print $row['hurigana']; ?>" class="d-na"></td>
            </tr>   
            <tr>
              <th>名       前</th>
                <td><input type="text" value="<?php print $row['name']; ?>" class="d-na"></td>
            </tr>
            <tr>
              <th>性別</th>
                <td><input type="text" value="<?php print $row['sex']; ?>" class="d-na"></td>
            </tr>
            <tr> 
                <th>郵便番号</th>
                <td>  
                    <input type="text" value="<?php print $row['post1']; ?>" class="d-i">-
                    <input type="text" value="<?php print $row['post2']; ?>" class="d-year">
                </td>    
            </tr>   
            <tr>
              <th>住所</th>
                <td><input type="text" value="<?php print $row['adress']; ?>" class="d-ad"></td>
            </tr>   
            <tr>
                <th>電話番号</th>
                <td><input type="text" value="<?php echo $row['tell']; ?>" class="d-na"></td>
            </tr> 
            <tr>
                <th>E-MAIL</th>
                <td><input type="text" value="<?php echo $row['email']; ?>" class="d-na"></td>
            </tr>
            <tr>
                <th>生年月日</th>
                <td>
                  <input type="text" value="<?php echo $row['birth']; ?>" class="d-year"><input type="text" value="<?php echo $row['birth_m']; ?>" class="d-i"><input type="text" value="<?php echo $row['birth_d']; ?>" class="d-i"><input type="text" value="<?php echo $row['hour']; ?>" class="d-i"><input type="text" value="<?php echo $row['minute']; ?>" class="d-i"></td>
              </tr> 
              <tr>
                <th>入 会 日  </th>
                <td>
                  <input type="text" value="<?php echo $row['year1']; ?>" class="d-y"><input type="text" value="<?php echo $row['year2']; ?>" class="d-da"><input type="text" value="<?php echo $row['year3'] ;?>" class="d-da"></td>
              </tr>
              <tr>
                <th>退 会 日  </th>
                <td> 
                  <input type="text" value="<?php echo $row['year01']; ?>" class="d-y"><input type="text" value="<?php echo $row['year02']; ?>" class="d-da"><input type="text" value="<?php echo $row['year03'] ;?>" class="d-da"></td>
              </tr>     
              <tr>  
              <th>紹 介 者</th>
              <td><input type="text" value="<?php print $row['syoukai']; ?>" class="d-na"></td>    
             <br>
            </fieldset>    
             <?php }?>
           </table>   
      <input type="button" onclick="location.href='DB_top.php'" value="トップ戻る" name="botton1" class="main">
  </body>
</html>

コード
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • s8_chu

    2017/03/07 15:52

    formタグの位置は転機ミスでしょうか?

    キャンセル

  • pomi

    2017/03/07 16:09

    失礼いたしました。

    キャンセル

回答 1

+2

このコードと説明からだと、何をやりたいのか皆目見当がつきませんが、
いくつか言えることとして、

名前欄”name”に入力がなかった場合、 
”ユーザー名を入力してください” 
エラーメッセージを出力させたいと思っています。

これは、DBを見に行く前に出すものだと思いますよ。

また$row_count = $statement->rowCount();の部分ですが、
rowCountSELECTが返す行数ではなく、INSERTDELETEUPDATEが作用した行数になります。
http://php.net/manual/ja/pdostatement.rowcount.php

もう少し、
入力 → チェック → データの取得 → 表示
という流れをしっかり掴んだほうがいいと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • PHP

    23553questions

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