php как разделить список результатов цикла while - PullRequest
0 голосов
/ 21 февраля 2011

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 ]

2 голосов
/ 21 февраля 2011

Не могли бы вы чередовать класс на каждом втором входе, который предлагает очистить с плавающей точкой или что-то подобное, если вы не плаваете входы? Что-то вроде:

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 голосов
/ 21 февраля 2011
while ($left = $q->fetch_array()) {
    echo '<p>';
    echo '<input...>' . $left['...'];
    if ($right = $q->fetch_array()) {
        echo '| <input...>' . $right['...'];
    }
    echo '</p>';
}
1 голос
/ 21 февраля 2011

Таким образом, следует заполнить левый столбец по порядку, затем правый столбец, сохраняя порядок, который вы хотите достичь.У меня нет доступа к вашей базе данных, поэтому я не могу проверить это, но она должна выполнить эту работу.

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, чтобы расположить его так, как вы хотите, а не делать это программно.Всегда лучше стараться держать презентацию отдельно от логики, где это возможно.

0 голосов
/ 21 февраля 2011

Вы можете использовать флаг, который увеличивается каждый раз, и

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

Или что-то в этом роде.

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