如何在html输入名称中使用php变量

时间:2016-12-06 18:02:20

标签: php html variables input dynamic

我一直在处理php问题,我想我应该问一个问题,希望我能在这里得到帮助。

我有动态html表单,带有php变量的无线电作为输入名称,但无法获得单选按钮的值。以下是php和html代码:

if(isset($_POST["title"])) {            
$count = count($_POST["title"]);
for($i=0;$i<$count;$i++) {
    if(!empty($_POST["title"][$i])) {
        $pid = intval($_POST["pid"][$i]);
        $title = $_POST["title"][$i];
        $available = $_POST["{$pid}"];
        //exit;
        $sql = "UPDATE tracks SET title='$title', available='$available', WHERE id='$pid'"; 
        $query = mysqli_query($db_connect, $sql);
    }
}
$count++;

}

<table>
 <tr>
   <td><input name="<?php echo $pid; ?>[]" type="radio" 
   id="sell<?php echo $pid; ?>" value="Sell"></td>
   <td width="27%">
   <label for="sell<?php echo $pid; ?>">Sell </label></td>

   <td width="4%"><input name="<?php echo $pid; ?>[]" 
   id="pvcy<?php echo $pid; ?>" type="radio" value="Private"></td>
    <td width="17%">
    <label for="pvcy<?php echo $pid; ?>">Private</label>
    </td>

    <td width="4%">
    <input name="<?php echo $pid; ?>[]" id="pblc<?php echo $pid; ?>"
     type="radio" value="public"></td>
   <td width="43%">
   <label for="pblc<?php echo $pid; ?>"> Free </label></td>
  </tr>
</table>

我无法从输入名称中获取单选按钮的值:

name="<?php echo $pid; ?>[]"

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要在代码中更改一些内容,例如:

  • 更改此声明

    $available = $_POST["{$pid}"];
    

    $available = $_POST[$pid][0];
    
  • 您的UPDATE查询错误。

    $sql = "UPDATE tracks SET title='$title', available='$available', WHERE id='$pid'";
                                                                    ^ see this comma
    

    从查询中删除此逗号。

  • $count++;循环之后使用此for毫无意义,因此请删除此语句。

更新

根据您的评论,

  

...错误是由于未选择或检查单选按钮造成的。关于如何再次验证未选择按钮的任何想法?

您需要在代码中更改两件事,例如:

  • 更改此声明

    $available = $_POST["{$pid}"];
    

    $available = isset($_POST[$pid][0]) ? $_POST[$pid][0] : "";
    
  • 逐步构建UPDATE查询,如下所示:

    $sql = "UPDATE tracks SET title='$title'";
    if(!empty($available)){
        $sql .= ", available='$available'";
    }
    $sql .= " WHERE id='$pid'";
    

旁注:了解prepared statements因为您的查询现在容易受到SQL注入攻击。这是对how you can prevent SQL injection in PHP的好读。