Re: [請益] 從mysql抓資料後多欄顯示

作者: cleanwind (C.Y.)   2014-05-21 05:06:43
Try this ...
<?php
$totalCount = ceil(mysql_num_rows($result)/3)*3;
for($k = 0; $k < $totalCount; $k ++) {
if($k%3 == 0) { echo '<tr>'; }
if($row = mysql_fetch_array($result)) {
echo '<td style="width:280px;">'.$row[goods_name].'</td>';
}
else {
echo '<td style="width:280px;"></td>';
}
if($k%3 == 2) { echo '</tr>'; }
}
?>
至於要特別指定某欄、某列的值,可以使用 mysql_result ;
此外我會建議將 mysql_fetch_array 換成 mysql_fetch_asoc ,
如果陣列不需要數字鍵的話。
還有 .... 其實 Table 切版很麻煩,
可以考慮改用 div 配合 float 去排出列表,
套 php Code 會比較神清氣爽 XD
※ 引述《mick90207 (阿公)》之銘言:
: 我想做個類似商品清單的顯示頁面
: 可以每列顯示三個商品
: 想請問前輩們該如何撰寫呢?
: 有爬到文說可以加個計數器 再利用mod 看看是否要在該迴圈中加<tr>
: 只是這樣寫下來
: if 判斷是否加tr
: echo "<tr>";
: do loop
: <td width="280"><? echo $row[goods_name]; ?></td>
: i++
: while...
: <tr>
: do loop
: <td width="280"><? echo $row[price]; ?></td>
: i++
: while...
: 這樣的話我一次只能把一欄的資料抓出來
: 我再寫第二列價格的時候
: $row[]裡面就會接續下去
: mysql有辦法指定特別要某欄某列的值嗎?
: 我現在的code 先把每欄直接*3看看前端介面用....
: <?php do{?>
: <tr>
: <td width="280"><? echo $row[goods_name]; ?></td>
: <td width="280"><? echo $row[goods_name]; ?></td>
: <td width="280"><? echo $row[goods_name]; ?></td>
: </tr>
: <tr>
: <td><? echo $row[price]; ?></td>
: <td><? echo $row[price]; ?></td>
: <td><? echo $row[price]; ?></td>
: </tr>
: <? }while($row=mysqli_fetch_array($result)); ?>
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-05-21 10:07:00
不過就是用table做table的事而已,用div+float做table
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-05-21 10:08:00
的事才真的是不合理。而且跟無障礙設計違背。
作者: mick90207 (阿公)   2014-05-21 11:00:00
謝謝!!
作者: mick90207 (阿公)   2014-05-21 11:53:00
用DIV搭配float的話 是每個商品都為一個獨立的div嗎
作者: mick90207 (阿公)   2014-05-21 12:47:00
試出來了~只是如果名稱長短不一的話 每個DIV的大小也會不同 這樣要如何排版呢/
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-05-21 14:26:00
要固定div寬度。所以說應該table做的事就用table就好。
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-05-21 14:27:00
float理解上超不自然的,inline-block還差不多一點。
作者: danny8376 (釣到一隻猴子@_@)   2014-05-21 17:20:00
這裡就是table該做的事+1
作者: cokellen (cokellen)   2014-05-21 19:58:00
這種資料列表,確實用table即可
作者: alog (A肉哥)   2014-05-21 20:58:00
table for datadiv 是一種排版用的區塊元素,本身不該是用來顯示密集的資料
作者: cleanwind (C.Y.)   2014-05-22 00:30:00
如果要討論 html element 我還是會投 li 而非 table
作者: cleanwind (C.Y.)   2014-05-22 00:31:00
原因有兩個,一個是套 Coding 很麻煩,一個是如果以後要改版, Code 部分可能得大幅重寫。
作者: cleanwind (C.Y.)   2014-05-22 00:34:00
然後的確要把元素設成 inline-block 。
作者: cleanwind (C.Y.)   2014-05-22 00:36:00
解法千千萬萬種,原 PO 也可以不用理我的疑問,直接把上面的 PHP Code 拿去用,繼續使用 Table :p
作者: danny8376 (釣到一隻猴子@_@)   2014-05-22 03:01:00
會想塞table的資料本身就不該是會有排版需求的東西啊-3-
作者: danny8376 (釣到一隻猴子@_@)   2014-05-22 03:02:00
再說li要弄成table狀也不會好到哪
作者: alog (A肉哥)   2014-05-22 04:31:00
資料呈現應該是用table 排版才用div實作..
作者: alog (A肉哥)   2014-05-22 04:32:00
li是給單欄資料用的
作者: alog (A肉哥)   2014-05-22 04:34:00
原po應該是誤把切版的意義了
作者: alog (A肉哥)   2014-05-22 04:36:00
而原原po問題應該只是卡在資料顯示的問題 談切版 似乎有點遠
作者: alog (A肉哥)   2014-05-22 04:37:00
我們講的是資料呈現應該用table tag 而不是說 架構面用table
作者: alog (A肉哥)   2014-05-22 04:48:00
不過 我覺得該用什麼應該由發問者自己把ui畫出來才知道用那種
作者: cleanwind (C.Y.)   2014-05-22 06:41:00
等等,不會推文說的 table 都是 display 的屬性吧 T_T"
作者: cleanwind (C.Y.)   2014-05-22 06:42:00
那我真的是蠢斃了 Orz 但我還是反對 table 是因為 IE6
作者: cleanwind (C.Y.)   2014-05-22 06:58:00
不過真心希望 IE6 應該和 XP 一起消失啊 Orz
作者: danny8376 (釣到一隻猴子@_@)   2014-05-22 07:13:00
IE6? 那東西早沒理會啦XD IE8還會稍微注意下www
作者: cleanwind (C.Y.)   2014-05-22 08:29:00
長官是老人,老人用 XP , XP 綁 IE , IE 不更新 ..T_T
作者: danny8376 (釣到一隻猴子@_@)   2014-05-22 09:26:00
那偷偷幫忙更新IE8 (X
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-05-22 12:57:00
說歸說,其實滿擔心現在inline-block支援狀況到底如何
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-05-22 12:58:00
不斷更新的chrome當然沒問題 破破碎碎的IE怎麼辦哩
作者: cleanwind (C.Y.)   2014-05-22 14:59:00
所以我其實通常是用 span 配合 inline-block ,災請會少一點。
作者: cleanwind (C.Y.)   2014-05-22 15:00:00
以前幫他更新過 .... 他覺得 IE 6 比較好用,對了他還在用 Outlook Express ,常常信件都收到爆 .... (崩潰
作者: mick90207 (阿公)   2014-05-22 17:35:00
請問 mysql_result要怎麼指定某欄某列的值呢?
作者: mick90207 (阿公)   2014-05-22 17:36:00
用大大給的程式碼的話 一次只能把一項資料排成三欄如果有兩項資料以上的話呢?我想排成這樣
作者: mick90207 (阿公)   2014-05-22 17:37:00
商品1 商品2 商品3價格 價格 價格
作者: mick90207 (阿公)   2014-05-22 17:38:00
日期 日期 日期
作者: mick90207 (阿公)   2014-05-23 11:01:00
謝謝 待會來試試
作者: mick90207 (阿公)   2014-05-23 11:02:00
說來真慚愧 樓上在討論甚麼看不懂 Orz
作者: mick90207 (阿公)   2014-05-24 15:53:00
請問一下 為什麼是<br /> 而不是<br>呢?
作者: mick90207 (阿公)   2014-05-24 17:45:00
然後為什麼商品中的第一項會顯示不出來呢?
作者: mick90207 (阿公)   2014-05-24 17:49:00
$row = mysqli_fetch_array($result);
作者: mick90207 (阿公)   2014-05-24 17:50:00
是這裡把第一筆資料提取掉了嗎?該如何解決呢?
作者: mick90207 (阿公)   2014-05-24 17:53:00
找到解法了 謝謝!
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-05-26 09:53:00
你只要知道現在都是<br />就好,不用問為什麼。
作者: mick90207 (阿公)   2014-05-27 11:38:00
喔......好
作者: ez880 (被捅我也爽)   2014-05-29 20:28:00
問個為什麼都不可以喔 -.-在這個實例上看來 根本不是table該做的事情 還叫人用table揪竟是什麼樣的心態呢~~
作者: danny8376 (釣到一隻猴子@_@)   2014-05-29 23:23:00
樓上能解釋為何不是table? 純資料排列就是table啊不然還麻煩舉例何時才能用table
作者: ez880 (被捅我也爽)   2014-05-29 23:35:00
告訴我 他這樣排版 怎麼跟搜尋引擎說 我的第一列是什麼?

Links booklink

Contact Us: admin [ a t ] ucptt.com