Чередование стиля CSS с несколькими результатами Mysql - PullRequest
1 голос
/ 26 августа 2009

У меня есть сайт, на котором кто-то ищет x продукт в своем местоположении, и сайт выдает список результатов.

if(isset($_POST['zip'])){
$qry="SELECT business_id FROM ".TBL_BUSINESS." WHERE zip LIKE '%".$_POST['zip']."%'";
$rs = mysql_query($qry);

$rec = array();

while(($row = mysql_fetch_array($rs)) !== FALSE ){
    $rec[] = $row[0];
}

if(!empty($rec[0])){

    echo "Products for this location<br/>";

    foreach ($rec as $result)
    {
        $bid = $result;
        $qry2 = "SELECT * FROM products WHERE business_id = '".$bid."'";
        $rs2 = mysql_query($qry2);
        $rec2 = mysql_fetch_array($rs2);
        ?>
            <div class="norm">
                <img src="admin/product/img/<?php echo $rec2['image']; ?>" height="40" width="40" />
                <h3><a href="product.php?id=<?php echo $rec2['id']; ?>"><?echo $rec2['name'];?>&nbsp;&nbsp;<?php echo $rec2['prodvalue']?></a></h3>
                <div class="prodlistMeta">
                    <a class='view' href="product.php?id=<?php echo $rec2['id']; ?>">View Product</a>
                    <a class="print" href="#">Print</a>
                </div>
            </div>
        <?php
    }
}
else
{
    echo "No Product is added for this location";
}

} ?>

Какой лучший способ чередовать <div class="norm"> с <div class="alt">?

Ответы [ 6 ]

3 голосов
/ 26 августа 2009

сохраните счетчик и используйте его значение по модулю 2, чтобы определить, должен ли класс быть "нормальным" или "alt".

 $rec2 = mysql_fetch_array($rs2);
 $count++;
   ?>
      <div class="<?php echo($count%2?"norm":"alt"); ?>">
0 голосов
/ 26 августа 2009

Широкое распространение CSS 3 не может произойти достаточно скоро: http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#structural-pseudos

0 голосов
/ 26 августа 2009

Почему бы не использовать модуль и идентификатор строки? Гораздо проще, нет необходимости в ненужных переменных

foreach ($rec as $rid => $result)
{
    $bid = $result;
    $qry2 = "SELECT * FROM products WHERE business_id = '".$bid."'";
    $rs2 = mysql_query($qry2);
    $rec2 = mysql_fetch_array($rs2);
    ?>
            <div class="<?=($rid % 2 == 0) ? 'norm' : 'alt' ?>">
                    <img src="admin/product/img/<?php echo $rec2['image']; ?>" height="40" width="40" />
                    <h3><a href="product.php?id=<?php echo $rec2['id']; ?>"><?echo $rec2['name'];?>  <?php echo $rec2['prodvalue']?></a></h3>
                    <div class="prodlistMeta">
                            <a class='view' href="product.php?id=<?php echo $rec2['id']; ?>">View Product</a>
                            <a class="print" href="#">Print</a>
                    </div>
            </div>
    <?php
}
0 голосов
/ 26 августа 2009

установить счетчик в вашей выходной петле. Когда счетчик четный, установите класс в нормальное состояние, в противном случае установите его чередующимся.

0 голосов
/ 26 августа 2009
if(some expression)
{
    $class="norm";
}
else
{
    $class="alt";
}
?>
<div class="<?php echo $class;?>">
0 голосов
/ 26 августа 2009

Я склонен использовать что-то вроде этого:

$row = 0;
foreach ($rec as $result) {
  $class = $row++ & 1 == 1 ? 'alt' : 'norm';
  ...
  echo <<<END
<div class="$class">
...
END;
}

Вы можете использовать фигурные скобки, чтобы сделать выражение внутри строки, но я обычно предпочитаю не встраивать такую ​​логику. Это (imho) немного сложнее читать. Кроме того, вышесказанное дает вам возможность легче выводить его для отладки и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...