Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP While循环将数据分隔为列_Php_Loops - Fatal编程技术网

PHP While循环将数据分隔为列

PHP While循环将数据分隔为列,php,loops,Php,Loops,你好,这里是编程新手。。请原谅我,我的问题没有道理。但是,我试图循环遍历一个表,并根据数据在3列中显示数据 表中有一个字段“column_number”,用于标识需要呈现到的列 除了把“Div”分配到“they”列之外,我还有其他工作要做。 现在,循环正在为每个节点创建一列。这是不希望的。。 参见图 渲染代码: <div class='columns'> col1 col2 col3 col1 col2 col3 col1 col2 col3 col1

你好,这里是编程新手。。请原谅我,我的问题没有道理。但是,我试图循环遍历一个表,并根据数据在3列中显示数据

表中有一个字段“column_number”,用于标识需要呈现到的列

除了把“Div”分配到“they”列之外,我还有其他工作要做。 现在,循环正在为每个节点创建一列。这是不希望的。。 参见图

渲染代码:

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

我将附加我的循环代码

<?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>";
?>

就像一个概念,我可以建议您根据此模型修改代码:

<?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>";

将获取的结果放入数组,然后构造foreach()循环,并在foreach()循环中构造列构造

while($row=$result->fetch_assoc()){
$data[]=$row;
}
//出于示例目的,在$data中添加了一个静态数组
$data=['some info','some More info','More info here']//这是从数据库返回的数组
if(is_数组($data)){
$stmt='';//声明一个空变量
foreach($key=>$value形式的数据){
$stmt.=”
列“$key”
“$value。”
";
}
$stmt.=”;
}
然后在html中使用,如:

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


输出


我们需要查看您的数据和/或数据查询,尽管我的直觉是您的SQ调用正在为每个列返回一条记录。您希望的输出是什么?三个div(column1、column2和column3),每个div包含所需列的所有记录?您是要将所有结果放入3列中,还是希望提取的每个结果都显示在自己的列中*答案肯定会导致您的显示被包装在foreach()循环中。@El_Vanja,是的,这正是我想要做的。。三个div(column1、column2和column3),每个div包含所需专栏的所有记录感谢@Citizen Patrol清理我的帖子并使其更具可读性……如果他有20条记录呢?他会得到多少栏?他会得到20栏~“但是,我正在尝试循环遍历一个表,并根据数据将数据显示在3列中…”我假设您是指OPs原始帖子中的这条语句。这似乎有点不清楚他的预期结果,因为他说“基于数据”,但在他的照片中有5列列出。。。
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>";
}
<div>
    <?=$stmt?>
</div>
<div>
    <?php echo $stmt; ?>
</div>