douzao2590
2017-02-22 01:08
浏览 49
已采纳

在php中从动态表单中检索数据

How I can process a dynamic form. Number of options will vary by the number of options from the database. Based on yes/no value will be updated in the database is user want to test that parameter. Here is my code

<form action="?userid=<?php echo $userid;?>&tankid=<?php echo $tankid;?>&action=update" method="POST">
    <table width="100%">
        <tr>
            <th >Parameter name:</th>
            <th >Do you want to test it?</th>
        </tr>
        <?php

        while ($row = $records_param_info->fetch(PDO::FETCH_ASSOC)){
            $checked_yes = "";
            $checked_no = "";
            echo "<tr>";
            echo "<td>";
            echo $row['paramname'];
            echo "</td><td>";
            if ($row['active'] == 1){
                $checked_yes = "checked";
                $checked_no = "";
            } else {
                $checked_yes = "";
                $checked_no = "checked";
            }
            echo '<label>Yes</label><input type="radio" name='.$row['parameterid'].' '.$checked_yes.' value="1">';
            echo '<label>No</label><input type="radio" name='.$row['parameterid'].' '.$checked_no.' value="0">';
            echo "<td></tr>";
        }

        ?>


    </table>
    <br>
    <center><input type="submit" name="Update" value ="Update"></center>
    </form>

My question will be how to retrieve the data and processes it to the databse since the "name" will be always different and the number will be different.

图片转代码服务由CSDN问答提供 功能建议

如何处理动态表单。 选项数量因数据库中的选项数量而异。 基于是/否的值将在数据库中更新,用户希望测试该参数。 这是我的代码

 &lt; form action =“?userid =&lt;?php echo $ userid;?&gt;&amp; tankid =&lt;?php echo $ tankid;  ?&gt;&amp; action = update“method =”POST“&gt; 
&lt; table width =”100%“&gt; 
&lt; tr&gt; 
&lt; th&gt;参数名称:&lt; / th&gt;  
&lt; th&gt;你想测试吗?&lt; / th&gt; 
&lt; / tr&gt; 
&lt;?php 
 
 while($ row = $ records_param_info-&gt; fetch(PDO:  :FETCH_ASSOC)){
 $ checked_yes =“”; 
 $ checked_no =“”; 
 echo“&lt; tr&gt;”; 
 echo“&lt; td&gt;”; 
 echo $ row ['paramname'  ]; 
 echo“&lt; / td&gt;&lt; td&gt;”; 
 if($ row ['active'] == 1){
 $ checked_yes =“checked”; 
 $ checked_no =“”;  
} else {
 $ checked_yes =“”; 
 $ checked_no =“checked”; 
} 
 echo'&lt; label&gt;是&lt; / label&gt;&lt; input type =“radio”name ='。  $行[ '参数标识']“。  '$ checked_yes。'  value =“1”&gt;'; 
 echo'&lt; label&gt; No&lt; / label&gt;&lt; input type =“radio”name ='。$ row ['parameterid']。'  '$ checked_no。'  value =“0”&gt;'; 
 echo“&lt; td&gt;&lt; / tr&gt;”; 
} 
 
?&gt; 
 
 
&lt; / table&gt; 
&lt; br&gt;  ; 
&lt; center&gt;&lt; input type =“submit”name =“Update”value =“Update”&gt;&lt; / center&gt; 
&lt; / form&gt; 
   \  n 
 

我的问题是如何检索数据并将其处理到数据库,因为“名称”总是不同的,数字也会不同。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douniuta4783 2017-02-22 03:29
    已采纳

    If you are having problems distinguishing between your radio buttons and other form fields, you could modify the names of your radio buttons slightly to get them all into a single array:

    '<label>Yes</label><input type="radio" name=params[' . $row['parameterid'] . '] ' . $checked_yes . ' value="1">';
    

    using the following dummy data:

    $paramsFromDB = Array(
        Array('parameterid' => 101, 'paramname' => 'param one', 'active' => 0),
        Array('parameterid' => 202, 'paramname' => 'param two', 'active' => 1),
        Array('parameterid' => 303, 'paramname' => 'param three', 'active' => 0),
        Array('parameterid' => 404, 'paramname' => 'param four', 'active' => 1)
    );
    

    Your resulting html would look like this:

    <table width="100%">
            <tr>
                <th>Parameter name:</th>
                <th>Do you want to test it?</th>
            </tr>
            <tr>
                <td>param one</td>
                <td>
                    <label>Yes</label><input type="radio" name=params[101] value="1">
                    <label>No</label><input type="radio" name=params[101] checked value="0">
                <td>
            </tr>
            <tr>
                <td>param two</td>
                <td>
                    <label>Yes</label><input type="radio" name=params[202] checked value="1">
                    <label>No</label><input type="radio" name=params[202] value="0">
                <td>
            </tr>
            <tr>
                <td>param three</td>
                <td>
                    <label>Yes</label><input type="radio" name=params[303] value="1">
                    <label>No</label><input type="radio" name=params[303] checked value="0">
                <td>
            </tr>
            <tr>
                <td>param four</td>
                <td>
                    <label>Yes</label><input type="radio" name=params[404] checked value="1">
                    <label>No</label><input type="radio" name=params[404] value="0">
                <td>
            </tr>
        </table>
    

    your $_POST data would look like this:

    array(2) {
      ["params"]=>
      array(4) {
        [101]=>
        string(1) "0"
        [202]=>
        string(1) "1"
        [303]=>
        string(1) "0"
        [404]=>
        string(1) "1"
      }
      ["Update"]=>
      string(6) "Update"
    }
    

    So you have the data in the form param[parameterid] = active. So it's a simple matter to update your database accordingly:

    if (count($_POST['params']) > 0) {
    
        $sql = $db->prepare('UPDATE `table_name` SET `active` = ? WHERE `parameterid` = ?');
    
        foreach ($_POST['params'] as $parameterid => $paramvalue) {
            $sql->execute(Array($paramvalue, $parameterid));
        }
    }
    
    打赏 评论

相关推荐 更多相似问题