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

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

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

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

Q&A

解決済

1回答

1691閲覧

ラジオボタンで選択しているレコードをPOSTで取得したい

mmm022

総合スコア5

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

0グッド

0クリップ

投稿2021/06/23 03:24

ラジオボタンで選択しているレコードの情報(ID)をPOSTで送り、編集画面を作成したいです。
ですが、現在POSTで取得できておらず変数の中身がnull状態で進めることができません。

※ラジオボタンはレコード全件分だけforeachで表示させています。

DB設計

DB名:DSS
テーブル名:M_COMPANY

COMPANY_IDCOMPANY_nameCOMPANY_TL
0001株式会社testカブシキガイシャテスト

実現したい動作

1.編集したいレコードをラジオボタンで選択。(index.php)
2.選択された該当のレコードのみを編集できるようにする(edit.php)

index

1 <tbody> 2 <?php foreach($M_COMPANY as $data):?> 3 <tr> 4 <td><input type="radio" name="record" value="<?=$data['company_ID'] ?>" data-json="<?=htmlspecialchars(json_encode($data))?>"></td> 5 <td><?php echo $data['company_ID']; ?></td> 6 <td><?php echo $data['company_name']; ?></td> 7 <td><?php echo $data['company_TL']; ?></td> 8 <td><?php echo $data['postal']; ?></td> 9 <td><?php echo $data['address']; ?></td> 10 <td><?php echo $data['department']; ?></td> 11 <td><?php echo $data['tel']; ?></td> 12 <td><?php echo $data['fax']; ?></td> 13 <td><?php echo $data['email']; ?></td> 14 </tr> 15 <?php endforeach; ?> 16 </tbody> 17 </table> 18 19 <a href="register.php">新規会員登録</a> 20 <button type="submit" name="company_ID" onclick="location.href='edit.php'" value="<?=$data['company_ID'] ?>">編集</button> 21 <button type="button" class="btn btn-red">削除</button> 22

edit.php

1 2<?php 3 session_start(); 4 5 $company_ID = isset($_POST['company_ID'])? htmlspecialchars($_POST['company_ID'],ENT_QUOTES,'utf-8'):''; 6 7 if($company_ID == 'company_ID'){ 8 header("Location:./test.php"); 9 exit; 10 } 11 12 //DB接続 13 try{ 14 $dbh = new PDO('mysql:dbname=DSS; host=localhost; charset=utf8','maika','powerB1234'); 15 }catch(PDOException $e){ 16 var_dump($e->getMessage()); 17 exit; 18 } 19 $stmt = $dbh->prepare('SELECT * FROM M_COMPANY WHERE company_ID = :company_ID'); 20 $stmt->bindValue(":company_ID",$company_ID); 21 $stmt->execute(); 22 $edit = $stmt->fetchAll(PDO::FETCH_ASSOC); 23 24 print_r($edit); 25 26?> 27<!DOCTYPE html> 28<html> 29 <head> 30 </head> 31 <body> 32 <header> 33 </header> 34 <main> 35 <h3>編集</h3> 36 <form class="edit-form" action="./update_news.php" method="POST"> 37 38 <p>企業名</p> 39 <input type="text" name="title" value="<?Php echo $edit[0]['company_name']; ?>" required> 40 41 <p>企業名フリガナ</p> 42 <textarea name="content" ><?php echo strip_tags($edit[0]['company_TL']); ?></textarea> 43 44   <button type="submit" class="btn btn-blue">更新する</button> 45 </form> 46 </main> 47 48 <footer> 49 </footer> 50 51 </body> 52</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

location.href

遷移先に飛ばしてるだけでフォームリクエストにはなっていません。そしてname=record使ってないのでラジオボタンも無関係になっています。
ボタンに埋め込んだvalue値もループ抜けたあとの最後の値しか保持してないのでは。

onclickによる遷移ではなく、formのactionにedit.php指定してmethodにpostを指定すれば良いと思います。

投稿2021/06/23 04:00

編集2021/06/23 04:02
m.ts10806

総合スコア80850

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

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

mmm022

2021/06/23 04:16

基本的な部分、fomeの記述忘れ等を修正後きちんとPOSTで値を取得することができました! ありがとうございます。 >>ボタンに埋め込んだvalue値もループ抜けたあとの最後の値しか保持してないのでは。 これに関しては自分も現在困っている状態です。何かいい方法はありますでしょうか?
m.ts10806

2021/06/23 04:20

そのためにラジオボタンに保持させてるのではないのですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問