-2

我正在做一个活动项目,管理员可以使用管理面板保留一些席位。当他想编辑它时,以前选择的座位应该突出显示。这就是我为实现这一目标所做的

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
            }
        }

但只有所选座位中的第一个座位被突出显示(如屏幕截图中的第 5 个座位​​)。休息保持不变。

截屏 座位选择

我认为问题在于foreach. 我做错了吗?或者还有其他方法吗?任何帮助将不胜感激。

我正在将datamapper(db 操作)用于codeigniter(php 框架)。

4

3 回答 3

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/>";
}

干净多了。虽然我没有对此进行测试,但它应该可以工作。

于 2012-08-22T06:32:22.770 回答
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 />';
    } 
} 
于 2012-08-22T06:49:07.473 回答
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
}
}
于 2012-08-22T06:50:30.767 回答