実現したいこと
メモアプリを作成しています。チェックボックスにチェックが入っているものだけをDBから消去したい
PHP
1<?php 2session_start(); 3 4//DB接続// 5try{ 6 $pdo=new PDO('mysql:host=********; 7 dbname=********=utf8', 8 '********', 9 '********'); 10}catch(PDOException $e){ 11echo '接続できませんでした。'; 12} 13?> 14 15<?php 16//ログイン中のIDと書き込み内容をDBに登録// 17if(isset($_SESSION['user']) && isset($_POST['add']) && !empty($_POST['contents'])){ 18$sql = $pdo->prepare('insert into text(login_id,contents) values(?,?)'); 19$sql -> bindvalue(1,$_POST['login_id']); 20$sql -> bindvalue(2,$_POST['contents']); 21$sql -> execute(); 22} 23 24//ユーザーIDによって違う内容を表示// 25if(isset($_SESSION['user']['id'])){ 26$sql=$pdo->prepare('select * from text where login_id = "'.$_SESSION['user']['id'].'"'); 27$sql->execute(); 28foreach($sql as $row){ 29echo '<form method="post">'; 30echo $row['contents']; 31echo '<input type="checkbox" name="check">'; 32echo '</form>'; 33 } 34} 35 36 37//任意のものだけ消去したい 38if(isset($_POST['delete'])){ 39 $sql=$pdo->prepare('delete from text where login_id = "'.$_SESSION['user']['id'].'" and //何か条件を追加すれば良いと思う'); 40 $sql -> execute(); 41} 42 43 44 45 46//PHP空白判定// 47$add = filter_input(INPUT_POST,'add'); 48$contents = filter_input(INPUT_POST,'contents',); 49if(isset($add)){ 50 if(empty($contents)) 51 echo '内容を入力してください'; 52} 53?> 54 55 56<!DOCTYPE html> 57<html lang="en"> 58<head> 59 <meta charset="UTF-8"> 60 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 61 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 62 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"> 63 <link rel="stylesheet" href="../css/style2.css"> 64 <title>Document</title> 65</head> 66<body> 67<?php 68require('../header/header.php'); 69?> 70<hr> 71<h1>リスト</h1> 72<?php 73//セッションが入っている場合 74if(isset($_SESSION['user'])){ 75echo 'ユーザーID:<input type="text" name="login_id" value="'.$_SESSION['user']['id'].'" readonly>','<br>'; 76} 77echo '<form method="post">'; 78echo '<input type="text" name="contents" value="">'; 79echo '<button type="submit" name="add">追加</button>'; 80echo '<button type="submit" name="delete">消去</button>'; 81echo '</form>'; 82?> 83 84</body> 85</html> 86
環境
- VSCode
- MySQL
試したこと
$sql -> excute($_POST['check']);にした場合できるかなと思いましたが無理でした。
postにcheckの値が入っていれば送信して任意のものを消去できる,もしくはDBにもチェックボックスみたいな感じの役割のものを追記すればできると思いましたがわかりませんでした。有識者さんアドバイスお願いいたします。
更新後のコード
PHP
1<?php 2session_start(); 3 4//DB接続// 5try{ 6 $pdo=new PDO('mysql:host=mysql154.phy.lolipop.lan; 7 dbname=LAA1290628-upup;charset=utf8', 8 'LAA1290628', 9 'Shion0724'); 10}catch(PDOException $e){ 11echo '接続できませんでした。'; 12} 13?> 14 15 16<!DOCTYPE html> 17<html lang="en"> 18<head> 19 <meta charset="UTF-8"> 20 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 21 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 22 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"> 23 <link rel="stylesheet" href="../css/style2.css"> 24 <title>Document</title> 25</head> 26<body> 27<?php 28require('../header/header2.php'); 29?> 30 <hr> 31<h1>リスト</h1> 32<?php 33echo '<form method="post">'; 34//セッションが入っている場合 35if(isset($_SESSION['user'])){ 36echo 'ユーザーID:<input type="text" name="login_id" value="'.$_SESSION['user']['id'].'" readonly>','<br>'; 37} 38 39//内容追加 40echo '<label for="name">内容:</label><input type="text" name="contents" id="name" value="">'; 41echo '<button type="submit" name="add">追加</button>'; 42echo '</form>'; 43 44//内容消去 45echo '<form id="check" method="post">'; 46echo '<button type="submit" name="delete">消去</button>'; 47if(isset($_POST['check'])){ 48 $check = $_POST['check']; 49 foreach($check as $name){ 50 //チェックボックスに内容が入っている 51 //echo $name; 52 } 53} 54echo '</form>'; 55?> 56 57<?php 58//ログイン中のIDと書き込み内容をDBに登録// 59if(isset($_SESSION['user']) && isset($_POST['add']) && !empty($_POST['contents'])){ 60$sql = $pdo->prepare('insert into text(login_id,contents) values(?,?)'); 61$sql -> bindvalue(1,$_POST['login_id']); 62$sql -> bindvalue(2,$_POST['contents']); 63$sql -> execute(); 64} 65 66//内容を消去// 67if(isset($_POST['delete'])){ 68 $sql=$pdo->prepare('delete from text where login_id = "'.$_SESSION['user']['id'].'" and contents="'.$name.'"'); 69 $sql -> bindvalue(1,$name); 70 $sql -> execute(); 71} 72 73//ユーザーIDによって違う内容を表示// 74if(isset($_SESSION['user']['id'])){ 75$sql=$pdo->prepare('select * from text where login_id = "'.$_SESSION['user']['id'].'"'); 76$sql->execute(); 77foreach($sql as $row){ 78// echo '<form method="post">'; 79echo $row['contents']; 80echo '<input type="checkbox" name="check[]" form="check" value="'.$row['contents'].'" >'; 81echo '<br>'; 82// echo '</form>'; 83 } 84} 85 86 87 88//PHP空白判定// 89$add = filter_input(INPUT_POST,'add'); 90$delete = filter_input(INPUT_POST,'delete'); 91$contents = filter_input(INPUT_POST,'contents',); 92$check = filter_input(INPUT_POST,'check',); 93if(isset($add)){ 94 if(empty($contents)) 95 echo '内容を入力してください'; 96} 97if(isset($delete)){ 98 if(empty($check)) 99 echo 'チェックを入れてください'; 100} 101?> 102 103 104</body> 105</html> 106
現状ですと1つずつしか消去できない感じです。
delete文のところに問題があると思いますが躓いています。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。