質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

checkboxでDB情報を任意の数削除したい

Sushi
Sushi

総合スコア3

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

4回答

0評価

0クリップ

545閲覧

投稿2022/02/14 16:30

編集2022/02/16 17:47

実現したいこと

メモアプリを作成しています。チェックボックスにチェックが入っているものだけをDBから消去したい

PHP

<?php session_start(); //DB接続// try{ $pdo=new PDO('mysql:host=********; dbname=********=utf8', '********', '********'); }catch(PDOException $e){ echo '接続できませんでした。'; } ?> <?php //ログイン中のIDと書き込み内容をDBに登録// if(isset($_SESSION['user']) && isset($_POST['add']) && !empty($_POST['contents'])){ $sql = $pdo->prepare('insert into text(login_id,contents) values(?,?)'); $sql -> bindvalue(1,$_POST['login_id']); $sql -> bindvalue(2,$_POST['contents']); $sql -> execute(); } //ユーザーIDによって違う内容を表示// if(isset($_SESSION['user']['id'])){ $sql=$pdo->prepare('select * from text where login_id = "'.$_SESSION['user']['id'].'"'); $sql->execute(); foreach($sql as $row){ echo '<form method="post">'; echo $row['contents']; echo '<input type="checkbox" name="check">'; echo '</form>'; } } //任意のものだけ消去したい if(isset($_POST['delete'])){ $sql=$pdo->prepare('delete from text where login_id = "'.$_SESSION['user']['id'].'" and //何か条件を追加すれば良いと思う'); $sql -> execute(); } //PHP空白判定// $add = filter_input(INPUT_POST,'add'); $contents = filter_input(INPUT_POST,'contents',); if(isset($add)){ if(empty($contents)) echo '内容を入力してください'; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"> <link rel="stylesheet" href="../css/style2.css"> <title>Document</title> </head> <body> <?php require('../header/header.php'); ?> <hr> <h1>リスト</h1> <?php //セッションが入っている場合 if(isset($_SESSION['user'])){ echo 'ユーザーID:<input type="text" name="login_id" value="'.$_SESSION['user']['id'].'" readonly>','<br>'; } echo '<form method="post">'; echo '<input type="text" name="contents" value="">'; echo '<button type="submit" name="add">追加</button>'; echo '<button type="submit" name="delete">消去</button>'; echo '</form>'; ?> </body> </html>

環境

  • VSCode
  • MySQL

試したこと

$sql -> excute($_POST['check']);にした場合できるかなと思いましたが無理でした。
postにcheckの値が入っていれば送信して任意のものを消去できる,もしくはDBにもチェックボックスみたいな感じの役割のものを追記すればできると思いましたがわかりませんでした。有識者さんアドバイスお願いいたします。


更新後のコード

PHP

<?php session_start(); //DB接続// try{ $pdo=new PDO('mysql:host=mysql154.phy.lolipop.lan; dbname=LAA1290628-upup;charset=utf8', 'LAA1290628', 'Shion0724'); }catch(PDOException $e){ echo '接続できませんでした。'; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"> <link rel="stylesheet" href="../css/style2.css"> <title>Document</title> </head> <body> <?php require('../header/header2.php'); ?> <hr> <h1>リスト</h1> <?php echo '<form method="post">'; //セッションが入っている場合 if(isset($_SESSION['user'])){ echo 'ユーザーID:<input type="text" name="login_id" value="'.$_SESSION['user']['id'].'" readonly>','<br>'; } //内容追加 echo '<label for="name">内容:</label><input type="text" name="contents" id="name" value="">'; echo '<button type="submit" name="add">追加</button>'; echo '</form>'; //内容消去 echo '<form id="check" method="post">'; echo '<button type="submit" name="delete">消去</button>'; if(isset($_POST['check'])){ $check = $_POST['check']; foreach($check as $name){ //チェックボックスに内容が入っている //echo $name; } } echo '</form>'; ?> <?php //ログイン中のIDと書き込み内容をDBに登録// if(isset($_SESSION['user']) && isset($_POST['add']) && !empty($_POST['contents'])){ $sql = $pdo->prepare('insert into text(login_id,contents) values(?,?)'); $sql -> bindvalue(1,$_POST['login_id']); $sql -> bindvalue(2,$_POST['contents']); $sql -> execute(); } //内容を消去// if(isset($_POST['delete'])){ $sql=$pdo->prepare('delete from text where login_id = "'.$_SESSION['user']['id'].'" and contents="'.$name.'"'); $sql -> bindvalue(1,$name); $sql -> execute(); } //ユーザーIDによって違う内容を表示// if(isset($_SESSION['user']['id'])){ $sql=$pdo->prepare('select * from text where login_id = "'.$_SESSION['user']['id'].'"'); $sql->execute(); foreach($sql as $row){ // echo '<form method="post">'; echo $row['contents']; echo '<input type="checkbox" name="check[]" form="check" value="'.$row['contents'].'" >'; echo '<br>'; // echo '</form>'; } } //PHP空白判定// $add = filter_input(INPUT_POST,'add'); $delete = filter_input(INPUT_POST,'delete'); $contents = filter_input(INPUT_POST,'contents',); $check = filter_input(INPUT_POST,'check',); if(isset($add)){ if(empty($contents)) echo '内容を入力してください'; } if(isset($delete)){ if(empty($check)) echo 'チェックを入れてください'; } ?> </body> </html>

現状ですと1つずつしか消去できない感じです。
delete文のところに問題があると思いますが躓いています。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。