我正在制作一个广告系列项目,管理员可以使用管理面板预订一些席位。当他想要编辑它时,先前选择的座位应该突出显示。这就是我为实现这个目标而做的。
if ($mode == 'EDIT')
{
$k=1;
for($i=1;$i<=10;$i++)
{
for($j=1;$j<=10;$j++)
{ ?>
<div id='<?php echo $k ;?>' class="seat_selection"
<?php foreach($seat_data as $seats)
{
if($seats->iSeatNumber == $k)
{?>
style='min-height:25px;min-width:25px;background-color:#12B22F;float:left;margin:0 0 5px 10px;cursor:pointer;'
<?php
}
else
{?>
style='min-height:25px;min-width:25px;background-color:#969696;float:left;margin:0 0 5px 10px;cursor:pointer;'
<?php
}
}
?>
>
<?php echo $k;?>
</div>
<?php $k++;
} ?>
<br /><br />
<?php
}
}
但只有所选座位中的第一个座位才会突出显示(如第五个座位,如屏幕截图所示)。休息保持不变。
截图
我认为问题在于foreach
的循环。我是以错误的方式做的吗?或者还有其他方法吗?任何帮助将不胜感激。
我正在为datamapper
(php框架)使用codeigniter
(db操作)。
答案 0 :(得分:4)
如果我理解你的任务,我认为这是实现它的一种非常糟糕的方式。
首先尝试制作一个包含所有突出显示的座位的数组:
$highlighted = array();
foreach($seat_data as $seat) {
$highlighted[] = $seat->iSeatNumber;
}
$k = 1;
for($i=1;$i<=10;$i++)
{
for($j=1;$j<=10;$j++)
{
if(in_array($k, $highlighted))
{
echo '<div id="'.$k.'" class="seat_selection" style="min-height:25px;min-width:25px;background-color:#12B22F;float:left;margin:0 0 5px 10px;cursor:pointer;">'.$k.'</div>';
} else {
echo '<div id="'.$k.'" class="seat_selection" style="min-height:25px;min-width:25px;background-color:#969696;float:left;margin:0 0 5px 10px;cursor:pointer;">'.$k.'</div>';
}
$k++;
}
echo "<br/><br/>";
}
它更干净。虽然我没有测试它,但它应该有用。
答案 1 :(得分:2)
这是一个类似于Vlakarados的例子,但只使用一个循环。我们的想法是,您构建一个突出显示的座位ID数组,然后在循环时检查此数组中是否$i
,如果是,则添加突出显示的类。
您可以创建一个突出显示/未突出显示的类,而不是拥有所有内联CSS,如下例所示。
$highlightedSeats = array(2, 6, 12, 21, 44);
for($i=1; $i<=100; $i++) {
$class = (in_array($i, $highlightedSeats)) ? 'highlighted' : 'not-highlighted';
echo '<div id="' . $i . '" class="seat_selection ' . $class . '">' . $i . '</div>';
if($i % 10 == 0) {
echo '<br /><br />';
}
}
答案 2 :(得分:0)
尝试更改为:
if ($mode == 'EDIT'){
$k=1;
for($i=1;$i<=10;$i++){
for($j=1;$j<=10;$j++){ ?>
<?php foreach($seat_data as $seats){
if($seats->iSeatNumber == $k){
$style="min-height:25px;min-width:25px;background-color:#12B22F;float:left;margin:0 0 5px 10px;cursor:pointer;";
}
else{
$style='min-height:25px;min-width:25px;background-color:#969696;float:left;margin:0 0 5px 10px;cursor:pointer;';
}
}
?>
<div id='<?php echo $k ;?>' class="seat_selection" style="<?php echo $style; ?>">
<?php echo $k;?>
</div>
<?php $k++;
} ?>
<br /><br />
<?php
}
}