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