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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

1回答

1515閲覧

DBのidを$_POST[]で受け取りたいができない

Keichi_Negishi

総合スコア25

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2020/11/09 02:38

編集2020/11/09 02:39

実現したい事

todoリストのtodoをチェックし、「チェックしたtodoを削除する」ボタンを押すとdelete.phpに飛ばされ、チェックしたtodoが削除される仕組みを作りたいです。todoを個別に削除できるように、チェックボックスのnameにはそれぞれのidを入れています。

分からない事

todoのチェックボックスにチェックを入れて、「チェックしたtodoを削除する」ボタンを押すと、delete.phpに飛ばされますが「undefined index」が表示され、idを受け取る事ができていません。
なぜ受け取れないのか理由が分かりません。

試した事

var_dump($id);でidの中身を確認するとNULLになっていました。

php

1【index.phpのコード】 2<?php 3require_once('config.php'); 4require_once('common.php'); 5 6$pdo = new PDO(DSN, DB_USER, DB_PASS); 7 8$todo = $pdo->prepare("SELECT * FROM todo_add ORDER BY todo_name DESC"); 9$todo->execute(); 10 11?> 12 13<!doctype html> 14<html> 15<head> 16<meta charset="utf-8"> 17<meta name="viewport" content="width=device-width, initial-scale=0"> 18<title>todoリスト</title> 19<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@700&display=swap" rel="stylesheet"> 20<link href="css/base.css" rel="stylesheet" type="text/css"> 21<link href="css/common.css" rel="stylesheet" type="text/css"> 22<link href="css/top.css" rel="stylesheet" type="text/css"> 23<script src="js/jquery-3.4.1.min.js"></script> 24<script type="text/javascript" src="js/test.js"></script> 25</head> 26<body> 27 <main> 28 <h1>Todoリスト</h1> 29 <section class="program_wrapper"> 30 <div class="program_area"> 31 <div class="new_add_block"> 32 <a class="blue_btn" href="add.php">todoを追加する</a> 33 </div><!--/.new_add_block --> 34 <div class="todo_list_block"> 35 <h2 class="blue_hd"><span class="name">todo名</span><span class="deadline">〆切日</span><span class="important">重要度</span></h2> 36 <form method="post" action="delete.php"> 37 <ul class="todo_list"> 38 <?php foreach($todo as $loop): ?> 39 <li> 40 <?php $id = $loop['id'] ?> 41 <input class="checkbox" type="checkbox" value="<?php echo $id ?>" name="<?php echo $id ?>"> 42 <?php var_dump($id); ?> 43 <a class="todo_link" href="detail.php?id=<?php echo $id ?>"> 44 <?php echo $loop["todo_name"] ?></a> 45 <p class="todo_deadline"> 46 <?php 47 if($loop["todo_deadline"] === '0000-00-00'){ 48 echo ''; 49 }else{ 50 echo $loop["todo_deadline"]; 51 } 52 ?> 53 </p> 54 <p class="todo_important"><?php echo $loop["todo_important"] ?></p> 55 </li> 56 <?php endforeach; ?> 57 </ul><!--/.todo_list --> 58 <input class="complete_btn" type="submit" value="チェックしたtodoを削除する" name="complete_btn"> 59 </form> 60 </div><!--/.todo_list_block --> 61 </div><!--/.program_area --> 62 </section><!--/.program_wrapper --> 63<section class="section_2"> 64</section> 65</main> 66</body> 67</html> 68

php

1【delete.phpのコード】 2<?php 3require_once('config.php'); 4require_once('common.php'); 5 6$id = $_POST['id']; 7 8$pdo = new PDO(DSN, DB_USER, DB_PASS); 9 10$todo = $pdo->prepare("DELETE FROM todo_add WHERE id = :id"); 11$todo->bindParam(":id", $id); 12$todo->execute(); 13//header('Location:index.php'); 14//exit(); 15 16?> 17

ご回答よろしくお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

<input class="checkbox" type="checkbox" value="<?php echo $id ?>" name="<?php echo $id ?>">
<?php var_dump($id); ?>

これだとnameにも$idの値が入ります。

投稿2020/11/09 03:05

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Keichi_Negishi

2020/11/09 03:56

よく考えるとnameにまで$idを入れる必要が無かったですね。 助かりました。ありがとうございます。
m.ts10806

2020/11/09 04:44

まだ解決に至ってないのでしょうか。
Keichi_Negishi

2020/11/09 05:06

ベストアンサーにしたつもりができていませんでした。 解決済みです。ありがとうございます。
m.ts10806

2020/11/09 05:33

解決されたようで何よりです。 この手の問題は設定と利用、実装の整合性がとれてないことが大抵の要因です。 よく流れを見ましょう
Keichi_Negishi

2020/11/09 07:41

アドバイスありがとうございます。 気をつけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問