【问题标题】:how to use php variable in html input name如何在 html 输入名称中使用 php 变量
【发布时间】:2017-04-21 11:30:05
【问题描述】:

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

我有带有 php 变量作为输入名称的单选的动态 html 表单,但我无法获取单选按钮的值。以下是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; ?>[]"

我们将不胜感激。

【问题讨论】:

  • 请详细说明:您的需求根本不清楚。您的 PHP 代码是在 HTML 部分之前,还是在相反的情况下使用来自它的内容?反正有一些奇怪的地方,比如$_POST["{$pid}"]。另一方面,您的意思是 name="&lt;?php echo $pid; ?&gt;[]" 目前没有提供预期的 HTML 属性吗?
  • $_POST["title"] 的值是多少?再想一想,当你print_r($_POST) 时你会得到什么?
  • 感谢您的宝贵时间。我想从变量名 中检索单选按钮的值
  • 我能够获取除单选按钮的值之外的所有其他输入的值,因为这是我在其名称上添加 php 变量的唯一输入
  • 感谢您的帮助 Rajdeed,这是我得到的错误:Undefined offset: 28 in E:\\----index.php on line 120

标签: php html variables input dynamic


【解决方案1】:

您的代码中需要更改的地方很少,例如:

  • 更改此语句

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

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

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

    从您的查询中删除这个逗号。

  • for 循环之后使用这个$count++; 没有意义,所以也删除这个语句。

更新:

根据您的评论,

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

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

  • 更改此语句

    $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的好读物。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多