所以这就是我基本上想要做的事情。 我显示了一个成员列表,每个成员旁边都有一个复选框。
就像这样:
[] Spongebob
[] Patrick
[] Squidward
[]桑迪
[] Krab先生
[确定]
每当我选择多个成员,然后单击“确定”,它将导致打印页面。在该打印页面中,我希望成员列在两列中,如下所示:
海绵宝宝|帕特里克|
Squidward |桑迪|
先生。 Krab |
到目前为止,我只是在一个专栏中完成了它。
这是我目前的代码:
if(isset($_POST['ok'])){
if(!empty($_POST['check_list'])) {
$check_list = $_POST['check_list'];
foreach ($check_list as $selected){
$sql = mysql_query("SELECT * FROM addmember WHERE id = '".$selected."' ORDER BY id");
$limit = 2;
$count = 0;
echo "<table>";
while ($row = mysql_fetch_array($sql)){
$name = $row ['name'];
if ($count < $limit){
if ($count == 0){
echo "<tr>";
}
echo "<td>$name";
}else{
$count = 0;
echo "</tr><tr><td>
$name</td><tr>";
}
$count++;
}
echo "</tr></table>";
}
echo '<script>window.print();</script>';
}
else{
echo "<script>alert('Please select at least one member.');</script>";
echo "<script>window.history.go(-1)</script>";
}
}
非常感谢任何建议和意见..非常感谢。
答案 0 :(得分:1)
我认为你没有必要,因为你只需要一行。你有点过于复杂的事情。
您需要检查
$count
为0 - 开始行$count == $limit
或者是所有行的最后一项 - 结束行就是这样。在echo <td>
与$name
之间。
所以试试这个:
if(isset($_POST['ok'])){
if(!empty($_POST['check_list'])) {
$check_list = $_POST['check_list'];
$itemsCount = count($check_list);
$limit = 2;
$count = $doneCount = 0;
echo "<table>";
foreach ($check_list as $selected){
$sql = mysql_query("SELECT * FROM addmember WHERE id = '".$selected."' ORDER BY id LIMIT 1");
$row = mysql_fetch_array($sql);
$name = $row['name'];
// Start new row
if ($count == 0){
echo "<tr>";
}
// Echo name
echo "<td>".$name."</td>";
// End row, increment counters
if (++$count == $limit || $itemsCount == ++$doneCount ){
$count = 0;
echo "</tr>";
}
}
echo "</tr></table>";
echo '<script>window.print();</script>';
}
else{
echo "<script>alert('Please select at least one member.');</script>";
echo "<script>window.history.go(-1)</script>";
}
}
++$count
递增1然后返回它,所以我们比较并增加一个。请参阅PHP: Incrementing/Decrementing Operators。
不再使用mysql_*
函数,因为它们已被弃用。而是使用MySQLi或PDO。
进一步阅读: