我是php新手。我想动态创建从MySQL获取结果的复选框。如果我在员工表中有10条记录,那么它必须创建10个复选框,员工姓名为value。我看过几个教程制作一些复选框等但无法解决问题。请任何人帮助!!!
答案 0 :(得分:7)
试试这个:
<?php
//Create the query
$sql = "SELECT `name` FROM Employees";
//Run the query
$query_resource = mysql_query($sql);
//Iterate over the results that you've gotten from the database (hopefully MySQL)
while( $employee = mysql_fetch_assoc($query_resource) ):
?>
<span><?php echo $employee['name']; ?></span>
<input type="checkbox" name="employees[]" value="<?php echo $employee['name']; ?> /><br />
<?php endwhile; ?>
您在上面看到的示例依赖于实际正常运行的两件事:
答案 1 :(得分:2)
MySQL只是数据来源。同样的过程适用于从任何数据源(数组,文件内容,数据库等)制作复选框列表。该过程的骨架框架将是:
$sql = "select idfield, namefield FROM sometable ...";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
echo <<<EOL
<input type="checkbox" name="name[]" value="{$row['namefield']}" /> {$row['namefield']}<br />
EOL;
}
请注意,我已按照您的指定使用“名称字段”。但考虑一下你有2个或更多John Smith为你工作的情况 - 使用员工的身份证号码(无论你的数据库中有什么)比他们的名字更可靠。
答案 2 :(得分:2)
假设您获取的结果位于$ result数组中。
该阵列有10个子阵列 - 每个子阵列如下:
[0] => array
['name'] => 'ZainShah'
[1] => array
['name'] => 'Stack'
最简单的方法是:
foreach ( $result as $key => $employee ) {
echo '<label for="employee' . $key . '">' . $employee['name'] . '</label>'
echo '<input type="checkbox" name="employee[]" id="employee' . $key . '" value="' . $employee['name'] . '" />';
}
答案 3 :(得分:1)
这非常简单。我假设你的MySQL结果数据在一个名为$ employees的数组中,包含至少2个元素:id和name。你提到复选框的“值”必须是名称,但我会假设你想要显示在复选框旁边的HTML中。最好将“value”作为每个员工的数据库记录的id(因为员工可能具有相同的名称)。为复选框创建HTML只需要使用foreach()循环迭代它们,并创建一个php变量来保存HTML。
因此,假设您的$ employees数组看起来像这样:
[0] =>
'id' => '1'
'name' => 'Sam Jones'
[1] =>
'id' => '2'
'name' => 'Tom Smith'
[2] =>
'id' => '3'
'name' => 'Sarah Conners'
只需要遍历数组并创建输出:
// init the var to hold the HTML
$output = '';
// cook the HTML
foreach ($employees AS $k=>$v) {
$output .= "<input type='checkbox' name='employee_array[]' value='" . $v['id'] . "'> " . $v['name'] . "<br />";
}
在HTML表单中,只需回显$ output变量。请注意,“。=”操作数用于附加到我创建的$ output变量。表单字段的“名称”以“[]”结尾。这将创建一个名为“employee_array”的数组,在提交表单时将其传递回PHP。检查的每个项目都成为该数组的元素,其值为员工记录的ID。
希望有道理......
答案 4 :(得分:0)
在for循环中设置echo你将始终能够设置循环变量
现在只需回显/打印代码
答案 5 :(得分:0)
我已经很容易创建复选框以及任何php格式的单选按钮。唯一的问题是我正在使用Codeigniter MVC框架。
这是您可以在公共模型或任何帮助文件中插入的函数定义。
function createOptions($fieldName, $labelsArray=array(), $selectedOption, $fieldType,$valuesArray = array()) {
$returnString = '';
if(count($valuesArray)!=count($labelsArray))
$valuesArray=$lebelsArray;
if ($fieldType === 'checkbox') {
for ($i=0;$i<count($labelsArray);$i++) {
$returnString.='   <input type="checkbox" name=' . $fieldName.' value='.$valuesArray[$i].' id='.$valuesArray[$i];
if(in_array($valuesArray[$i], $selectedOption)){
$returnString.=' checked="checked" ';
}
$returnString.=' />  <label>'.$labelsArray[$i].'</label>';
}
}
if ($fieldType === 'radio') {
for ($i=0;$i<count($labelsArray);$i++) {
$returnString.='  <input type="radio" name=' . $fieldName.' value='.$valuesArray[$i].' id='.$valuesArray[$i];
if($valuesArray[$i]== $selectedOption)
$returnString.=' checked="checked" ';
$returnString.=' /><label>'.$labelsArray[$i].'</label>';
}
}
return $returnString;
}
并且,您必须在视图文件中将此函数称为
<?php
echo $this->common_model->createOptions('userHobbies[]', $hobbyOptions, $userHobbies, 'checkbox'); ?>
第一个参数是复选框字段或无线电字段的名称,对于两种情况,所有选项的名称始终相同。第二个是标签数组,第三个是选定的选项,它们会在加载表单时显示这些选项。第四种是字段类型,它将是一个字符串,作为“复选框”或“无线电”。第五个是值数组,如果存在,它将包含标签的值,其顺序与标签的顺序相同。如果不存在,则标签数组将被设为值数组