

inquery.php

[code]

    <?php
    
        require_once('database_connect.php');
    
        //receive data from form;
        $category_id=$_POST['category_id'];
        $name = $_POST['name'];
        $email = $_POST['email'];
        $contact = $_POST['contact'];
        $inqury = $_POST['inqury'];
    
        //validations
        $pattern_email="/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/";
        $pattern_number = "/^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$/";
    
        //avoid cross sites scripting
        function h ($str) {
            return htmlspecialchars();
        }
    
        $sql = $pdo->prepare('insert into inquries(inqury, name, contact, email, category_id) values(?, ?, ?, ?, ?)');
    
        if(empty($name)){
            $e_name = '名前を入力してください。';
            $name = null;
        }
    
        if(empty($email)) {
            $e_email = 'メールアドレスを入力してください。';
            $email = null;
        }else if(!preg_match($pattern_email, $email)) {
            $e_email = '形式が正しくありません。正しい形式でん入力して下さい。';
            $email = null;
        }
    
        if(empty($contact)) {
            $e_contact = '電話番号を入力してください。';
            $contact = null;
        }else if(!preg_match($pattern_number, $contact)) {
            $e_contact = '形式が正しくありません。正しい形式で入力してください。';
            $contact = null;
        }
    
        if(empty($inqury)) {
            $e_inqury = 'お問い合わせ内容を入力してください。';
            $inqury = null;
        }else if(mb_strlen($inqury, 'UTF-8') > 255) {
            $e_inqury = ' 255文以内で記入してください。';
            $inqury = null;
        }
    
        if($sql->execute(array($inqury, $name ,$email, $contact, $category_id))){
            $result_message = 'お問い合わせありがとうございます！ 後ほどご返信致しますの、しばしお待ち下さい。';
            header("location: localhost:8000/home.php?result_message={$result_message}");
            exit();
        }else{
            header("location: localhost:8000/home.php?errors[name]={$e_name}&errors[email]={$e_email}&errors[contact]={$e_contact}&errors[inqury]={$e_inqury}");
            $arr = $sql->errorInfo();
            print_r($arr);
        }
    
    ?>    
    
[/code]

home.php

