จากบทความก่อนนี้เราได้ code สำหรับการ upload image ไปแล้วเพื่อให้เกิดความต่อเนื่องผมก็เลยคิดว่า เราน่าจะเอารูปภาพ จากการ upload มาทำเป็น slide ด้วยเลยดีกว่า ผมก็เลยไป download plugin ของ jQuery ที่เขียนเป็น slide มาชื่อว่า pikachoose มาปรับแต่งตามใจฉันนิดหน่อย......
ก่อนอื่นหากท่านต้องการตัว master ก็ไป download ที่นี่ http://pikachoose.com/download/
ตัวที่ผมนำมาปรับแต่งนี้เป็น Version 4.1.6 ครับ เมื่อ download มาแล้วผมก็คัดเอาเฉพาะ folder
js, images, css แล้วก็ไฟล์ readme.html มา จากนั้นก็เปิดไฟล์ readme.html
ขึ้นมาให้ท่านกดที่ลิงค์แรก ก็จะเห็นเป็น slide ตัวอย่าง หลังจากนั้นก็ให้ท่านคลิกขวาเลือก
View Page Source (firefox) ท่านก็จะได้ code มาคล้ายๆแบบนี้
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link type="text/css" href="with-carousel_files/styles.css"
rel="stylesheet">
<script type="text/javascript"
src="with-carousel_files/jquery.js"></script>
<script type="text/javascript"
src="with-carousel_files/jquery_003.js"></script>
<script type="text/javascript"
src="with-carousel_files/jquery_002.js"></script>
<script language="javascript">
<!--
$(document).ready(
function (){
$("#pikame").PikaChoose();
$("#pikame").jcarousel({
initCallback: function(carousel)
{
$(carousel.list).find('img').click(function() {
var clicked = parseInt($(this).parents('.jcarousel-item')
.attr('jcarouselindex'));
var last = ($(this).parents('ul').find('li:last')
.index() == clicked-1) ? true : false;
if(!last){
clicked = (clicked-2<=0) ? 0 : clicked-2;
}
carousel.scroll(clicked);
});
}
});
});
-->
</script>
</head>
<body>
<div class="pikachoose">
<ul id="pikame" class="jcarousel-skin-pika">
<li><img src="pic1.jpg"/></li>
<li><img src="pic2.jpg"/></li>
<li><img src="pic3.jpg"/></li>
<li><img src="pic4.jpg"/></li>
<li><img src="pic5.jpg"/></li>
<li><img src="pic6.jpg"/></li>
</ul>
</div>
</body>
</html>
จากนั้นผมก็สร้างไฟล์ใหม่ขึ้นมา ชื่อ slide.php ก๊อปโค้ดด้านบนมาใส่ แล้วก็เริ่มปรับแต่ง เริ่มจาก
<link type="text/css" href="css/slidestyles.css" rel="stylesheet" /> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.pikachoose.js"></script> <script type="text/javascript" src="js/jquery.jcarousel.min.js"></script>
ตามมาด้วยตัดส่วนที่ไม่ต้องการออก
<script language="javascript">
<!--
$(document).ready(
function (){
$("#pikame").PikaChoose();
$("#pikame").jcarousel({scroll:4,
initCallback: function(carousel)
{
$(carousel.list).find('img').click(function() {
//console.log($(this).parents('.jcarousel-item').attr('jcarouselindex'));
carousel.scroll(parseInt($(this).parents('.jcarousel-item')
.attr('jcarouselindex')));
});
}
});
});
-->
</script>
มาถึงจุดสำคัญของบทความนี้กันแล้ว นั่นก็คือการดึงข้อมูลรูปภาพจากฐานข้อมูลมาแสดงนั่นเอง
จากบทความเรื่อง "วิธีการ upload รูป + SQL + Resize + Show image from SQL"
เราจะนำฐานข้อมูลมาใช้กับบทความนี้ ด้วยเชื่อมต่อฐานข้อมูลเพื่อดึงรูปมาแสดงดังนี้
<div class="pikachoose">
<ul id="pikame" class="jcarousel-skin-pika">
<?php
include 'config.php';
$sql = "select * from images";
$result = mysql_query($sql);
$num = mysql_num_rows($result);
$i=0;
while($i<$num){
$row = mysql_fetch_array($result);
$image = $row['image'];
if($image != ""){
echo "<li>";
echo "<img src='../upload/$image'>";
echo "</li>";
}
$i++;
}
?>
</ul>
</div>
ส่วนของไฟล์ CSS ก็แล้วแต่ท่านจะปรับแต่ง ตามใจชอบครับ
ไฟล์ตัวอย่างที่ผมนำมาให้ Download นี้
ผมได้ปรับแต่งไว้แล้ว โดยให้ width:270px; overflow:hidden; ส่วน height
ก็แล้วแต่ท่านจะปรับแต่งตามสัดส่วนของรูปภาพ.....
ในส่วนของไฟล์ upload image จากบทความก่อน ก็ให้ท่านกำหนดตัวแปร $newwidth = 270px;ด้วย
ความกว้างของรูปจะได้เท่ากัน
Code ที่เสร็จแล้ว
ไฟล์ slide.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<link type="text/css" href="css/slidestyles.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.pikachoose.js"></script>
<script type="text/javascript" src="js/jquery.jcarousel.min.js"></script>
<script language="javascript">
<!--
$(document).ready(
function (){
$("#pikame").PikaChoose();
$("#pikame").jcarousel({scroll:4,
initCallback: function(carousel)
{
$(carousel.list).find('img').click(function() {
//console.log($(this).parents('.jcarousel-item').attr('jcarouselindex'));
carousel.scroll(parseInt($(this)
.parents('.jcarousel-item').attr('jcarouselindex')));
});
}
});
});
-->
</script>
<style>
#name{margin-top:100px;color:#4F5C4F;}
#name a{text-decoration: none;}
</style>
</head>
<body>
<!-- not really needed, i'm using it to center the gallery. -->
<center>
<div id="name"><b><a href="http://www.bookneo.com">Bookneo.com</a></b></div>
<div class="pikachoose">
<ul id="pikame" class="jcarousel-skin-pika">
<?php
include 'config.php';
$sql = "select * from images";
$result = mysql_query($sql);
$num = mysql_num_rows($result);
$i=0;
while($i<$num){
$row = mysql_fetch_array($result);
$image = $row['image'];
if($image != ""){
echo "<li>";
echo "<img src='../upload/$image'>";
echo "</li>";
}
$i++;
}
?>
</ul>
</div>
</center>
</body>
</html>
ไว้พบกันบทความต่อไปครับ ^_^









ถ้าภาพกระตุกก็ให้ไปลองเปลี่ยนรูปแบบการสไลด์ดูครับ ด้วยการปรับ transition:[0] ในไฟล์ jquery.pikachoose.js ซึ่งมีอยู่ 6 รูปแบบ ค่าเริ่มต้นจะเป็น 0 ครับ เราก็ลองเปลี่ยน จากเลข 0 - 6 ดูครับ
ตอบลบเพราะว่า รูปแบบ ที่ 0 เป็นการ fadeIn() , fadeOut() ของ jQuery browser อาจต้องมีความเร็วพอในการเล่นสไลด์ เพราะถ้าเปิดด้วย Chrome สไลด์ก็จะเล่นลื่นดีครับ
พอจะมีไฟล์มั้ยคับ Version 4.1.6 โหลดไม่ได้แล้วคับ
ตอบลบ