PHPでデータ入力後にページを更新すると、入力されたデータがDBに保存され
重複データが表示されてしまうのでリダイレクト処理を使用して重複データが作成されないようにしたいのですが、処理が実行されずページを更新する度に大量のデータがDB に保存されてしまいます。
大量のデータが保存されてしまう原因が解らないので、アドバイス等お願いします。
PHP
1<?php 2 3ini_set('error_reporting', E_ALL); 4ini_set('display_errors', 1 ); 5 6 7//接続確認 8try{ 9 $dsn='mysql:dbname=morning glory;host=127.0.0.1'; 10 $user='root'; 11 $password='root'; 12 13 $pdo = new pdo( 14 $dsn,$user,$password,[ 15 //例外が発生した場合に、スローする(エラーをお知らせする) 16 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 17 //SQLを使用する際にその条件や値がおこなる場合、それをパラメータかしていろんな値や 18 //条件で使い回ししない 19 PDO::ATTR_EMULATE_PREPARES => false 20 ]); 21 22}catch (PDOException $e) { 23 header('Content-type: text/plain; charset=UTF-8', true, 500); 24 exit($e->getMessage()); 25 26 //接続終了 27 $pdo = null; 28 29} 30?> 31 32<!DOCTYPE html> 33<html lang="ja"> 34<head> 35 <meta charset="utf-8"> 36 <meta name="description" content="タスク"> 37 <title>タスク</title> 38</head> 39 40<body> 41 42 43 <form method="POST"> 44 <h>タスクを入力します</h> 45 <p><input type = "text" name = "text" size = "70"></p> 46 <p><input type = "submit" value = "タスクを追加する"></p> 47 </form> 48 49 <form cethod="POST"> 50 <p><input type = "button" value = "完了"></p> 51 52<ul>タスク一覧</br></u;> 53 54<?php 55 56if(!isset($_POST['text'])){ 57$errors = 'タスクが未入力です。'; 58}else{ 59 $task_name = $_POST['text']; 60} 61header('Location: http://localhost/PHP/'); 62 63try{ 64 $dsn='mysql:dbname=morning glory;host=127.0.0.1'; 65 $user='root'; 66 $password='root'; 67 68 $pdo = new pdo( 69 $dsn,$user,$password,[ 70 //例外が発生した場合に、スローする(エラーをお知らせする) 71 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 72 73 PDO::ATTR_EMULATE_PREPARES => false 74 ]); 75 76$sql1 = $pdo -> prepare("insert into task_information(task,Completion_status) 77values(:task_name,:Completion_status)"); 78$sql1 -> bindParam(':task_name',$task_name, PDO::PARAM_STR); 79$sql1 -> bindValue(':Completion_status', 1 , PDO::PARAM_INT); 80$sql1 -> execute(); 81 82$sql2 = "select task from task_information"; 83 84$res = $pdo->query($sql2); 85 86foreach($res as $value){ 87 echo '<input type = "checkbox" name = "text2" value ="'.$value['task'].'">'; 88 echo $value['task'].'<br/>'; 89} 90 91 92 93}catch (PDOException $e) { 94 header('Content-Type: text/plain; charset=UTF-8', true, 500); 95 exit($e->getMessage()); 96 97} 98 99 100 101?> 102</body> 103</html> 104
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。