如何在while循环中设置重复“items”的限制?

时间:2014-03-03 02:33:30

标签: php jquery mysqli

我使用while循环来回显成员数据以显示每个成员的列表。然后我使用Jquery根据从items字段回显的值来过滤列表。 (即items字段可能包含“item1 item3 item10”。这很有效!!!这是我现在的代码。

<?php
$area = "Richmond";
$db_connect = @mysqli_connect("localhost", "user", "password","database");

    if (mysqli_connect_errno($db_connect)) { 
        echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
        }

$result = @mysqli_query($db_connect, "SELECT * FROM database WHERE territories LIKE '%$area%'");

    if (!$result){
        echo ("<p>Error performing listing query:" . mysql_error() . "</p>");
        }

$items = array();

while ($row = mysqli_fetch_array($result)){
    // Jquery uses these "$row["items"]" for it's filter
    $items[] = "<li class=\"services " . $row["items"] . "\">
    // more code here used to construct member's listing
    }
?>
//In the html, I echo each member's completed listing...
<?php echo $items[0]; echo $items[1]; echo $items[2]; etc... ?>

如何将回声限制设置为items字段中的12个重复值? items中的每个值只有12个可用列表。所以我只希望每个值的前12个都包含在echo中。如果成员取消,则下一成员的items值将自动回显。我希望这是有道理的! :d

[编辑]为了更清晰,让我们说“item1 item2”的12个成员列表(两者都在items字段中)。使用当前代码,每个列表的html将显示为<li class="services item1 item2"></li>

然后第13个成员列出了他的“item1 item2 item3”服务。由于“item1”和“item2”存在12次,因此只有item3应该回显。此新会员的列表应为<li class="services item3"></li>。如果前一个成员取消,则会回显所有三个项目。

我想象if COUNT(items=%item1%) <= 12)之类的东西或者类似的东西......我似乎无法用我的当前设置来GROUP BYDISTINCT

2 个答案:

答案 0 :(得分:0)

在数据库调用中,您可以使用GROUP BY和DISTINCT仅为该值返回一行。此外,如果您要在SELECT中添加一个检查,无论您的取消标记是什么,这将删除所有被取消的成员被撤回。像

这样的东西
SELECT DISTINCT * FROM Member WHERE IsActive = 'true' LIMIT 12

如果没有更多信息,这是我能想到的最好的信息。

答案 1 :(得分:0)

我终于明白了。我要做的第一件事是为每个项目创建一个不同的列。然后是计算每行中每个项目的问题,只允许前十二个。我添加了以下内容:

$item1cnt = 0; //I added this section before the while loop to start the count at "0" for each item
$item2cnt = 0;
$item3cnt = 0;
$item4cnt = 0;
$item5cnt = 0;
$item6cnt = 0;
$item7cnt = 0;
$item8cnt = 0;
$item9cnt = 0;
$item10cnt = 0;
$item11cnt = 0;
$item12cnt = 0;

//And this inside the while loop to return only the first 12 of each item
if($row["item1"]!=""){ $item1cnt++; if($item1cnt > 12){$row["item1"]="";}}
if($row["item2"]!=""){ $item2cnt++; if($item2cnt > 12){$row["item2"]="";}}
if($row["item3"]!=""){ $item3cnt++; if($item3cnt > 12){$row["item3"]="";}}
if($row["item4"]!=""){ $item4cnt++; if($item4cnt > 12){$row["item4"]="";}}
if($row["item5"]!=""){ $item5cnt++; if($item5cnt > 12){$row["item5"]="";}}
if($row["item6"]!=""){ $item6cnt++; if($item6cnt > 12){$row["item6"]="";}}
if($row["item7"]!=""){ $item7cnt++; if($item7cnt > 12){$row["item7"]="";}}
if($row["item8"]!=""){ $item8cnt++; if($item8cnt > 12){$row["item8"]="";}}
if($row["item9"]!=""){ $item9cnt++; if($item9cnt > 12){$row["item9"]="";}}
if($row["item10"]!=""){ $item10cnt++; if($item10cnt > 12){$row["item10"]="";}}
if($row["item11"]!=""){ $item11cnt++; if($item11cnt > 12){$row["item11"]="";}}
if($row["item12"]!=""){ $item12cnt++; if($item12cnt > 12){$row["item12"]="";}}