我一直在处理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; ?>[]"
任何帮助都将不胜感激。
答案 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的好读。