我如何分割返回的结果在while循环PHP



我正在开发一个应用程序,我需要返回两行的结果,并在它们中间创建一个标签,以显示VS图标(这是竞争)。在某些阶段,我需要分割结果正确吗?如何实现呢,

结果应该像

<div class='hero_comp'>
        <div class='hero_comp_img'><img src='images/$picture' alt='$name' width='200' height='200'/></div>    
        <div class='hero_comp_txt'>$reason</div>
        <div class='hero_comp_btn'><form action='' method='post'><input type='hidden' name='id' value='$id'/><button type='submit' class='btn btn-primary border-radius-zero' name='vote'><i class='fa fa-thumbs-up'></i> Vote for me</button></form></div>
<div class='vs'></div>

<div class='hero_comp'>
        <div class='hero_comp_img'><img src='images/$picture' alt='$name' width='200' height='200'/></div>    
        <div class='hero_comp_txt'>$reason</div>
        <div class='hero_comp_btn'><form action='' method='post'><input type='hidden' name='id' value='$id'/><button type='submit' class='btn btn-primary border-radius-zero' name='vote'><i class='fa fa-thumbs-up'></i> Vote for me</button></form></div>

这是我到目前为止所做的

$select_comp=mysql_query("SELECT * FROM nominate WHERE accepted='1' ORDER BY id DESC");
if (mysql_num_rows($select_comp) >=2 ) {
    while ($row=mysql_fetch_array($select_comp)) {
    $picture=$row['picture'];
    $reason=$row['reason'];
    $id=$row['id'];
    $name=$row['name'];
    echo"
    <div class='hero_comp'>
    <div class='hero_comp_img'><img src='images/$picture' alt='$name' width='200' height='200'/></div>    
    <div class='hero_comp_txt'>$reason</div>
    <div class='hero_comp_btn'><form action='' method='post'><input type='hidden' name='id' value='$id'/><button type='submit' class='btn btn-primary border-radius-zero' name='vote'><i class='fa fa-thumbs-up'></i> Vote for me</button></form></div>
    </div>
    ";
    }
}

如果您想要完成的是循环结果并显示结果1 VS结果2,然后继续进行下一个配对,您可以在循环中添加计数器来确定您在模式中的位置。

$count=1;
$select_comp=mysql_query("SELECT * FROM nominate WHERE accepted='1' ORDER BY id DESC");
if (mysql_num_rows($select_comp) >=2 ) {
    while ($row=mysql_fetch_array($select_comp)) {
    $picture=$row['picture'];
    $reason=$row['reason'];
    $id=$row['id'];
    $name=$row['name'];
    echo"
    <div class='hero_comp'>
    <div class='hero_comp_img'><img src='images/$picture' alt='$name' width='200' height='200'/></div>    
    <div class='hero_comp_txt'>$reason</div>
    <div class='hero_comp_btn'><form action='' method='post'><input type='hidden' name='id' value='$id'/><button type='submit' class='btn btn-primary border-radius-zero' name='vote'><i class='fa fa-thumbs-up'></i> Vote for me</button></form></div>
    </div>
    ";
        if ($count==1) {
            /* Display VS Button since the 1st result has been posted, increase count to 2 for next loop */
            $count=2;
        } elseif ($count==2) {
            /* If you want to insert something to separate the Result 1 VS Result 2 just echoed, go for it here, otherwise we set the count back to 1. */
            $count=1;
        }
    }
}

这将从表中强制1 vs 2, 3 vs 4, 5 vs 6配对,因为您是按ID排序的。如果你想指定一个不同的配对,还有一些其他的方法可以做到。

将结果添加到两个不同的数组中。

在while循环之后,您可以执行两次foreaches (http://www.php.net/manual/en/control-structures.foreach.php)并以这种方式拆分数据。

一个例子:$select_comp = mysql_query("SELECT * FROM nominate WHERE accepted='1' ORDER BY id DESC");If (mysql_num_rows($select_comp)>= 2) {

    $rows = array();
    while ($row=mysql_fetch_array($select_comp)) {
        $rows[] = $row;
    }
    // Present the data as you wish here
    // The first row will be $rows[0] and the seconds $rows[1]
}

最新更新