前提・実現したいこと
(例)PHPでtodoリストを作っています。
todoリストの内容は5件だけ表示したいです。
そこで表示までは上手くいったので、確認としてURLにindex.php?page=2などの数字を入れて
上手く表示しているか確認したところエラーが発生していました。
発生している問題・エラーメッセージ
Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'todo' cannot be null in /Applications/MAMP/htdocs/TODO/index.php on line 20
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'todo' cannot be null in /Applications/MAMP/htdocs/TODO/index.php on line 20
該当のソースコード
php
1<?php 2require('db.php'); 3 4 5if(!empty($_REQUEST)) { 6 // remove 7 if(isset($_REQUEST['id'])) { 8 $remove = $db->prepare('DELETE FROM todos WHERE id=?'); 9 $remove->execute(array( 10 $_REQUEST['id'] 11 )); 12 13 header('location:index.php'); 14 exit(); 15 } 16 17 //add 18 $add = $db->prepare('INSERT INTO todos SET todo=?, created_at=NOW()'); 19 $add->execute(array( 20 $_POST['todo'] 21 )); 22 header('location:index.php'); 23 exit(); 24} 25 26 27 28 // page todo 29 $todos = $db->prepare('SELECT * FROM todos ORDER BY id LIMIT ?, 5'); 30 31 32 33 34 $page = $_REQUEST['page']; 35 $todos->bindParam(1, $page, PDO::PARAM_INT); 36 $todos->execute(); 37 38 39 40 41 42 43?> 44 45<!DOCTYPE html> 46<html lang="ja"> 47<head> 48 <meta charset="UTF-8"> 49 <link rel="stylesheet" href="css/normalize.css"> 50 <link rel="stylesheet" href="css/style.css"> 51 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 52 53 <title>ToDo List</title> 54</head> 55<body> 56 <div id="container"> 57 <header> 58 <h1>ToDo List</h1> 59 </header> 60 <div class="add"> 61 <form action="" method="POST"> 62 <input type="text" required placeholder="Add plan!!" name="todo"> 63 <input type="submit" value="Add"> 64 </form> 65 </div> 66 <div class="todos"> 67 <form action="" method="POST"> 68 <?php while($todo = $todos->fetch()): ?> 69 <div class="todo"> 70 <div class="lavel"><div class="circle"></div></div> 71 <input type="checkbox" name="check" onclick="document.querySelector('p').classList.toggle('check')"> 72 <a href="todo.php?id=<?php print($todo['id']); ?>"><p><?php print(mb_substr($todo['todo'], 0 , 23)); ?><br><?php print($todo['created_at']); ?></p></a> 73 <div class="remove"> 74 <a href="index.php?id=<?php print $todo['id']; ?>" class="remove_btn">×</a> 75 <input type="button" value="Edit" name="edit" onClick="location.href='edit.php?id=<?php print($todo['id']); ?>'"> 76 </div> 77 </div> 78 <?php endwhile; ?> 79 </form> 80 <div class="page"> 81 82 <a href="index.php?page="><span>次のページ</span></a> 83 | 84 <a href=""><span>前のページ</span></a> 85 </div> 86 </div> 87 </div> 88 89</body> 90</html>
試したこと
todoの内容がnullにはできないと言っているのは分かるのですが、どこを直せば良いのか分かりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/11 20:23
2020/05/11 20:28
2020/05/11 20:47
2020/05/11 20:51
2020/05/11 21:08
2020/05/11 21:11
2020/05/11 21:27
2020/05/11 21:31
2020/05/11 21:57
2020/05/11 22:08
2020/05/11 22:30
2020/05/11 22:33
2020/05/11 22:34
2020/05/11 22:57