我需要保存从多动态选择使用到数据库的信息

时间:2018-05-21 02:03:04

标签: php

我正在尝试使用从数据库中的评级文本动态生成的多选来制作评级系统。最终结果应如下所示:Rating Service但现在我需要在单击保存后保存所选选项。 在数据库中有两个表,第一个有2列,第一个是id,第二个是文本的速率

第二个表是我不会保存用户使用php选择的选择

页码

      <table class="table table-striped">
          <thead>
            <tr>
              <th>#</th>
              <th>About</th>
              <th>Provider</th>
              <th>Rating</th>
             </tr>
           </thead>
  <?php   
         $query_rate_text = "SELECT * FROM rateing_text";
         $selecting_rates = mysqli_query($con,$query_rate_text);

          $i = 0;                                 
     while($row_rate = mysqli_fetch_assoc($selecting_rates)){
        $rate_id= $row_rate['rate_id'];
        $rate_text= $row_rate['rate_text'];



        $i++ 
    ?>       
     <form name="rating_form">  
       <tbody>
        <tr>
           <td><?php echo $i ?></td>
           <td> <?php echo $rate_text ?></td>
           <td><span class="badge badge-danger">
            <?php echo $provider_name ?></span></td>
           <td>
            <select name="p<?php echo $i ?>">
                <option value="1">Very Bad</option>
                <option value="2">Bad</option>
                <option value="3">Good</option>
                <option value="4">Very Good</option>
                <option value="5">Excelent</option>
            </select>
          </td>
          </tr>
         </tbody>
       <?php } ?>
        <tfoot>
         <tr>
         <td colspan="3"><button type="submit" name="save_rate"> Save </button> </td>
          </tr>
          </tfoot>
                       `enter code here`                    
          </form>
        </table>

How can I get info form the select and save them to the database ?

1 个答案:

答案 0 :(得分:0)

单选按钮比<select>好得多 费率id和所选值必须作为key =&gt;值传递 您需要停止使用Word Press语法 学习使用Herdoc Syntax
使用SELECT *是一种糟糕的标准做法 获取数组并使用list

指定值

此代码未经测试。

<?php
echo <<<EOT
<form name="rating_form" action="#">  
<table class="table table-striped">
<tr><th>#</th><th>About</th><th>Provider</th><th>Rating</th></tr>

EOT;

$query_rate_text = "SELECT `rate_id`,`rate_text` FROM rateing_text WHERE 1 ORDER BY `rate_id`";
$selecting_rates = mysqli_query($con,$query_rate_text);

$i = 0;
while(list($rate_id, $rate_text) = mysqli_fetch_array($selecting_rates)){
  $i++;
  echo "<tr><td>$i</td><td>$rate_text</td><td>$provider_name</td><td>5<input type="radio" name=\"$rate_id\" value=\"5\" />&#x2003;4<input type="radio" name=\"$rate_id\" value=\"4\" />&#x2003;3<input type="radio" name=\"$rate_id\" value=\"3\" />&#x2003;2<input type="radio" name=\"$rate_id\" value=\"2\" />&#x2003;1<input type="radio" name=\"$rate_id\" value=\"1\" /></td></tr>\n"; 
}
echo '</table><button type="submit" name="save_rate"> Save </button></form>';
?>


更新

  

非常感谢你帮助理解新的方式,还有一个   我怎么能从这个收音机5按钮插入数据   他们到数据库到名为rating的表,让我们说3   列ID和提供者名称以及它自己的速率,再次感谢您   帮助

radio输入类型是一种更加用户友好的方式,然后是繁琐的select

我使用rate_id设置单选按钮作为"name"的方式,以便将选定的"value"作为key =&gt;值对传递给表单的动作脚本。

您的选择名称还应包含rate_id

您的代码所遇到的问题是,操作脚本将会收到序列号的密钥,这些密钥没有意义,很难知道表单发布了多少个。

要传递提供名称,请​​添加隐藏的输入类型:

<input type="hidden" name="provider" value="$provider_name" />

我会从表td中删除提供程序。

不知道你的rate_id约定我无法改进单选按钮命名约定。

我这样做的方式是当传递key =&gt;值对时,我会开始键#34; name&#34;具有独特的性格,没有其他&#34;名称&#34;在表单中将以该字符开头。

例如,如果rate_id是一个数值,我可以预先设置一个&#39; k&#39;到数字键值。
而不是

name=\"$rate_id\"

我会用

name=\"k$rate_id\"

在接收动作脚本中,我会得到像这样的<= p>的key =&gt;值

$provider_name = $_GET['provider']
foreach($_GET as $key => $value)){
  if(substr($key,0,1) == 'k'){
    $rate_id = intval(substr($key,1));
    $rating = intval($value);
    $sql = "INSERT INTO `table` (`rate_id`, `provider_name`, `rating`) VALUES ($rate_id, '$provider_name', $rating)"; 
    mysqli_query($link,$sql);
  }
}