无法弄清楚如何解决这个问题。
我正在制作一个包含大量核对表的页面。目标是将标签和复选框值作为动态值。
我有一个DB表,设置如下:
+---------+-------------+-----------------+
| ID | name | value |
+---------+-------------+-----------------+
| 1 | checkbox1 | checkbox1value |
| 2 | checkbox2 | checkbox2value |
+---------+-------------+-----------------+
我的目标是在数据库上运行查询,并能够为每一行设置PHP变量。
因此,我们可以说核对清单项目如下:
<input type="checkbox" name="checkbox" id="checkbox_id" value="<?php echo $val_checkbox1 ?>">
<label for="checkbox_id"><?php echo $label_checkbox1 ?></label>
<input type="checkbox" name="checkbox" id="checkbox_id2" value="<?php echo $val_checkbox2 ?>">
<label for="checkbox_id2"><?php echo $label_checkbox2 ?></label>
我可以运行一个基本的:
"SELECT * FROM table_name WHERE name = checkbox1"
$val_checkbox1 = $row['name'];
$label_checkbox1 = $row['value'];
但是我需要为每个复选框项目执行此操作,并且会有20 +。
我需要这样,以便用户可以拥有一个管理页面,并自己编辑复选框的值,而无需访问数据库。
我只需要一种方法来设置变量及其数据库中的值。
希望这有道理吗?
答案 0 :(得分:0)
这应该这样做:
<?php
/* Connect to an ODBC database using PDO (which is more secure than the
older mysql libraries because it supports query parameters). */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$conn = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
// Actual code example
$sql = 'SELECT * FROM table_name';
foreach($conn->query($sql) as $row) {
echo '<input type="checkbox" name="checkbox'.$row['id'].'" id="checkbox_'.$row['id'].'" value="'.$row['value'].'">';
echo '<label for="checkbox_'.$row['id'].'">'.$row['name'].'</label>';
}
更新: 更通用的功能:
// Actual code example
$sql = 'SELECT * FROM table_name';
foreach($conn->query($sql) as $row) {
if($row['type']=='checkbox') {
echo '<input type="checkbox" name="checkbox'.$row['id'].'" id="checkbox_'.$row['id'].'" value="'.$row['value'].'">';
echo '<label for="checkbox_'.$row['id'].'">'.$row['name'].'</label>';
} else {
echo '<label for="input_'.$row['id'].'">'.$row['name'].'</label>';
echo '<input type="'.$row['type'].'" name="input'.$row['id'].'" id="input_'.$row['id'].'" value="'.$row['value'].'">';
}
}
答案 1 :(得分:0)
全部读取并将它们存储在一个数组中。
$checkboxes = array();
$i = 0;
$sql = "SELECT * FROM table_name"
$query = mysql_query($sql);
while($row = mysql_fetch_assoc($query))
{
$checkboxes[$i] = new array();
$checkboxes[$i]['label'] = $row['label'];
$checkboxes[$i]['value'] = $row['value'];
$i++;
}
如果稍后需要另一个参考,也许是标签,你也可以使用其他东西作为数组的键而不是变量$i
。