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

看板PHP作者 (C.Y.)時間10年前 (2014/05/21 05:06), 10年前編輯推噓14(14046)
留言60則, 7人參與, 最新討論串2/4 (看更多)
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)); ?> -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.70.191 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1400620006.A.8D1.html

05/21 10:07, , 1F
不過就是用table做table的事而已,用div+float做table
05/21 10:07, 1F

05/21 10:08, , 2F
的事才真的是不合理。而且跟無障礙設計違背。
05/21 10:08, 2F

05/21 11:00, , 3F
謝謝!!
05/21 11:00, 3F

05/21 11:53, , 4F
用DIV搭配float的話 是每個商品都為一個獨立的div嗎
05/21 11:53, 4F

05/21 12:47, , 5F
試出來了~只是如果名稱長短不一的話 每個DIV的大小也會
05/21 12:47, 5F

05/21 12:47, , 6F
不同 這樣要如何排版呢/
05/21 12:47, 6F

05/21 14:26, , 7F
要固定div寬度。所以說應該table做的事就用table就好。
05/21 14:26, 7F

05/21 14:27, , 8F
float理解上超不自然的,inline-block還差不多一點。
05/21 14:27, 8F

05/21 17:20, , 9F
這裡就是table該做的事+1
05/21 17:20, 9F

05/21 19:58, , 10F
這種資料列表,確實用table即可
05/21 19:58, 10F

05/21 20:58, , 11F
table for data
05/21 20:58, 11F

05/21 20:58, , 12F
div 是一種排版用的區塊元素,本身不該是用來顯示密集的資料
05/21 20:58, 12F

05/22 00:30, , 13F
如果要討論 html element 我還是會投 li 而非 table
05/22 00:30, 13F

05/22 00:31, , 14F
原因有兩個,一個是套 Coding 很麻煩,一個是如果以後要
05/22 00:31, 14F

05/22 00:31, , 15F
改版, Code 部分可能得大幅重寫。
05/22 00:31, 15F

05/22 00:34, , 16F
然後的確要把元素設成 inline-block 。
05/22 00:34, 16F

05/22 00:36, , 17F
解法千千萬萬種,原 PO 也可以不用理我的疑問,直接把上
05/22 00:36, 17F

05/22 00:36, , 18F
面的 PHP Code 拿去用,繼續使用 Table :p
05/22 00:36, 18F

05/22 03:01, , 19F
會想塞table的資料本身就不該是會有排版需求的東西啊-3-
05/22 03:01, 19F

05/22 03:02, , 20F
再說li要弄成table狀也不會好到哪
05/22 03:02, 20F

05/22 04:31, , 21F
資料呈現應該是用table 排版才用div實作..
05/22 04:31, 21F

05/22 04:32, , 22F
li是給單欄資料用的
05/22 04:32, 22F

05/22 04:34, , 23F
原po應該是誤把切版的意義了
05/22 04:34, 23F

05/22 04:36, , 24F
而原原po問題應該只是卡在資料顯示的問題 談切版 似乎有點遠
05/22 04:36, 24F

05/22 04:37, , 25F
我們講的是資料呈現應該用table tag 而不是說 架構面用table
05/22 04:37, 25F

05/22 04:48, , 26F
不過 我覺得該用什麼應該由發問者自己把ui畫出來才知道用那種
05/22 04:48, 26F

05/22 06:41, , 27F
等等,不會推文說的 table 都是 display 的屬性吧 T_T"
05/22 06:41, 27F

05/22 06:42, , 28F
那我真的是蠢斃了 Orz 但我還是反對 table 是因為 IE6
05/22 06:42, 28F

05/22 06:58, , 29F
不過真心希望 IE6 應該和 XP 一起消失啊 Orz
05/22 06:58, 29F

05/22 07:13, , 30F
IE6? 那東西早沒理會啦XD IE8還會稍微注意下www
05/22 07:13, 30F

