简体   繁体   English

如何在while循环PHP中拆分返回的结果

[英]How can I split returned results in while loop PHP

I am developing an application where I need to return result of two rows and create a tag in middle of them to show a VS icon (this is competition). 我正在开发一个应用程序,我需要返回两行的结果并在其中中间创建一个标记以显示VS图标(这是竞争)。 At some stage I need to split results correct? 在某个阶段,我需要拆分结果正确吗? How would that be achieved, 那将如何实现,

Result should be like 结果应该像

<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>

this is what I've done so far 这是我到目前为止所做的

$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 what you want to accomplish is to loop through results and show Result 1 VS Result 2 then move on to the next pairing, you could add in a counter in your loop to figure out where you're at in the pattern. 如果要完成的是循环搜索结果并显示结果1与结果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;

        }
    }
}

This would force a 1 vs 2, 3 vs 4, 5 vs 6 pairing from your table since you're sorting by ID. 由于您要按ID排序,因此这将迫使您的表中进行1对2、3对4、5对6配对。 If you wanted to specify a different pairing there are a few other ways you could do it. 如果要指定其他配对,则可以使用其他几种方法。

Add your results to two different arrays. 将结果添加到两个不同的数组中。

After the while loop you can do two foreaches ( http://www.php.net/manual/en/control-structures.foreach.php ) and split your data that way. 在while循环之后,您可以执行两个foreach( http://www.php.net/manual/en/control-structures.foreach.php )并以这种方式拆分数据。

An example: $select_comp = mysql_query("SELECT * FROM nominate WHERE accepted='1' ORDER BY id DESC"); 一个例子:$ select_comp = mysql_query(“ SELECT * FROM提名在哪里接受='1'ORDER BY ID DESC”); if (mysql_num_rows($select_comp) >= 2) { 如果(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]
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM