我的数据库表就像这样
id | name | image
--------------------------------
1 | aa | a.jpg
--------------------------------
2 | aa | b.jpg
--------------------------------
3 | bb | c.jpg
--------------------------------
4 | bb | d.jpg
--------------------------------
5 | aa | e.jpg
--------------------------------
6 | bb | f.jpg
--------------------------------
7 | aa | g.jpg
--------------------------------
8 | aa | h.jpg
--------------------------------
9 | aa | i.jpg
这是我的HTML
<div id="first">
</div>
<div id="second">
</div>
<div id="third">
</div>
首先,我需要Select * from
表名为&#34; aa&#34;
我知道怎么做..
但我想将列分成每个div ..
第1,第4,第7 ......(1 +(n-1)* 3)名称= aa的图像转到div#first
第2,第5,第8 ......(2 +(n-1)* 3)个名称= aa的图像转到div#second
第3,第6,第9 ......(3 +(n-1)* 3)个图像名称= aa GOES to div#third
最后我需要像这样的结果
<div id="first">
a.jpg
g.jpg
</div>
<div id="second">
b.jpg
h.jpg
</div>
<div id="third">
e.jpg
i.jpg
</div>
请告诉我,如何使用PHP,MYSQL执行此操作 抱歉我的英文不好
答案 0 :(得分:3)
这里的要点似乎是数据选择。为此,可以使用模运算。因此,在第一个div中,使用
插入所有行SELECT image FROM your_table WHERE name='aa' AND MOD(id,3)=1
在第二个div中插入
的结果SELECT image FROM your_table WHERE name='aa' AND MOD(id,3)=2
在第三个中:
SELECT image FROM your_table WHERE name='aa' AND MOD(id,3)=0
编辑:等等,它不会像这样直接工作(因为id在名称=&#39; aa&#39;)的子集中没有增加1。然后您还可以插入ROW_NUMBER()
之类的步骤,请参阅here。所以这是一个试验(未经测试):
SELECT images
FROM (SELECT t.*,
@rownum := @rownum + 1 AS rownum
FROM YOUR_TABLE t,
(SELECT @rownum := 0) r
WHERE t.name='aa')
WHERE MOD(rownum,3)=1
与其他人一样尝试。
答案 1 :(得分:0)
这个问题的答案是行不通的.. 所以我用PHP做了另一种方式..
$a = "";
while($row = mysql_fetch_array(mysql_query("Select * from table where name='aa' "))){
$a . = $row['image'] . "<!--h-->";
}
$b = explode("<!--h-->",$a);
$c = count($B);
$_a = "";$_b = "";$_c = "";$_d = "";
for($i = 1;$i <= $c;$i++ ){
$rem = $i % 3;
if($rem == 1){
$_a .= $b[$num - 1];
}
elseif($rem == 2){
$_b .= $b[$num - 1];
}
elseif($rem == 0){
$_c .= $d[$num - 1];
}
}
和我的HTML代码
<div id="first">
<?=$_a?>
</div>
<div id="second">
<?=$_b?>
</div>
<div id="third">
<?=$_c?>
</div>