①学籍番号と名前を入力して登録ボタンを押したら、新しい生徒のデータが登録されて、ブラウザ画面に表示される。
②F5で更新すると、①で登録した生徒が再び登録されてしまう。
テキストフィールドに何もいれてない状態で、F5を押しても生徒が登録されずに、生徒を画面に表示させるのはどうすればいいでしょうか?
クッキーやセッションでググりましたが、解決できませんでした。
<?php $res = ""; //新しいウェブページのエラー回避 var_dump($_POST['insert']); if(isset($_POST['insert'])){ $USER= 'root'; $PW= '1234'; $dnsinfo= "mysql:dbname=cwdb;host=localhost;charset=utf8"; try{ $pdo = new PDO($dnsinfo,$USER,$PW); //pdoインスタンスの生成 $sql = "INSERT INTO member VALUES(?,?,?)"; $stmt = $pdo->prepare($sql); //prepare(準備をする)、SQL文の実行準備、prepareメソッドを呼び出すとPDOStatementインスタンスが生成される、それをstmtに代入 $array = array(null,$_POST['student_number'],$_POST['student_name']); $res = $stmt->execute($array); //executeメソッド(実行)は準備ができたらSQL文を実行する役割、executeが正しく実行されるとTRUEが返ってくる if($res){ $sql = "SELECT * FROM member"; $stmt = $pdo->prepare($sql); $stmt->execute(null); $res = "<table>\n"; while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $res .= "<tr><td>" . $row['student_number'] . "</td><td>" . $row['student_name'] . "</td></tr>\n"; } $res .= "</table>\n"; } }catch(Exception $e){ $res = $e->getMessage(); } } ?> <!DOCTYPE html> <html> <head> <title>CWtest</title> </head> <body> <form action="" method="post"> <label>student_number<input type='text' name='student_number' size="20" required></label><!--required(入力必須)--> <label>student_name<input type='text' name='student_name' size="20" required></label> <input type='submit' name='insert' value=' 登録 '> </form> <?php echo $res; ?> </body> </html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。