05/22 08:29, , 31F
長官是老人,老人用 XP , XP 綁 IE , IE 不更新 ..T_T
05/22 08:29, 31F

05/22 09:26, , 32F
那偷偷幫忙更新IE8 (X
05/22 09:26, 32F

05/22 12:57, , 33F
說歸說,其實滿擔心現在inline-block支援狀況到底如何
05/22 12:57, 33F

05/22 12:58, , 34F
不斷更新的chrome當然沒問題 破破碎碎的IE怎麼辦哩
05/22 12:58, 34F

05/22 14:59, , 35F
所以我其實通常是用 span 配合 inline-block ,災請會少
05/22 14:59, 35F

05/22 14:59, , 36F
一點。
05/22 14:59, 36F

05/22 15:00, , 37F
以前幫他更新過 .... 他覺得 IE 6 比較好用,對了他還在
05/22 15:00, 37F

05/22 15:00, , 38F
用 Outlook Express ,常常信件都收到爆 .... (崩潰
05/22 15:00, 38F

05/22 17:35, , 39F
請問 mysql_result要怎麼指定某欄某列的值呢?
05/22 17:35, 39F

05/22 17:36, , 40F
用大大給的程式碼的話 一次只能把一項資料排成三欄
05/22 17:36, 40F

05/22 17:36, , 41F
如果有兩項資料以上的話呢?
05/22 17:36, 41F

05/22 17:36, , 42F
我想排成這樣
05/22 17:36, 42F

05/22 17:37, , 43F
商品1 商品2 商品3
05/22 17:37, 43F

05/22 17:37, , 44F
價格 價格 價格
05/22 17:37, 44F

05/22 17:38, , 45F
日期 日期 日期
05/22 17:38, 45F
<?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]. '<br />'.$row[goods_price]. '<br />'.$row[goods_date].'</td>'; } else { echo '<td style="width:280px;"></td>'; } if($k%3 == 2) { echo '</tr>'; } } ?> 不然在 <td> 裡面塞 <table> 或是什麼 div / span 也行。 ※ 編輯: cleanwind (1.161.70.191), 05/22/2014 17:43:53

05/23 11:01, , 46F
謝謝 待會來試試
05/23 11:01, 46F

05/23 11:02, , 47F
說來真慚愧 樓上在討論甚麼看不懂 Orz
05/23 11:02, 47F

05/24 15:53, , 48F
請問一下 為什麼是<br /> 而不是<br>呢?
05/24 15:53, 48F

05/24 17:45, , 49F
然後為什麼商品中的第一項會顯示不出來呢?
05/24 17:45, 49F

05/24 17:49, , 50F
$row = mysqli_fetch_array($result);
05/24 17:49, 50F

05/24 17:50, , 51F
是這裡把第一筆資料提取掉了嗎?該如何解決呢?
05/24 17:50, 51F

05/24 17:53, , 52F
找到解法了 謝謝!
05/24 17:53, 52F

05/26 09:53, , 53F
你只要知道現在都是<br />就好,不用問為什麼。
05/26 09:53, 53F

05/27 11:38, , 54F
喔......好
05/27 11:38, 54F

05/29 20:28, , 55F
問個為什麼都不可以喔 -.-
05/29 20:28, 55F

05/29 20:29, , 56F
在這個實例上看來 根本不是table該做的事情 還叫人用table
05/29 20:29, 56F

05/29 20:30, , 57F
揪竟是什麼樣的心態呢~~
05/29 20:30, 57F

05/29 23:23, , 58F
樓上能解釋為何不是table? 純資料排列就是table啊
05/29 23:23, 58F

05/29 23:23, , 59F
不然還麻煩舉例何時才能用table
05/29 23:23, 59F

05/29 23:35, , 60F
告訴我 他這樣排版 怎麼跟搜尋引擎說 我的第一列是什麼?
05/29 23:35, 60F
文章代碼(AID): #1JUyFcZH (PHP)
文章代碼(AID): #1JUyFcZH (PHP)