2012-08-22 120 views
-2

我正在做一个活动项目,其中管理员可以使用管理面板保留一些座位。当他想编辑它时,先前选定的座位应该突出显示。这就是我为实现这一我可以在这样的表单元素中使用php吗?

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座)。休息不变。

截图 Seats Selection

我认为这个问题是与foreach的循环。我是以错误的方式做事吗?或者还有其他方法吗?任何帮助将不胜感激。

我为codeigniter(php框架)使用datamapper(db操作)。

+2

是什么'$ seats-> isSeatNumber()'返回? – billyonecan

+1

你可以举一个'$ seat_data'的例子吗? –

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

这是干净多了。虽然我没有测试它,但它应该工作。

+0

感谢队友..工作很好:)谢谢你的提示。我将一个数值等同于一个数组:O. 'in_array()'是做这件事的正确方法 –

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 />'; 
    } 
} 
+0

是的,即使是这个任务的更好的解决方案,但我认为使用mod来放置换行符有点多用途,无论如何,我会用自己的方式。 –

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 
} 
} 
相关问题