[code]

    <?php include 'css/style.php' ?>
    <?php require_once('database_connect.php');?>
    
    #receving array valiable from quert parameter
    
    <html>
      <head>
        <title>花見川IT寺小屋</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <link href="https://fonts.googleapis.com/earlyaccess/hannari.css" rel="stylesheet">
        <link rel='stylesheet' href='./css/style.css' type='text/css'>
      </head>
      <body>
        <div id='wrap-header'>
          <header>
            <div id='title'>
              <h1>花見川IT寺小屋</h1>
            </div>
    
            <div id='mySidenav' class='sidenav'>
              <a href='javascript:void(0)' class='closebtn' onclick='closeNav()'>&times;</a>
              <a href='#about'>学習内容</a>
              <a href='#price'>日程・料金</a>
              <a href='#contact'>受講について</a>
              <a href='#fvear' id='free-header'>無料体験</a>
            </div>
    
            <div id="humberger">
              <div onclick='openNav()'></div>
              <div onclick='openNav()'></div>
              <div onclick='openNav()'></div>
            </div>
          </header>
        </div>
        <div id='wrap'>
    
        <div id='intro'>
    
          <div class='intro-image'>
            <img src='./assets/programming_child.jpg'>
          </div>
    
          <div class='intro-title'>
            <h1>年齢不問！！花見川をイノベーションを起こそう！</h1>
            <p>未経験から最高の学習効率でスキルを学習</p>
            <div class='free'>
              <a href='#fvear'>無料体験はこちら</a>
            </div>
          </div>
    
        </div>
    <!--      separation-->
          <div class="sep">
          </div>
    
          <div id="about">
            <div class='about-title'>
              <p>About us</p>
              <h1>IT寺小屋とは</h1>
            </div>
            <div class='about-desc'>
              <p>「自分らしい働き方, 生き方」を目指す上で大きな武器となる<br><span style='color: red;'>プログラミングやデザインの基礎の基礎を学ぶことのできるスクールです</span>。<br>
                「プログラミングは興味がるけどないから始めたらいいか分からない」<br>「そもそも一知識が皆無」, 「プログラング教室って高くてなかなかレが出せない<br>
                そんな方々が一歩踏み出すお手伝いをします！！
              </p>
            </div>
          </div>
    
          <!--      separation-->
          <div class="sep">
          </div>
    
          <div class='price'>
            <div class='price-title'>
              <p>Price & date</p>
              <h1>料金</h1>
              <h4 id='free-term'>※2020年4月〜2020年7月は入金無料</h4>
            </div>
    
            <table class='price-table'>
              <tr>
               <th class='month'>
                 月額受講料金
               </th>
               <th>
               <td>
                </td>
              </tr>
              <tr>
                <th>入会金</th>
                <td>
                  10000円
                </td>
              </tr>
              <tr>
                <th>
                  小学生
                </th>
                <td>
                  5000円以下
                </td>
              </tr>
              <tr>
                <th>
                  中・高校生
                </th>
                <td>
                  6000円
                </td>
              </tr>
              <tr>
                <th>
                  大学生・一般
                </th>
                <td>
                  8000円
                </td>
              </tr>
            </table>
            <div class='price-detail'>
              <p id='pc-rent'>※PCの貸し出しは3000円/月</p>
              <p>料金に含まれるもの</p>
              <ul>
                <li>1. 週一回100分の授業(50分講義, 50分実習, 個別質問対応)</li>
                <li>2. 教材利用</li>
                <li>3. パーソナルメンターによる個別相談</li>
              </ul>
            </div>
    
            <div class='date-title'>
                <h1>日程</h1>
                <p>※4月の日程</p>
              </div>
    
              <ul class='date-list'>
                <li>4/4 (土) 11:30 ~ 13:00</li>
                <li>4/11 (土) 11:30 ~ 13:00</li>
                <li>4/18 (土) 11:30 ~ 13:00</li>
                 <li>4/25 (土) 11:30 ~ 13:00</li>
              </ul>
          </div>
    
          <div class="sep">
          </div>
    
          <div id='trial'>
    
            <div class='trial-title'>
              <p>Trial</p>
              <h1>無料体験</h1>
            </div>
            <div class='trial-header'>
              <div class='trial-header-title'>
                <h1>プログラマーとしての一歩を踏み出そう!!</h1>
                <h2>無料体験で、教室の雰囲気や講座内容を確かめることができます！</h2>
                <p>※無理な勧誘等は一切ござません。</p>
              </div>
    
            <div class='trial-header-image'>
              <img src='./assets/programming_child.jpg'>
            </div>
           </div>
    
            <div class='trial-content-title'>
              <h1>説明会・体験会の流れ</h1>
            </div>
           <div class='trial-contents'>
            <div class='trial-content'>
              <img src='./assets/programming_child.jpg'>
              <h3>1. プログラミング説明会</h3>
              <p>プログラミングって何？学習すると何ができるようになるの？といったお話から現在のIT環境について説明。IT寺小屋での学習や料金のご紹介もさせていただきます。
              </p>
            </div>
             <div class='trial-content'>
                <img src='./assets/programming_child.jpg'>
                <h3>2. 学習体験</h3>
              <p>IT寺小屋の授業を受講していただきます。質問し放題かつ未経験者向けの教材なので安心して受講していただけます。</p>
            </div>
             <div class='trial-content'>
                <img src='./assets/programming_child.jpg'>
                <h3>3. 個別説明会</h3>
                <p>IT寺小屋やプログラミング学習について任意で相談会を行います。ここで不安を解消しましょう。疑問に思ったことや不安点を何なりとご相談ください。</p>
            </div>
            </div>
    
            <!--      separation-->
          <div class="sep">
          </div>
    
          <div id='contact'>
          <div class='contact-title'>
            <p>Contact</p>
            <h1>お問合わせ</h1>
          </div>
    
                <form action='./inqury.php' method='post'>
    
                  <div class='item'>
                    <label class='label'>お名前</label>
                    <input class='inputs' type='text' name='name'>
                  </div>
    
                  <div class='item'>
                    <label class='label'>メールアドレス</label>
                    <input class='inputs' type='email' name='email'>
                  </div>
                  <div class='item'>
                    <label class='label'>お電話番号</label>
                    <input class='inputs' type='text' name='contact'>
                 </div>
    
                  <div class='item'>
                    <p class='label'>お問合わせの種類</p>
                    <div class='inputs'>
                    <input id='cut' type='radio' name='category_id' value='1'><label for="cut">無料体験</label>
                    <input id='cut-color' type='radio' name='category_id'  value='2'><label for="cut-color">料金</label>
                    <input id='headspa' type='radio' name='category_id'  value='3'><label for="headspa">入会について</label>
                    <input id='other' type='radio' name='category_id'  value='4'><label for="other">その他</label>
    
                    </div>
                  </div>
    
                  <div class='item'>
                    <label class='label'>お問合わせ内容</label>
                    <textarea class='inputs' name='inquery'></textarea>
                  </div>
    
                  <div class='btn-area'>
                    <input type='submit' value='送信'><input type='reset' value='リセット'>
                  </div>
    
                </form>
    
          </div>
    
        </div>
    
     </div>     
    
        </div>
        <script type='text/javascript' src='./js/home.js'></script>
      </body>
    </html>
    
    
