現在、データベースを用いた掲示板を作成しています。
最終的な目標は投稿・削除・編集・パス機能を備えた掲示板を作成する事です。
ようやく、色々と試行錯誤を重ねたところ、投稿・削除・編集・パス機能を実装することができました。
しかし、投稿日時が表示されません。$dateを用いて、行うおうとしています(そもそもこれが間違ってるのかもしれませんが)。
また、投稿日時を行なおうとすると、新規投稿と編集ができなくなってしまうと言う状態に陥ってしまいます(削除・パス機能は働きます)。
逆に投稿日時の実装を行うコードを消すと、新規投稿と編集ができるようになります。
どなたか、この問題を解決できる方はいらっしゃるでしょうか?正直、色々と調べて試しても、変化はありませんでした。
現在のコードは下記の通りなのですが、どうにか新規投稿と編集もでき、かつ投稿日時が表示されるようにする方法、もしくは他のコードの書き方などを具体的なコードを用いて、教えて頂けると助かります。
PHP
1<html> 2<head> 3<title>keiziban</title> 4<meta charset= "utf-8"> 5</head> 6 7<body> 8 9 <?php 10 11 //データベースに接続 12 $dsn=';host=ホスト名'; 13 $user='ユーザー名'; 14 $password='パスワード'; 15 $pdo = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); 16 17 18 //テーブルの作成 19 $sql = "CREATE TABLE IF NOT EXISTS tech_text" 20 ."(" 21 ."id INT AUTO_INCREMENT PRIMARY KEY," 22 ."name char(32)," 23 ."comment TEXT," 24 ."date char(32)" 25 ."pass char(32)," 26 .");"; 27 $stmt = $pdo->query($sql); 28 29 30 31 //編集選択機能 32if(!empty($_POST["editNo"]) && !empty($_POST["editpass"])){ 33 $id = $_POST["editNo"]; 34 $editpass = $_POST["editpass"]; 35 $sql = 'SELECT * FROM tech_text'; 36 $stmt = $pdo->query($sql); 37 $results = $stmt->fetchAll(); 38 39 foreach ($results as $row){ 40 if($row['id'] == $id){ 41 $ename = $row['name']; 42 $ecomment = $row['comment']; 43 $pass = $row['pass']; 44 $editnumber = $row['id']; 45 } 46 } 47} 48 49?> 50 51 52 53<form method = "POST" action = keiziban.php> 54<input type = "text" name = "name" value = "<?php if(!empty($pass)){echo $ename;}?>" placeholder = "<?php if(empty($pass)){echo "名前";}?>"> 55<input type = "text" name = "comment" value = "<?php if(!empty($pass)){echo $ecomment;}?>" placeholder = "<?php if(empty($pass)){echo "コメント";}?>"> 56<input id="pass" type = "text" name = "password" value ="<?php if(!empty($pass)){echo $pass;}?>" placeholder = "<?php if(empty($pass)){echo "パスワード";}?>"> 57<input type = "hidden" name = "edit-number" value = "<?php if(!empty($pass)){echo $editnumber;}?>" > 58<input type = "submit" name = "btn"value = "送信"><br> 59 60<input type = "text" name = "deleteNo" placeholder = "削除対象番号" placeholder="編集番号を入力してください"> 61<input id="pass" type = "text" name = "delpass" placeholder = "パスワード"> 62<input type = "submit" name = "delete" value = "削除"><br> 63 64<input type = "text" name = "editNo" placeholder = "編集対象番号" placeholder="編集番号を入力してください"> 65<input id="pass" type = "text" name = "editpass" placeholder = "パスワード"> 66<input type = "submit" name = "edit" value = "編集"><br> 67 68 69 70 71<?php 72 73 74 //編集実行機能 75if(!empty($_POST["edit-number"]) && !empty($_POST["editNo"])){ 76 $id = $_POST["edit-number"]; //ここで編集対象番号の値の受け取りを行う 77 $name = $_POST["name"]; 78 $comment = $_POST["comment"]; 79 $password = $_POST["password"]; 80 $date = date("Y年m月d日 H時i分s秒"); 81 $sql = 'update tech_text set name=:name,comment=:comment,pass=:pass,date=date where id=:id'; 82 $stmt = $pdo->prepare($sql); 83 $stmt->bindParam(':name', $name, PDO::PARAM_STR); 84 $stmt->bindParam(':comment', $comment, PDO::PARAM_STR); 85 $stmt->bindParam(':pass', $password, PDO::PARAM_STR); 86 $stmt->bindParam(':date', $date, PDO::PARAM_STR); 87 $stmt->bindParam(':id', $id, PDO::PARAM_INT); 88 $stmt->execute(); 89 90} 91 92 93 94 //新規投稿 95if(!empty($_POST["name"]) && !empty($_POST["comment"]) and !empty($_POST["password"]) and empty($_POST["edit-number"])){ 96 $name = $_POST["name"]; 97 $comment = $_POST["comment"]; 98 $password = $_POST["password"]; 99 $date = date("Y年m月d日 H時i分s秒"); 100 $sql = $pdo -> prepare("INSERT INTO tech_text (name, comment, pass,date) VALUES(:name, :comment, :pass,:date)"); 101 $sql -> bindParam(':name', $name, PDO::PARAM_STR); 102 $sql -> bindParam(':comment', $comment, PDO::PARAM_STR); 103 $sql -> bindParam(':pass', $password, PDO::PARAM_STR); 104 $sql -> execute(); //実行する 105} 106 107 108 109 // 削除機能 110 if(!empty($_POST['deleteNo']) && !empty($_POST['delpass'])){ 111 $delete=$_POST['deleteNo']; 112 $delpassword=$_POST['delpass'] ; 113 $sql = 'delete from tech_text where id=:id'; 114 $stmt = $pdo->prepare($sql); 115 $stmt->bindParam(':id', $delete, PDO::PARAM_INT); 116 $stmt->execute(); 117 } 118 119 120 //表示機能 121 122 $sql = 'SELECT * FROM tech_text'; 123 $stmt = $pdo->query($sql); 124 $results = $stmt->fetchAll(); 125 126 foreach ($results as $row){ 127 //配列の中で使うのはテーブルのカラム名の物 128 echo $row['id'].','; 129 echo $row['name'].','; 130 echo $row['comment'].','; 131 echo $row['date'].','; 132 echo "<hr>"; 133 } 134 135 136 137?>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/25 14:03