Long Live The King
ข้าพเจ้าไม่ได้มีพรสวรรค์พิเศษอะไร ข้าพเจ้าเพียงแต่มีความกระหายใคร่รู้อยู่เสมอ ทุ่มเทให้กับสิ่งที่อยากรู้ พากเพียรอย่างทรหด และสำรวจวิจารณ์ความรู้ของตัวเองเป็นประจำ ปัจจัยเหล่านี้คือที่มาของแนวคิดต่างๆ ของข้าพเจ้า .... อัลเบิร์ต ไอน์สไตน์

วันศุกร์ที่ 21 ธันวาคม พ.ศ. 2555

วิธีทำ slide ด้วยการดึงข้อมูลรูปภาพจากฐานข้อมูลมาแสดง PHP



จากบทความก่อนนี้เราได้ 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>

ไว้พบกันบทความต่อไปครับ ^_^

2 ความคิดเห็น:

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

    ตอบลบ
  2. พอจะมีไฟล์มั้ยคับ Version 4.1.6 โหลดไม่ได้แล้วคับ

    ตอบลบ

© Bookneo, AllRightsReserved.

ขับเคลื่อนโดย Blogger Designed by Nikhorn Thongchuay