Re: [請益] 相簿封面

看板PHP作者 (寶貝豬)時間16年前 (2009/08/19 11:41), 編輯推噓3(300)
留言3則, 2人參與, 最新討論串5/5 (看更多)
※ 引述《heysimon (嘿~賽門)》之銘言: : 請問各位前輩 : 一般要在相簿中設定封面照片 : 若要另外寫一個php檔來呼叫作設定的動作 : 通常的邏輯會是如何? : --------------------------------------- : 我在mysql中,有兩個資料表 : 一個是放相簿,一個是放照片 : 但我想在照片的資料表中多設一個cover的項目 : 當我點選某張照片其cover便會等於1(這邊也不太會寫 ><) : 然後要如何把所要的封面照片放回首頁也卡住了 : 謝謝!! 以下我所提的方法有點不同, 不過應該也有人採用類似的方法: 基本上資料表只要兩個: [album]: id,name,directory,cover_photo_id,note,... id 代表主鍵, name 代表相簿名稱, directory代表目錄, cover_photo_id 代表封面圖的id, 預設值設為0, 代表沒有封面圖; 若非0, 則代表有封面圖. note 代表註解. [photo]: id,name,filename,album_id,note,... id 代表主鍵, name 代表名稱(不是檔名), album_id 代表所屬album的id, filename代表檔名, note 代表註解. 要設相簿的封面時, 就是指定album 的 cover_photo_id 的值為所選定 的 photo 的 id 即可; 若要消除封面圖, 只要把 album 的 cover_photo_id 設回為0即可. 此外, 登錄日期, 相簿所屬用戶等暫不列入考慮. 至於如何用php來設? 就寫一支程式專門來負責亦可. 假設是: set_album_cover.php 用戶在網頁上, 在id為10的album下, 選定id為3150的圖片要設為封面圖: http;//myweb/album/set_album_cover.php?album_id=10&photo_id=3150 (以上的超連結無效, 僅用來示意) 接著是php程式內容: <?php //先進行資料庫連線, 取得連線物件: $link ... //下sql語法: $sql=sprintf( "update album set cover_photo_id=%d where album_id=%d", mysql_real_escape_string($_GET['photo_id']), mysql_real_escape_string($_GET['album_id']) ); mysql_query($sql,$link); //再進行一些收尾處理.. ?> 補充: 從上述的資料庫撈資料的sql語法: //指定alubm的id, 撈出album的資料: photo.* 是cover_photo的詳細資料 $sql=" select album.*,photo.* from album left join photo on photo.id=album.cover_photo_id where id=$album_id"; //指定album的id, 撈出其所有photo: $sql=" select * from photo where album_id=$album_id"; 接著, 就是依網頁設計上的需要塞資料了. //最後介紹一個好用的資料查詢物件: 撈資料比原生的mysql函式更方便, //可以同時撈好幾個table, 而不用特意去處理資料欄位同名相衝的問題. //取自php官網之mysql_fetch_array的使用手冊範例 class mysql_resultset { var $results, $map; function mysql_resultset($results) { $this->results = $results; $this->map = array(); $index = 0; while ($column = mysql_fetch_field($results)) { $this->map[$index++] = array($column->table, $column->name); } } function fetch() { if ($row = mysql_fetch_row($this->results)) { $drow = array(); foreach ($row as $index => $field) { list($table, $column) = $this->map[$index]; $drow[$table][$column] = $row[$index]; } return $drow; } else return false; } } An example: <? $sql = "select orders.*, clients.*, productos.* ". "from orders, clients, products ". "where join conditions"; $resultset = new mysql_resultset(mysql_query($sql)); while ($drow = $resultset->fetch()) { echo 'No.: '.$drow['orders']['number'].'<br>'; echo 'Client: '.$drow['clients']['name'].'<br>'; echo 'Product: '.$drow['products']['name'].'<br>'; } ?> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.183.16

08/19 11:55, , 1F
推~ 我之前寫得相簿耶非常類似這個架構~
08/19 11:55, 1F

08/19 11:56, , 2F
也 不過我是沒想到其他的啦= =
08/19 11:56, 2F

08/19 21:43, , 3F
推一個好詳細!! 謝謝大大!!!!!!
08/19 21:43, 3F
文章代碼(AID): #1AYtHGB1 (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
1
3
完整討論串 (本文為第 5 之 5 篇):
3
3
1
3
文章代碼(AID): #1AYtHGB1 (PHP)