@akenoayu17 (りんご)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

ラジオボタンで選択したユーザーデータを別ページに表示させたい

PHPの練習で、ユーザーデータの更新処理を試みています。

発生している問題・エラー

ラジオボタンで更新したいユーザーデータのラジオボタンにチェックを入れ、
更新ボタン押下でそのユーザーデータを
選択したユーザーを取得するメソッドが思いつきません、、
ご助言をいただきたいです。

下記、viewのユーザーデータをDBから表示するコードです。
このラジオボタンからユーザーが選択し、更新・削除ボタンの押下で
選択したデータを別ページに表示させたいです。

### 該当するソースコード
```php
<?php foreach($users as $user):?>
  <div class="user-data">
 <input type="radio" name="option" value="">
 <input type="text" name="id" value="<?= h($user->id); ?>">
 <input type="text" name="name" value="<?= h($user->username); ?>">
 <input type="text" name="email" value="<?= h($user->email); ?>">
 <input type="text" name="image" value="<?= h($user->image); ?>">
 <input type="text" name="authority" value="<?= h($user->authority); ?>">
 <input type="text" name="delflag" value="<?= h($user->delflag); ?>"><br>
 </div>
 <?php endforeach; ?><br>

<button type="submit" name="admin-user" class="btn-primary" formaction='/bbs/public_html/admin_update_delete.php'>更新・削除</button>

やりたいイメージ
スクリーンショット 2022-07-07 9.01.29.png

自分で試したこと

更新・削除ボタンを押したときにコントローラーに値を渡す→viewで表示
と考え、コントローラーのメソッドを考えましたが、
この処理とviewでどの様に表示させるかどうするかわかりません。
1つだけの表示ですが、inputタグにphpを埋め込ませるのでしょうか?

protected function option(){
    if(isset($_POST['option'])){
      $option = $_POST['option'];
    // 表示する処理。データを渡したい
    } else {
      echo 'ユーザーが選択されていません';
    }
  }
0 likes

1Answer

まず、ラジオボタンに $user->id を格納してあげましょう

<input type="radio" name="option" value="<?= h($user->id) ?>">

そうすることで、radio ボタンの値で更新すべきユーザーの id を取得できます

また、ユーザーごとに input の name を配列に変更する必要があります
配列にせず input の name が重複している状態だと、正しく値を取得できません

 <input type="text" name="id[<?= h($user->id); ?>]" value="<?= h($user->id); ?>">
 <input type="text" name="name[<?= h($user->id); ?>]" value="<?= h($user->username); ?>">
 <input type="text" name="email[<?= h($user->id); ?>]" value="<?= h($user->email); ?>">
 <input type="text" name="image[<?= h($user->id); ?>]" value="<?= h($user->image); ?>">
 <input type="text" name="authority[<?= h($user->id); ?>]" value="<?= h($user->authority); ?>">
 <input type="text" name="delflag[<?= h($user->id); ?>]" value="<?= h($user->delflag); ?>"><br>

そうする事で、選択したユーザーの値を取得できるようになります


protected function option()
{
    if(isset($_POST['option'])){
        $user_id = $_POST['option'];

        $id = $_POST['id'][$user_id];
        $name = $_POST['name'][$user_id];
        $email = $_POST['email'][$user_id];
        $image = $_POST['image'][$user_id];
        $authority = $_POST['authority '][$user_id];
        $delflag = $_POST['delflag'][$user_id];

        // 表示する処理。データを渡したい
    } else {
      echo 'ユーザーが選択されていません';
    }
  }

0Like

Comments

  1. @akenoayu17

    Questioner

    @kazumacchiさん
    有難うございました!ラジオボタンの$user->idの格納について盲点でした。

Your answer might help someone💌