我有一个带有文本和无线电输入的HTML表,我希望用PHP将每一行插入到我的MySQL表中
MySQL表如下所示:
================================
| Name | Status | Ext |
================================
HTML表格
===============================================================
| Name | Present | Excused | Unexcused | Ext |
===============================================================
| text input1 | o | o | o | textarea |
---------------------------------------------------------------
| text input2 | o | o | o | textarea |
and so on...
*o's are radios
它从MySQL查询循环获取值,我希望它是 只能点击其中一个无线电,并将点击的无线电发送到状态列
代码
<form method="post" action="insert.php" enctype="multipart/form-data">
<table>
<tr>
<th>Name</th>
<th>Present</th>
<th>Excused</th>
<th>Unexcused</th>
<th>Ext</th>
</tr>
<?php
echo "<tr>";
$query = "select * from TbCard";
$sql = mysqli_query($connect, $query);
while ($data = mysqli_fetch_array($sql)) {
echo '<tr>';
echo"<td><input id='name' type='text' value='" . $data['Name'] . "' readonly style='border:none;width:350px'></input></td>";
echo"<td><input type='radio'></td>";
echo"<td><input type='radio'></td>";
echo"<td><input type='radio'></td>";
echo"<td><textarea></textarea></td>";
echo '</tr>';
}
}
echo "</tr>";
?>
</table>
<input type="submit" value="Insert">
</form>
编辑:该表位于表单标记中,并对另一个.php执行操作 我想要一个提交按钮来插入它
答案 0 :(得分:0)
将名称属性添加到单选按钮。但是,每个表行的名称应该是唯一的,因此最终可能会生成自动生成的名称。像这样:
...
$index = 0;
while ($data = mysqli_fetch_array($sql)) {
echo '<tr>';
echo"<td><input id='name' name='name_$index' type='text' value='" . $data['Name'] . "' readonly style='border:none;width:350px'></input></td>";
echo"<td><input type='radio' name='status_$index'></td>";
echo"<td><input type='radio' name='status_$index'></td>";
echo"<td><input type='radio' name='status_$index'></td>";
echo"<td><textarea name='Ext_$index'></textarea></td>";
echo '</tr>';
$index++;
}
...
事实上,您需要为每个字段添加唯一名称,包括text和textarea,以确保分别插入每行的值。
现在要检索在db中保存的值,你可以这样做:
foreach($_POST as $key => $val)
{
if(strpos($key, 'name_') === 0 )
{
$criteria = explode("_", $key);
$index = $criteria[2];
//now you can get the rest of the fields
$status = $_POST["status_$index"];
$name = $_POST["name_$index"];
$ext = $_POST["Ext_$index"];
//assuming you have a SaveFunction:
SaveFunction($name, $status, $ext);
}
}
答案 1 :(得分:0)
由于表是动态填充的,因此您需要使用数组作为名称属性
<table>
<tr>
<th>Name</th>
<th>Present</th>
<th>Excused</th>
<th>Unexcused</th>
<th>Ext</th>
</tr>
<?php
$query = "select * from TbCard";
$sql = mysqli_query($connect, $query);
$count = 0;
while ($data = mysqli_fetch_array($sql)) {
?>
<tr>
<td>
<input name="tableRow[<?php echo $count; ?>]['dataName']" id='name' type='text' value="<?php echo $data['Name'];?>" readonly style='border:none;width:350px'></input>
</td>
<td>
<input name="tableRow[<?php echo $count; ?>]['status']" type="radio" value="Present"> Present
</td>
<td>
<input name="tableRow[<?php echo $count; ?>]['status']" type="radio" value="Excused"> Excused
</td>
<td>
<input name="tableRow[<?php echo $count; ?>]['status']" type="radio" value="Unexcused"> Unexcused
</td>
</tr>;
<?php
$count++;
}
?>
</table>
php
就是这样的,假设数据中有值
$tableRow = $_POST['tableRow'];
foreach($tableRow as $row){
echo $row['dataName'].' '.$row['status'].'<br/>';
}
那应该显示你在表中每行选择的值,我不使用mysqli
所以我不会提供将它插入数据库的函数,但重要的是你现在有了需要的数据
要查看数组的内容,请使用print_r($tableRow)
注意: 我删除了表格中的echo
部分,我可能错过了一些引号或一些拼写错误,只是评论澄清< / em>的
答案 2 :(得分:0)
首先,您没有正确发送数据
echo"<td><input id='name' type='text' value='" . $data['Name'] . "' readonly style='border:none;width:350px'></input></td>";
echo"<td><input type='radio' name='status' value='Present' ".isset($data['Status']) && $data['Status']=='Present'? checked='checked':null."></td>";
echo"<td><input type='radio' name='Status' value='Excused' ".isset($data['Status']) && $data['Status']=='Excused'? checked='checked':null."></td>";
echo"<td><input type='radio' name='Status' value='Unexcused' ".isset($data['Status']) && $data['Status']=='Unexcused'? checked='checked':null."></td>";
echo"<td><textarea name='Ext'></textarea></td>";
这只是正确查看和插入的部分。如果您在insert.php方面需要帮助,请告诉我