PHP Пока L oop для разделения данных на столбцы - PullRequest
3 голосов
/ 08 марта 2020

Привет, программирование. Новичок ie здесь .. Прости меня, если я - мой вопрос, не имеет смысла. Но я пытаюсь выполнить L oop через таблицу и отобразить данные в 3 столбцах на основе данных.

В таблице есть поле "column_number" для определения столбца, который должен быть рендеринг в ..

У меня есть вещи, кроме получения "Div's", назначенного столбцу "их". сейчас l oop создает столбец для каждого. Это нежелательно .. См. Изображение ..

Предоставленный код:

Rendered Code

Я прикреплю свой L oop Код.

<?php
// display data retrieved if it's greater than zero
    echo "<div id='colums'>";
if($num>0){
    //echo "<div id='colums'>";
        // loop through the records
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            extract($row);
        echo "<div id='column{$column_number}'>";
        //echo "<div id='column'>";
            // display details
            echo "<div class='Div'>";
                echo "<div class='DivHeader' style='background-color:#{$title_bg_color}'>";
                echo "<p style='color:#{$title_txt_color}' class='alignleft'>{$title}</p>";
                echo "<p class='alignright'><a href='edit.php'>edit</a><a href='delete.asp'></a>";
                echo "</p>";
                echo "</div>";
                echo "<div class='DivBody'>";
                    echo "Div Contents";
                echo "</div>";
            echo "</div>";
        echo "</div>";
        }
    // the number of rows retrievede
    $total_rows=0;
}
// Display message if no data found
else{
    echo "<div class='alert'>";
        echo "<strong>****  No User Data Found ****</strong>";
    echo "</div>";
}
    echo "</div>";
?>

Я постараюсь добавить дополнительную информацию ..

Вы можете видеть на первом скриншоте ниже, я хотел бы 3 столбца с "виджеты / DIV's" перечислены в каждом, у которого есть связанный column_number.

Я назвал каждый "widgets / DIV's" соответственно UserName, Column_Number и WidgetID, чтобы я мог видеть, отображаются ли DIV в правильном DIV / Column на основе зарегистрированного user.

Я также прикрепил пи c запроса и данных в таблице для "usrid = 3". У меня есть ограничение в запросе, потому что я играл с возможной подкачкой.

Должен признаться, конечный результат - перетаскивание виджетов, чтобы пользователи могли перемещать их, и это сохранит / запомнит их место, столбец и порядок в столбце. "Draggable" в настоящее время работает. Я просто хочу, чтобы виджеты приземлились в назначенном им столбце, а затем занялись Draggable / Save ..

Снимок экрана с желаемым результатом:

Desired Result Screenshot

Снимок экрана с запросом и данными:

enter image description here

Пример требуемого визуализированного результата:

enter image description here

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Поместите полученные результаты в массив, затем создайте foreach () l oop и структурируйте конструкцию столбца в пределах foreach () l oop.

while($row = $result->fetch_assoc()){
    $data[] = $row;
}
//Added a static array within $data for example purposes
$data = ['some info', 'somemore info', 'More info here'];//this is an array returned from your DB 

if(is_array($data)){
    $stmt = '';//declare an empty variable
    foreach($data as $key => $value){ 
        $stmt .= "
        <div style='float:left; width: max-content; padding:20px;' id='columnTitle'>Column ".$key."
            <div class=\"column".$key."\">".$value."</div>
        </div>
        ";
    }
    $stmt .= "<div style='clear:both;'></div>";
}

Затем используйте в html как:

<div>
    <?=$stmt?>
</div>

или

<div>
    <?php echo $stmt; ?>
</div>

выход

enter image description here

0 голосов
/ 08 марта 2020

Как и концепция, я могу предложить вам изменить код в соответствии с этой моделью:

<?php
$array = array(1,2,3,4,5,6,7,8,9,10); // Assuming we have 10 records
$max_col = 3; //Maximum columns we need
$init_col = 1; //Initial col number
echo "<div class='columns'>\n";
foreach($array as $value){
    if($init_col <= $max_col){
        //display first and second column
        echo 'col' . $init_col;
        //set init value increment
        $init_col++;
    } else {
        echo "\n"; //Echo new line since we have new column
        $init_col = 1;
        //display first and second column
        echo 'col' . $init_col;
        //set init value increment
        $init_col++;
    }
}
echo "\n</div>";

Вывод:

<div class='columns'>
    col1 col2 col3
    col1 col2 col3
    col1 col2 col3
    col1
</div>

Для вашего примера кода Я предлагаю это:

$max_col = 3; //Maximum columns we need
$init_col = 1; //Initial col number
if($num>0){
    echo "<div id='colums'>";
        // loop through the records
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            extract($row);
            if($init_col <= $max_col){
                 //display first and second column
                 echo "<div id='column{$init_col}'>";
                 // display details
                    echo "<div class='Div'>";
                       echo "<div class='DivHeader' style='background-color:#{$title_bg_color}'>";
                           echo "<p style='color:#{$title_txt_color}' class='alignleft'>{$title}</p>";
                           echo "<p class='alignright'><a href='edit.php'>edit</a><a href='delete.asp'></a>";
                           echo "</p>";
                       echo "</div>";
                    echo "</div>";
                    echo "<div class='DivBody'>";
                         echo "Div Contents";
                    echo "</div>";
                 echo "</div>";
                 //set init value increment
                 $init_col++;
            } else {
                 //Echo new line since we have new column
                 $init_col = 1;
                 //display first and second column
                 //display first and second column
                 echo "<div id='column{$init_col}'>";
                 // display details
                    echo "<div class='Div'>";
                       echo "<div class='DivHeader' style='background-color:#{$title_bg_color}'>";
                            echo "<p style='color:#{$title_txt_color}' class='alignleft'>{$title}</p>";
                            echo "<p class='alignright'><a href='edit.php'>edit</a><a href='delete.asp'></a>";
                            echo "</p>";
                        echo "</div>";
                    echo "</div>";
                    echo "<div class='DivBody'>";
                         echo "Div Contents";
                    echo "</div>";
                 echo "</div>";
                 //set init value increment
                 $init_col++;
            }

        }
    echo "</div>";
}
// Display message if no data found
else{
    echo "<div class='alert'>";
        echo "<strong>****  No User Data Found ****</strong>";
    echo "</div>";
}

Надеюсь, это поможет

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