前提・実現したいこと
PHPとmysqlで初心者ながら日報の入力システムを作っています。
入力画面→確認画面→登録完了画面という画面遷移で作成しています。
入力画面→確認画面へと遷移はきちんと行くのですが、確認画面で登録をクリックしても画面が変わらず(本来は登録完了画面へ行くはず)、mysqlにも登録されません。いろいろと調べてみたのですが原因がわかりません。お手数ですが、教えていただけないでしょうか。
入力画面はindex.php、確認画面はcheck.php、登録完了画面はthanks.phpです。ほかにdb接続用にdbconnect.phpを作成しています。
参考テキスト)よくわかるPHPの教科書(PHP7対応版)
発生している問題・エラーメッセージ
mysqlへデータが登録されない。勤務日をカレンダーから選択して入力の形をとっていますがそこも原因かなと考えています。
index.php
<?php session_start(); if (!empty($_POST)){ //エラー項目のチェック if($_POST['kinmu']==''){ $error['kinmu']='blank'; } if($_POST['kdate']==''){ $error['kdate']='blank'; } if($_POST['gyomu']==''){ $error['gyomu']='blank'; } if($_POST['commute']==''){ $error['commute']='blank'; } if($_POST['section']==''){ $error['section']='blank'; } if(empty($error)){ $_SESSION['join']=$_POST; header('Location:check.php'); exit(); } } //書き直しrewrite if ($_REQUEST['action']=='rewrite'){ $_POST=$_SESSION['join']; $error['rewrite']=true; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>日報入力</title> <link rel="stylesheet" href="style.css" /> </head> <body> <div id="wrap"> <div id="head"> <h1>日報入力</h1> </div> <div id="content"> <p>次のフォームに必要事項を記入してください </p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>勤務者<span class="required">必須</span></dt> <dd> <select name="kinmu" value="<?php echo htmlspecialchars($_POST['kinmu'],ENT_QUOTES);?>"/> <option value="" selected style="display:none;"<?php if(empty($_POST['kinmu'])) echo 'selected'; ?>>勤務者を選択してください</option> <option value="あああ">あああ</option> <option value="いいい">いいい</option> </select> <?php if($error['kinmu']=='blank'):?> <p class="error">*勤務者を選択してください</p> <?php endif; ?> </dd> <dt>勤務日<span class="required">必須</span></dt> <dd> <input type="date" name="kdate" style="width:200px" value="<?php echo htmlspecialchars($_POST['date'],ENT_QUOTES);?>"/> <?php if($error['kdate']=='blank'):?> <p class="error">*勤務日を選択してください</p> <?php endif; ?> </dd> <dt>勤務開始時間<span class="required">必須</span></dt> <dd> <select name="start_hour"> <?php for ($i=1; $i<=24; $i++){ print('<option value="' .$i. '">' .$i . '時</option>'); } ?> </select> <select name="start_min"> <?php for ($i=0; $i<=59; $i++){ print('<option value="' .$i. '">' .$i . '分</option>'); } ?> </select> </dd> <dt>勤務終了時間<span class="required">必須</span></dt> <dd> <select name="end_hour"> <?php for ($i=1; $i<=24; $i++){ print('<option value="' .$i. '">' .$i . '時</option>'); } ?> </select> <select name="end_min"> <?php for ($i=0; $i<=59; $i++){ print('<option value="' .$i. '">' .$i . '分</option>'); } ?> </select> </dd> <dt>休憩時間<span class="required">必須</span></dt> <dd> <select name="rest_hour"> <?php for ($i=1; $i<=24; $i++){ print('<option value="' .$i. '">' .$i . '時間</option>'); } ?> </select> <select name="rest_min"> <?php for ($i=0; $i<=59; $i++){ print('<option value="' .$i. '">' .$i . '分</option>'); } ?> </select> </dd> <dt>業務内容<span class="required">必須</span></dt> <dd> <select name="gyomu" value="<?php echo htmlspecialchars($_POST['gyomu'],ENT_QUOTES);?>"/> <option value="" selected style="display:none;">業務内容を選択してください</option> <option value="ええ">ええ</option> <option value="おお">おお</option> </select> <?php if($error['gyomu']=='blank'):?> <p class="error">*業務内容を選択してください</p> <?php endif; ?> </dd> <dt>その他を選択した場合、業務内容を入力</dt> <dd> <input id="other" type="text" name="other"> </dd> <dt>通勤区間<span class="required">必須</span></dt> <dd> <input type="text" name="commute" > <?php if($error['commute']=='blank'):?>value="<?php echo htmlspecialchars($_POST['commute'],ENT_QUOTES);?>"/ <p class="error">*通勤区間を入力してください</p> <?php endif; ?> </dd> <dt>通勤距離(km)<span class="required">必須</span></dt> <dd> <input id="section" type="number" name="section" value="<?php echo htmlspecialchars($_POST['section'],ENT_QUOTES);?>"/> <?php if($error['section']=='blank'):?> <p class="error">*通勤距離を入力してください</p> <?php endif; ?> </dd> </dl> <input type="submit" value="確認画面へ"> </form> </body> </html>
check.php
<?php session_start(); if(!isset($_SESSION['join'])){ header('Location:index.php'); exit(); require('../dbconnect.php'); } if(!empty($_POST)){ //登録処理をする $statement=$db->prepare('INSERT INTO syuho SET kinmu=?, kdate=?, start_hour=?, start_min=?, end_hour=?, end_min=?, rest_hour=?, rest_min=?, gyomu=?, other=?, commute=?, section=?'); $ret=$statement->execute(array( $_SESSION['join']['kinmu'], $_SESSION['join']['kdate'], $_SESSION['join']['start_hour'], $_SESSION['join']['start_min'], $_SESSION['join']['end_hour'], $_SESSION['join']['end_min'], $_SESSION['join']['rest_hour'], $_SESSION['join']['rest_min'], $_SESSION['join']['gyomu'], $_SESSION['join']['other'], $_SESSION['join']['commute'], $_SESSION['join']['section'], )); unset($_SESSION['join']); header('Location: thanks.php'); exit(); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>日報入力</title> <link rel="stylesheet" href="style.css" /> </head> <body> <div id="wrap"> <div id="head"> <h1>日報入力確認画面</h1> </div> <div id="content"> <form action="" method="post"> <dl> <dt>勤務者</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['kinmu'],ENT_QUOTES);?> </dd> <dt>勤務日</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['kdate'],ENT_QUOTES);?> </dd> <dt>勤務開始時間</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['start_hour'],ENT_QUOTES);?>時 <?php echo htmlspecialchars($_SESSION['join']['start_min'],ENT_QUOTES);?>分 </dd> <dt>勤務終了時間</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['end_hour'],ENT_QUOTES);?>時 <?php echo htmlspecialchars($_SESSION['join']['end_min'],ENT_QUOTES);?>分 </dd> <dt>休憩時間</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['rest_hour'],ENT_QUOTES);?>時 <?php echo htmlspecialchars($_SESSION['join']['rest_min'],ENT_QUOTES);?>分 </dd> <dt>業務内容</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['gyomu'],ENT_QUOTES);?> </dd> <dt>その他を選択した場合、業務内容を入力</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['other'],ENT_QUOTES);?> </dd> <dt>通勤区間</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['commute'],ENT_QUOTES);?> </dd> <dt>通勤距離(km) <dd> <?php echo htmlspecialchars($_SESSION['join']['section'],ENT_QUOTES);?> </dd> </dl> <div><a href="index.php?action=rewrite">« 入力をやり直す</a>|<input type="submit" value="週報を登録する"></div> </form> </body> </html>
試したこと
補足情報(FW/ツールのバージョンなど)
XAMPPを使用して開発しています。PHPは7.4.6です
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/15 12:15
2020/06/15 12:24
2020/06/15 12:25
2020/06/15 12:26
2020/06/19 00:40