gpt4 book ai didi

php - 如何拆分 mySQL 信息以在 HTML 列中显示

转载 作者:行者123 更新时间:2023-11-28 13:27:58 26 4
gpt4 key购买 nike

我正在尝试找出一种将 mySQL 行拆分为 HTML 列的方法。很抱歉,如果有更简单的方法可以问这个问题,但我无法解决这个问题。

我已经阅读了很多建议,但没有一个符合我的要求。我知道将信息 float 并让它自行堆叠非常容易。我的问题是我用两张不同大小的卡片以“卡片”形式显示信息,我希望它们全部垂直堆叠而没有间隙。

为了展示这一点,我为每张卡片指定了一个 1-3 的数字。每张编号为 1 的卡片都应该放在第一列中,依此类推。 example here

正常向左浮动给我这样的结果:

|1|2|3|
|4|5|6|
|7|8|9|

这是显示信息的正确方式,但会像示例中那样在大卡片和小卡片旁边留下空隙。

如果我在带有表格或 div 的 php 中使用 foreach 循环,我会得到类似这样的结果:

|1|2|3|
-------
|4|5|6|
-------
|7|8|9|

不幸的是,这几乎是相同的结果。较大的卡片将行向下推,在较小的卡片所在的位置留下较大的空隙。

我还了解到,在第一个可见行之后,最近的 div 可能会在一列而不是另一列中被推得更远。例如,如果第 1 列有 6 张“精选”或大卡片,则需要 12 张卡片才能填满它旁边的空间。我不担心这个。

我现在拥有的基本的精简代码是这样的:

<div class="container">
<?PHP
$qry_questions = mysql_query("SELECT STATEMENT**");
$count = 0;
while($row = mysql_fetch_array($qry_questions)){
$count++;
/*GATHER INFORMATION*/
?>
<div class="HTML-formatting-here-with-php-echos">
</div>
<?PHP
}
?>
</div>

现在我只是想弄清楚我是否可以在 php 中做一个基本上是这样的声明:“如果 $count == 1,将此信息附加到第 1 列,如果 $count == 2,将此附加到第 2 列,等等。”

是否可以使用任何类型的函数来像这样拆分这些信息并附加信息,而无需完全构建一个全新的行?

附注我试过 array_chunk() 但没有得到正确的结果。

编辑:这是 while 循环