[/code]

database_connect.php

[code]

    <?php
    
        try {
            $pdo = new PDO ('mysql:dbname=test_mysql_database; host=localhost;port3306; charset=utf8', 'root', 'password');
            print 'Connected';
        } catch (PDOException $e) {
            print('connection failure:'.$e->getMessage());
        }
    
    
[/code]

**_詰まっていること_**  
home.phpのformタグの部分でinquery.phpにPOST REQUESTを送っているが、なぜかinqury.phpにリクエストが飛ばない。

[code]

    <form action='./inqury.php' method='post'>
    
        <div class='item'>
            <label class='label'>お名前</label>
            <input class='inputs' type='text' name='name'>
        </div>
    
        <div class='item'>
            <label class='label'>メールアドレス</label>
            <input class='inputs' type='email' name='email'>
        </div>
        <div class='item'>
            <label class='label'>お電話番号</label>
            <input class='inputs' type='text' name='contact'>
        </div>
    
        <div class='item'>
            <p class='label'>お問合わせの種類</p>
            <div class='inputs'>
                <input id='cut' type='radio' name='category_id' value='1'><label for="cut">無料体験</label>
                <input id='cut-color' type='radio' name='category_id'  value='2'><label for="cut-color">料金</label>
                <input id='headspa' type='radio' name='category_id'  value='3'><label for="headspa">入会について</label>
                <input id='other' type='radio' name='category_id'  value='4'><label for="other">その他</label>
            </div>
        </div>
    
        <div class='item'>
            <label class='label'>お問合わせ内容</label>
            <textarea class='inputs' name='inquery'></textarea>
        </div>
    
        <div class='btn-area'>
            <input type='submit' value='送信'><input type='reset' value='リセット'>
        </div>
    
    </form>
    
[/code]

下記の部分でDBに対するexecuteがtrueかfalseを返すのに関わらず,home.phpにリダイレクトするように設定しているが、  
Post
Requestを送った後でURLが'localhost:8000/home.php?errors[name]={....')または'localhost:8000/home.php?result_message={$result_message}")'になる事を期待したが,'localhost:8000/inquery.php'と表示される為、下記if文内の処理を通過していないかも、と判断しました。

[code]

    if($sql->execute(array($inqury, $name ,$email, $contact, $category_id))){
        $result_message = 'お問い合わせありがとうございます！ 後ほどご返信致しますの、しばしお待ち下さい。';
        header("location: localhost:8000/home.php?result_message={$result_message}");
        exit();
    }else{
        header("location: localhost:8000/home.php?errors[name]={$e_name}&errors[email]={$e_email}&errors[contact]={$e_contact}&errors[inqury]={$e_inqury}");
        $arr = $sql->errorInfo();
        print_r($arr);
    }
    
[/code]

home.phpとinquery.phpは同じフォルダの格納しています。

一度,inquery.phpを別の階層に移動させて、Post
Requestを送信しましたが、結果は同じでした。(URLが'localhost:8000/inquery.phpと表示された。')

どなたか原因がわかる方、ご教授願えませんでしょうか。


CC BY-SA 4.0
2020-03-14T13:10:23.387
63836
2020-03-27T12:06:25.893
2020-03-15T08:30:44.983
3060
38215
question
php html
POST Requstが上手くいって行われていない？


冒頭のファイル名が「inquery.php」なのに対し、html内のPOST先が「inqury.php」となっています。要はスペルミスによってPOSTできていない可能性があります。

もしスペルミスが原因であれば、home.php内の以下の部分を以下のように変更すれば、きちんとPOSTされるでしょう。

現在のコード

[code]

    <form action='./inqury.php' method='post'>
    
[/code]

修正後のコード

[code]

    <form action='./inquery.php' method='post'>
    
[/code]


CC BY-SA 4.0
2020-03-27T12:06:25.893
64155
2020-03-27T12:06:25.893
38398
63836
answer