39533


標題の件、要素を配列に格納して利用する？？という記事をおみかけしますが  
PHPが初めてのことで、よく理解できません。どなたかご教示をお願いできませんでしょうか？

今対応しようとしていることは  
羅列されるラジオボタンに、前回指定（クッキー）を受けた指定を自動的に行い、画面利用者の操作軽減を  
図る、というものです。

このラジオボタンの羅列は、以下のように動的で生成されます。  
現在のところ同名（name=dtype）で配置されますが、解決できれば変更しても良いと考えています。  
（name部分に"[]"を付けて配列化する記事をおみかけしましたが、理解ができず現況"[]"なしに留めている）

# ===質問===

以下が今対応しようとしていることのコーディングですが、

[code]

    if (isset($_COOKIE["last_dtype"])){
    
[/code]

の中でどういった記述を行えば、この目的が達成されるのでしょうか？

[code]

    <?php include "php_classes/classes.php";
        // 伝票タイプのラジオボタンリスト生成
        $sql = "SELECT TYPE, COMMENT FROM WFL_DTYPE WHERE DELFLG=0 ORDER BY TYPE";
        try {
            //DBへ接続 【php_classes/classes.phpに接続先は書いてあります】
            $db = new ms0connect();
            $conn = $db->dbconnect();
            $stmt=$conn->prepare($sql);
            $stmt->execute();
    
            while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
                print "<input type=\"radio\" name=\"dtype\" class=\"dtype\" value=\"".$row["TYPE"]."\"/>".$row["COMMENT"];
                PRINT "　\n\t\t\t\t\t";
            }
    
            $conn = null;
    
            if (isset($_COOKIE["last_dtype"])){
                //*** name="dtype"のラジオボタンを順次（ループ）参照し、当該HTML要素のvalueが    ***//
                //*** 条件文のクッキーと同値である場合　選択した表示を行いたい。     ***//
            }
    
        } catch (PDOException $e) {
            error_log("### SQL Serverデータ取得失敗 ⇒".$sql."###".$e->getMessage(),0);
            exit();
        } 
    ?>
    
[/code]

別途、table内の行違いで同じnameのinput
type=text要素を参照していかなければならない課題もあるので、当案件の理解を流用して、こちらも達成したいと考えています。

何卒よろしくお願い申し上げます。


CC BY-SA 3.0
2017-11-12T06:43:28.430
39513
2017-11-13T02:06:51.600
2020-06-17T08:14:45.997
-1
25696
question
php html html5
同じHTML要素名の内容:VALUEを、PHP側で捉える方法を教えてください。


２つほどポイントが有りますので、長文になりますがご容赦くださいませ。

（１)フォームの配列化について  
ラジオであれば択一選択なので配列（name=dtype[]）にする必要はないですね。  
チェックボックス等の複数選択であれば必要になります。

（２）HTMLの吐き出しのタイミングでデフォルトチェックを入れる  
radioやcheckboxにデフォルトでチェックを入れる方法はinputタグの属性に
`checked="checked"`を追加すればいけます。つまりinputタグを生成している処理で  
合わせて属性の追加が必要です。  
Cookieには最終チェックのradioのvalueが代入されていると仮定すると

[code]

    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        $default_check = "";　//空文字
        if (isset($_COOKIE["last_dtype"])){ //Cookieが設定されている
           if ($_COOKIE["last_dtype"] == $row["TYPE"]) { //更に該当のvalueが設定されている場合
              $default_check = "checked=\"checked\""; // デフォルトチェックの属性を追加
           }
        }
        print "<input type=\"radio\" name=\"dtype\" class=\"dtype\" value=\"".$row["TYPE"]."\" ".$default_check." />".$row["COMMENT"];//Cookieが存在するvalueの値だった場合はデフォルトチェック属性が追加、それ以外は空文字が追加
        PRINT "　\n\t\t\t\t\t";
    }
    
[/code]

上記のようにinputを生成するときにデフォルトチェックを入れるため


CC BY-SA 3.0
2017-11-13T02:06:51.600
39533
2017-11-13T02:06:51.600
22665
39513
answer