<div id="collective">
<div class="container">
<?PHP
//FIND THE QUESTIONS ASKED AND INFORMATION ON THEM
$qry_questions = mysql_query("SELECT * FROM mbr_qa_questions ORDER BY q_votes DESC" /* LIMIT 0, 10"*/); //LIMIT 0, 20 - 20 being how many to show at a time
$num_rows = mysql_num_rows($qry_questions);
$max_col = 3;
$count = 0;
//START THE LOOPING
while($q_row = mysql_fetch_array($qry_questions)){
$q_id = $q_row['q_id'];
$q_votes = $q_row['q_votes'];
$q_answers = $q_row['q_answers'];
$q_title = $q_row['q_title'];
$q_description = $q_row['q_description'];
$q_tags = $q_row['q_tags'];
$q_user_id = $q_row['user_id'];
$q_created = $q_row['q_created'];
$q_modified = $q_row['q_modified'];
$q_featured = $q_row['q_featured'];
if($q_featured == 0){
$q_status = "normal";
} else {
$q_status = "featured";
}
//GET THE USERS USERNAME
$qry_username = mysql_query("SELECT user_name FROM mbr_user_name WHERE user_id = '$q_user_id'");
$q_user_name = mysql_result($qry_username, 0);
//FIND THE USERS POINTS
$qry_points = mysql_query("SELECT point_amount FROM mbr_qa_points WHERE user_id = '$q_user_id'");
$q_user_points = mysql_result($qry_points, 0);
//FIND OUT IF YOU FLAGGED IT
$qry_flagged = mysql_query("SELECT * FROM mbr_qa_flagged WHERE q_id = '$q_id' AND user_id = '$user_id'");
$flagged = mysql_num_rows($qry_flagged);
if($flagged >= 1){
$flaggedDiv = "<div class='q_flagged'> &nbsp; </div>";
} else {
$flaggedDiv = "<div class='flagInnapropriate'> &nbsp; </div>";
}
//FIND HOW MANY ANSWERS
$qry_answers = mysql_query("SELECT * FROM mbr_answers WHERE q_id = '$q_id'");
$q_answers = mysql_num_rows($qry_answers);
//FIND HOW MANY VOTES
$qry_votes = mysql_query("SELECT * FROM mbr_votes WHERE q_id = '$q_id'");
$q_votes = mysql_num_rows($qry_votes);
//GIVE EACH ENTRY A COLUMN NUMBER
$count++;
if($count >= 4){
$count = 1;
}
<div class="card <?= $q_status ?>">
<div class="top">
<div class="tag">
<div class="title">Votes</div>
<div class="votes">
<div class="number">
<?= $q_votes ?>
</div>
</div>
<div class="plus">+</div>
</div>
<div class="question">
<p><?= $count/* . $q_title*/ ?></p>
</div>
</div>
<div class="middle">
<div class="elapsed">
<?PHP

$time_since = $q_created;
$time_now = time();
$timeElapsed = $time_now - $time_since;

?>
Asked <?= elapsedTime($time_since) ?> ago by
</div>
<a class="profile" href="./profile.php?profile_name=<?= $q_user_name ?>">
<div class="avatar">
<img src="pieces/avatars/avatar.php?profile_id=<?= $q_user_id ?>&size=xsmall" />
</div>
<div class="userName">
<?= $q_user_name ?>
</div>
<div class="points">
<?= $q_user_points ?>pts
</div>
</a>

</div>
<div class="bottom">
<div class="answer">
<div class="title">
Answers
</div>
<div class="numAnswers">
<?= $q_answers ?>
</div>
<div class="answersText">
Answers
</div>
</div>
<div class="bestAnswer">
<div class="title">
Best Answer
</div>
<div class="description">
<p>Need to get highest rated answer here</p>
</div>
</div>
</div>
</div>
}
?>

</div>
</div>

包含的 newAnswerLayout.php 只是每张卡片的 html 格式。

另一个编辑:

我相信我只需要创建三个 mySQL 查询来选择每第 n 行。是的,行上的 ID 是唯一的,但是有些行可能会被移动到另一个表中,这会留下空白。

我现在想的是查询表格,每隔三行拉一次,将其放在第 1 列中,依此类推,从第一个条目开始。

编辑 3:我正在寻找的是执行一个 SQL 查询,从第 1 行开始,每第三行获取所有信息,然后我需要对每第三行执行另一个查询,从第 2 行开始,然后对第 3 行执行相同的查询.

最佳答案

在你的文件中使用float:left;

   http://beta.mybattlereport.com/styles/global.css

82
类容器

编辑:

首先:那些编号为 1、2、3 的卡片它们都具有相同的类 card normal 因此如果您对一张卡片应用更改,它将对所有卡片进行适当更改

解决方案:尝试使用表格而不是 div。

第二:你的卡片是这样排列的

 card1 card2 card3  featured card , card1 card2 card3 featured card

解决方案:这也可以通过表格来解决,您可以订购它们 1 列将用于 card12列将用于card23列将用于card3然后您可以将此下的其他表格用于特色卡片或 div。

编辑2>

你的问题是在 sql 中获取由卡片数量和特色生成的那些卡片你应该先按特色排序,然后按投票排序

试试这个

   $qry_questions = mysql_query("SELECT * FROM mbr_qa_questions ORDER BY q_featured ,q_votes DESC" /* LIMIT 0, 10"*/); 

数字 1 和 2 和 3 你只是给每张卡片分配数字。所以我从这些数字中看不出你为什么要制作它们有任何目的。

关于php - 如何拆分 mySQL 信息以在 HTML 列中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13928848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com