我试图想出一种将mySQL行拆分为HTML列的方法。我很抱歉,如果有一种更容易的方式来问这个问题,但我无法绕过它。
我已经阅读了很多建议,但它们都不符合我的要求。 我知道只是将信息浮动并允许它自己堆叠是非常容易的。我的问题是我用两张不同大小的卡片以“卡片”的形式显示信息,我希望它们全部堆叠而没有垂直间隙。
为了表明这一点,我给每张卡片一个1-3的数字。每个编号为1的卡应该适合第一列,依此类推。 example here
正常浮动左边给我这样的东西:
|1|2|3|
|4|5|6|
|7|8|9|
这是显示信息的正确方法,但它留下了大型卡片旁边的小卡片的空白,如示例所示。
如果我在php中使用带有表或div的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中发表声明,基本上说: “if $ count == 1,将此信息附加到第1列,如果$ count == 2,则将其附加到第2列,等等”
我是否可以使用任何类型的功能来分割这些信息,并附加信息而不完全构建一个新行?
P.S。我尝试过没有正确结果的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'> </div>";
} else {
$flaggedDiv = "<div class='flagInnapropriate'> </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格式。
另一个编辑:
我相信我只需要制作三个选择每第n行的mySQL查询。是的,行上的ID是唯一的,但有些行可能会移动到另一个会留下空白的表。
我现在想的是查询表格,拉出第三行,将其放在第1列,依此类推,从第一个条目开始。
编辑3: 我正在寻找的是做一个SQL查询,从第1行开始抓取每三行的所有信息,然后我需要对第三行进行另一个查询,从第2行开始,然后对第3行进行相同的查询
答案 0 :(得分:0)
在您的文件中使用float:left;
http://beta.mybattlereport.com/styles/global.css
行82
类容器
编辑:
首先:那些号码为1,2,3的卡片都有相同的班级card normal
所以如果您对一张卡片进行更改,它将会更改为所有卡片
解决方案:尝试使用table而不是div。
第二名:您的卡片按照
的顺序排列 card1 card2 card3 featured card , card1 card2 card3 featured card
解决方案:这也可以通过表格来修复,然后对它们进行排序 1列将用于card1 2列将用于card2 3列将用于card3 然后你可以使用其他表格下的特色卡片或div。
EDIT2&GT;
你的问题是在sql中获取由卡片数量和特征生成的那些卡片 你应该先通过推荐然后通过投票来订购它们
试试这个
$qry_questions = mysql_query("SELECT * FROM mbr_qa_questions ORDER BY q_featured ,q_votes DESC" /* LIMIT 0, 10"*/);
数字1和2以及3只是为每张卡提供数字。所以我没有看到这些数字的任何目的,为什么你要制作它们。