如何在1循环中显示它

时间:2014-05-01 04:32:26

标签: php loops foreach

在我网站的后端,我添加了更多类别,如下所示

<strong>Tour category : </strong><br />
                 <select name="category_id">
                     <?php
                        foreach($category_lists as $list){
                            if($list['id'] == $arr_collect['category_id']){
                                $sel = ' selected="selected" ';
                            }else{
                                $sel = null;
                            }
                            echo '<option value="'.$list['id'].'"'.$sel.'>'.$list['name'].'</option>';
                        }
                    ?>
                </select>
                <br clear="all" />
                <strong>Tour category 2: </strong><br />
                 <select name="category_id2">
                 <option value="">Select Another</option>
                     <?php
                        foreach($category_lists as $list){
                            if($list['id'] == $arr_collect['category_id2']){
                                $sel = ' selected="selected" ';
                            }else{
                                $sel = null;
                            }
                            echo '<option value="'.$list['id'].'"'.$sel.'>'.$list['name'].'</option>';
                        }
                    ?>
                </select>
                <br clear="all" />
                <strong>Tour category 3: </strong><br />
                 <select name="category_id3">
                 <option value="">Select Another</option>
                     <?php
                        foreach($category_lists as $list){
                            if($list['id'] == $arr_collect['category_id3']){
                                $sel = ' selected="selected" ';
                            }else{
                                $sel = null;
                            }
                            echo '<option value="'.$list['id'].'"'.$sel.'>'.$list['name'].'</option>';
                        }
                    ?>
                </select>

在前端,我有这个

<?php 
            $sql_ci = "SELECT * FROM location WHERE parent_id <> 0 ORDER BY parent_id, sort ";
            $result_ci = mysql_query($sql_ci);
            $cities = $Manager->fetchAssoc($result_ci); //peek_array($cities);
            if(!empty($cities)){ 
                foreach($cities as $city){ 
                $i = 1; // for active category
                $sql_count = "SELECT * FROM tour t, tour_category c 
                where t.location_id = {$city['id']}  and t.type = 'P'
                group by t.category_id AND t.category_id2"; //echo $sql_count.'<br />';
                $result_count = mysql_query($sql_count);
                $count = $Manager->fetchAssoc($result_count);
        ?>
            <ul class="tours-accord tour-private" id="tourcity<?php echo $city['id'];?>">
                <?php   
                        $sql_ca = "SELECT * FROM tour_category ORDER BY sort";
                        $result_ca = mysql_query($sql_ca);
                        $categories = $Manager->fetchAssoc($result_ca);
                        if(!empty($categories)){ 
                            foreach($categories as $cat){

                                $sql_tour = "SELECT t.* FROM tour t  
                                WHERE 
                                     t.touronline = 'yes' 
                                    AND t.category_id = {$cat['id']}
                                    AND t.location_id = {$city['id']}
                                    and t.type = 'P'
                                ORDER BY t.tourcode"; 
                                $result_tour = mysql_query($sql_tour);
                                $tours = $Manager->fetchAssoc($result_tour); 


                                if(!empty($tours)){
                ?>  
                <li style="border-bottom:1px solid gray;">
                    <a href="#" class="catename"><?php echo $city['name']; ?> - <?php echo $cat['name']; //echo ' '.$i.' ';?></a>
                     <ul> 
                        <?php  foreach($tours as $tour){ 
                                if(!empty($tour['intro_image'])){
                                   $img = $tour['intro_image'];
                                }else{
                                  $img = 'default.jpg'; 
                                } 
                        ?>
                             <a href="tour-details.php?code=<?php echo $tour['tourcode'];?>" class="tourname">
                            <li class="<?php if($i == count($count)){echo 'active';} ?>">
                                 <img src="uploaded-items/tour-introimage/<?php echo $img; ?>" width="150" height="100" /> 
                                    <span class="tourname"><?php echo $tour['tourname'].'(Code: '.$tour['tourcode'].')'; ?></span>
                                    <p><?php echo $tour['intro']; ?></p>

                                 <div class="home-tour-info">
                                        <img src="images/btn-more-info-green-dark.jpg" alt="More info" class="moreinfo"/>
                                        <div class="home-tour-price"><?php echo $tour['promotion_label']; ?></div>
                                 </div>
                            </li></a>

                        <?php } ?>
                    </ul>
                </li>
             <?php $i++;}}} //each category ?>

我的工作方式是将最后一位发布3次,并将category_id更改为category_id2,category_id3。但是这显示了重复的类别。

如何在1循环而不是3循环中完成所有这些?

1 个答案:

答案 0 :(得分:0)

您的后端循环如下所示,作为优化代码,

<? 
$numcount = 3;
for($i=0;$i<$numcount;$i++) { ?>
<strong>Tour category <?=$i+1?>: </strong><br />
 <select name="category_id<?=$i+1?>">
     <?php
        foreach($category_lists as $list){
            if($list['id'] == $arr_collect['category_id'.($i+1)]){
                $sel = ' selected="selected" ';
            }else{
                $sel = null;
            }
            echo '<option value="'.$list['id'].'"'.$sel.'>'.$list['name'].'</option>';
        }
    ?>
</select>
<br clear="all" />
<? } ?>