php如何划分while循环结果列表

时间:2011-02-21 13:54:27

标签: php mysql while-loop

PHP:

function get_t_wrinkle_rel(){

        global $mysqli;
        $q = $mysqli->query("SELECT * FROM t_wrinkle_rel ORDER BY t_wrinkle_name ASC");

        while ($r = $q->fetch_array()) :

            echo '<p><input type="checkbox"' . $r['t_wrinkle_name'] . '</p>';

        endwhile;

    }

结果:

<input type="checkbox" value="Crows feet">Crows feet
<input type="checkbox" value="Frown lines" >Frown lines
<input type="checkbox" value="Lip augmentation">Lip augmentation
<input type="checkbox" value="Lip lines">Lip lines
<input type="checkbox" value="Marionette lines">Marionette lines

我想要结果:

**LEFT**                                      **RIGHT**
<input type="checkbox">Crows feet |<input type="checkbox" >Lip lines
<input type="checkbox">Frown lines | <input type="checkbox">Marionette lines
<input type="checkbox"">Lip augmentation

4 个答案:

答案 0 :(得分:2)

while ($left = $q->fetch_array()) {
    echo '<p>';
    echo '<input...>' . $left['...'];
    if ($right = $q->fetch_array()) {
        echo '| <input...>' . $right['...'];
    }
    echo '</p>';
}

答案 1 :(得分:2)

如果您没有浮动输入,是否可以在每个第二个输入上交替建议清除浮动或类似的东西?有点像:

function get_t_wrinkle_rel(){
        global $mysqli;
        $flag = 1;
        $q = $mysqli->query("SELECT * FROM t_wrinkle_rel ORDER BY t_wrinkle_name ASC");
        while ($r = $q->fetch_array()) :
            if ($flag = 1) {
                $orientate=left;$flag=0;
            } else {
                $orientate=right;$flag=1;
            }
            echo '<p><input class="' . $orientate .  '"type="checkbox"' . $r['t_wrinkle_name'] . '</p>';
        endwhile;
}

答案 2 :(得分:1)

这种方式应该按顺序填充左列,然后填充右列,保持您想要实现的顺序。我无法访问您的数据库,所以我无法对此进行测试,但它应该可以完成这项工作。

function get_t_wrinkle_rel(){
    global $mysqli;
    $q = $mysqli->query("SELECT * FROM t_wrinkle_rel ORDER BY t_wrinkle_name ASC");

    $mid    = floor($q->num_rows/2);    // Get halfway point
    $count  = 0;
    $array  = array();
    while($r = $q->fetch_array()){
        $string = '<input type="checkbox" value="'.$r['t_wrinkle_name'].'" />'.$r['t_wrinkle_name'];
        if($count <= $mid){
            // Left column
            $array[$count]  = $string;
        } else {
            // Right column
            $array[$count-$mid] .= '|'.$string;

        }
        $count++;
    }

// Make single string
echo implode('', $array);
}

但是我建议使用 biscuitstack 这个想法,使用CSS按照你想要的方式定位它,而不是以编程方式进行。最好尽量将演示文稿与逻辑分开。

答案 3 :(得分:0)

你可以使用每次递增的标志和

<input type="checkbox"' . $r['t_wrinkle_name'] . 
if flag % 2 == 0 then echo '<br />'

或类似的东西。