PDA

View Full Version : سوال: اسلاید شو جی کوئری



rash44
جمعه 18 آذر 1390, 10:11 صبح
با سلام
کسی 1 نمونه اسلاید شو جی کوئری که محتواش رو از دیتابیس بخونه سراغ داره ؟

MMSHFE
جمعه 18 آذر 1390, 10:37 صبح
با سلام، اسلایدشوها کاری به اینکه محتوا رو از کجا میخونید ندارن. برای مثال، شما میتونید آدرس عکسها و متن مربوطه و... رو توی DB ذخیره کنید و موقع نمایش، اونها رو از DB خونده و توی تگ مربوطه بگذارین. برای مثال، در اسلایدشو Nivo Slider، برای اجرای اسلایدشو، باید این کد رو بنویسید:


<script src="js/jqmin.js" type="text/javascript"></script>
<script src="js/slideshowpack.js" type="text/javascript"></script>
<script type="text/javascript">
$(window).load(function() {
$('#slider').nivoSlider({
animSpeed: 5000,
directionNav: false,
pauseOnHover: false,
controlNav: false,
pauseTime: 7500
});
});
</script>

حالا چون از slider# استفاده کردین، باید عکسها رو توی تگی با "id="slider قرار بدین. مثال:


<div id="slider">
<?php
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('db_name') or die('Database does not exist');
$images = mysql_query('SELECT * FROM `images` ORDER BY RAND()');
if($images && mysql_num_rows($images) > 0) {
while($image = mysql_fetch_assoc($images)) {
echo '<img src="slideshow/'.$image['filename'].'"/>'."\n";
}
}
?>
</div><!-- slider -->

امیدوارم متوجه روش کار شده باشین و تونسته باشم خوب توضیح بدم.
موفق باشید.

idocsidocs
جمعه 18 آذر 1390, 22:08 عصر
با سلام، اسلایدشوها کاری به اینکه محتوا رو از کجا میخونید ندارن. برای مثال، شما میتونید آدرس عکسها و متن مربوطه و... رو توی DB ذخیره کنید و موقع نمایش، اونها رو از DB خونده و توی تگ مربوطه بگذارین. برای مثال، در اسلایدشو Nivo Slider، برای اجرای اسلایدشو، باید این کد رو بنویسید:
مهندس توی اسلاید شو های جی کوئری چطور و با چه کدی می تونیم تصاویر رو بارگزاری اولیه بکنیم و بعد نمایششون بدیم؟

saina2006
جمعه 18 آذر 1390, 23:52 عصر
از متد .load() در JQUERY باید استفاده کنی

idocsidocs
شنبه 19 آذر 1390, 12:53 عصر
از متد .load() در JQUERY باید استفاده کنی


یه مثال بزنید لطفا.

فرض کنید تعداد تصاویر داینامیک هستن و در هر بار ممکنه به تعداد تصاویر اضافه بشه، چطور باید همه رو بارگزاری کرد و بعد نمایش داد؟

MMSHFE
شنبه 19 آذر 1390, 14:54 عصر
یه مثال بزنید لطفا.

فرض کنید تعداد تصاویر داینامیک هستن و در هر بار ممکنه به تعداد تصاویر اضافه بشه، چطور باید همه رو بارگزاری کرد و بعد نمایش داد؟
دوست عزیز، یکبار دیگه به کدی که گذاشتم دقت کنید. همونطور که میبینید، از تابع load در jQuery استفاده شده. ضمناً تعداد تصاویر هم پویا هست. هر تصویری که آدرسش رو توی دیتابیس ذخیره کنید، نمایش میده. موفق باشید.

hamed-php
شنبه 19 آذر 1390, 19:27 عصر
با سلام

میشه با متد شی گرا و با بکار گیری از smarty و استفاده در فایل HTML هم توضیح بدهید

hamed-php
یک شنبه 20 آذر 1390, 12:37 عصر
با سلام، اسلایدشوها کاری به اینکه محتوا رو از کجا میخونید ندارن. برای مثال، شما میتونید آدرس عکسها و متن مربوطه و... رو توی DB ذخیره کنید و موقع نمایش، اونها رو از DB خونده و توی تگ مربوطه بگذارین. برای مثال، در اسلایدشو Nivo Slider، برای اجرای اسلایدشو، باید این کد رو بنویسید:


<script src="js/jqmin.js" type="text/javascript"></script>
<script src="js/slideshowpack.js" type="text/javascript"></script>
<script type="text/javascript">
$(window).load(function() {
$('#slider').nivoSlider({
animSpeed: 5000,
directionNav: false,
pauseOnHover: false,
controlNav: false,
pauseTime: 7500
});
});
</script>

حالا چون از slider# استفاده کردین، باید عکسها رو توی تگی با "id="slider قرار بدین. مثال:


<div id="slider">
<?php
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('db_name') or die('Database does not exist');
$images = mysql_query('SELECT * FROM `images` ORDER BY RAND()');
if($images && mysql_num_rows($images) > 0) {
while($image = mysql_fetch_assoc($images)) {
echo '<img src="slideshow/'.$image['filename'].'"/>'."\n";
}
}
?>
</div><!-- slider -->

امیدوارم متوجه روش کار شده باشین و تونسته باشم خوب توضیح بدم.
موفق باشید.

سلام

اگر فایلها رو به شماره مثلاً 1 ، 2 ، 3، ... با فرمتهای مختلف مثلاً png , gif , jpg در یک فولد ذخیره کنیم آیا میشود تا اونجایی که عکس در فولدر هست رو نمایش داد؟ بدون نیاز به دیتا بیس؟ و اگر مثلاً عکس 2 رو از فولدر خارج کنیم در نمایش جی کوئری هم آن عکس داینامیک حذف شود؟

MMSHFE
یک شنبه 20 آذر 1390, 12:45 عصر
با سلام، بله میشه اینکار رو به راحتی انجام بدین. مثال:


<div id="slider">
<?php
$files = scandir('slideshow');
shuffle($files);
$exts = array('gif', 'jpg', 'png');
foreach($files as $file) {
$ext = pathinfo('slideshow/'.$file, PATHINFO_EXTENSION);
if(isset($ext) && in_array(strtolower($ext), $exts)) {
echo '<img src="slideshow/'.$file.'"/>'."\n";
}
}
?>
</div><!-- slider -->
اینطوری دیگه به دیتابیس کاری نداره و فقط محتویات یک پوشه خاص (مثل slideshow) رو نشون میده. ضمناً shuffle رو هم برای این گذاشتم که تصاویر با ترتیب تصادفی ظاهر بشن.
موفق باشید.

hamed-php
یک شنبه 20 آذر 1390, 13:13 عصر
ممنون

اگر از تگ ul استفاده کرده باشیم مثل ذیل ؛

<div class="slider-item"><a href="#"><img src="./tasvir/2.png" alt="icon" width="700" height="341" border="0" /></a></div>

<div id="slider_controls">
<ul id="slider_nav">
<li><a href="#"></a></li></ul>
</div>
دکمه ها رو چطور میشه تو حلقه متناسب با عکس خودش قرار داد؟

rash44
جمعه 25 آذر 1390, 14:19 عصر
سلام

لطفا 1 نمونه برام بزار که با دیتابیس کار کنه
توضیحات شما رو انجام دادم اما جواب نگرفتم

hamed-php
چهارشنبه 07 دی 1390, 15:09 عصر
با سلام، بله میشه اینکار رو به راحتی انجام بدین. مثال:


<div id="slider">
<?php
$files = scandir('slideshow');
shuffle($files);
$exts = array('gif', 'jpg', 'png');
foreach($files as $file) {
$ext = pathinfo('slideshow/'.$file, PATHINFO_EXTENSION);
if(isset($ext) && in_array(strtolower($ext), $exts)) {
echo '<img src="slideshow/'.$file.'"/>'."\n";
}
}
?>
</div><!-- slider -->
اینطوری دیگه به دیتابیس کاری نداره و فقط محتویات یک پوشه خاص (مثل slideshow) رو نشون میده. ضمناً shuffle رو هم برای این گذاشتم که تصاویر با ترتیب تصادفی ظاهر بشن.
موفق باشید.

سلام

اگر همین رو بصورت تابع slider تعریف کنیم و بجای echo از return استفاده کنیم چطور میشه هر جایی که نیاز بود تابع رو فراخوانی کنیم؟
چه پارامتری رو برمیگردونه؟ (کل مسیر img رو؟)

یا بهتر بگم میشه فقط با یه متغیر تابع رو فراخوانی کنیم . یا یک شی تعریف کنیم و کلاس رو فراخوانی کنیم؟ مثلاً همون حلقه چاپ تصاویر رو بصورت کلاس نوشت.

MMSHFE
چهارشنبه 07 دی 1390, 17:11 عصر
میشه یکم بیشتر توضیح بدین یا مثال بزنید؟ شاید بتونم کمک کنم.

hamed-php
چهارشنبه 07 دی 1390, 18:09 عصر
میشه یکم بیشتر توضیح بدین یا مثال بزنید؟ شاید بتونم کمک کنم.

سلام

میخوام یک کلاس تعریف کنم که کارش چاپ کردن عکس هست slidshow و یک کلاس هم دارم که اسم اون رو news گذاشتم و داخل اون تابعی دارم که صفحه میسازه و از case درون آن استفاده کردم. یکی از حاتهای case که به آن switch میکنم همین slidshow هست. که اگر کاربر خواست اسلاید شو فعال بشه.

حالا میخوام داخل کلاس اخبار ، یک تابع دیگر بسازم که کلاس slidshow رو فراخوانی کنم و یک متغیر رو return کنم .

همین کار رو برای تاریخ هم انجام داده ام :


function datefarsi(){

$c = new jCalendar;
return $c->date('l j F Y') ;

}


در اینجا از کلاس تاریخ استفاده میکنم و خروجی رو return میکنم . که اگر کاربر خواست تاریخ رو ببینه!
اینطوری دیگه هر جایی که خواستم از اون استفاده میکنم. مخصوصاً در حالتی که بخواهیم فایلهای html رو از php جدا کنیم و به نوعی اسمارتی کار کنیم این امر ضرورری بنظر میرسه!



حالا آیا برای اسلاید شو هم همچین کاری میشه کرد؟

MMSHFE
چهارشنبه 07 دی 1390, 18:50 عصر
با سلام، نگاهی به این کلاس بندازین:


<?php
class SlideShow {

private $files;
private $root;

public function __construct() {
$this->root = dirname(dirname(__FILE__));
$this->files = array();
}

private function getFiles($folder = 'slideshow') {
$this->files = scandir($folder);
shuffle($this->files);
}

public function Display($exts = array('gif', 'jpg', 'png'), $folder = 'slideshow') {
$this->getFiles($folder);
echo '<div id="slider">'."\n";
foreach($this->files as $file) {
$ext = pathinfo('slideshow/'.$file, PATHINFO_EXTENSION);
if(isset($ext) && in_array(strtolower($ext), $exts)) {
echo '<img src="/'.$folder.'/'.$file.'"/>'."\n";
}
}
echo '</div><!-- slider -->'."\n";
}
}
?>
توی کد فوق، فرض کردم که کلاسها رو توی پوشه خاصی (مثل inc) داخل پوشه www سایتتون ذخیره میکنید. اگه کلاسها توی پوشه اصلی هستن، یکی از dirnameها رو توی تابع سازنده حذف کنید. یا هرچقدر پوشه داخلی تر هست، به ازای هر پوشه فرعی، یک dirname اضافه کنید. حالا برای استفاده از اون میتونید مشابه کد زیر کار کنید:


$s = new SlideShow();
$s->Display();

اگه سؤالی بود، در خدمتم. موفق باشید.

hamed-php
چهارشنبه 07 دی 1390, 20:29 عصر
یک سوال : چرا بجای echo وقتی از return استفاده میکنم فقط یک بار حلقه عمل میکند و همه را نمیفرستد؟

MMSHFE
چهارشنبه 07 دی 1390, 20:59 عصر
چون return باعث خروج از تابع ميشه. اگه ميخواين از return استفاده كنين، بايد اول تابع يك متغير با يك رشته خالي ايجاد كنين و به جاي echo كردن، همه چيز رو با =. بهش بچسبونيد و در آخر تابع، اون متغير رو return كنين. موفق باشيد.

hamed-php
چهارشنبه 07 دی 1390, 21:15 عصر
ممنون از راهنمایی خوبتون

منظورتون این هست:


$var.='<img width=700px height=341px src="'.$folder.'/'.$file.'"/>'."\n";
return $var;

MMSHFE
پنج شنبه 08 دی 1390, 07:16 صبح
با سلام، نه، اینطوری:


public function Display($exts = array('gif', 'jpg', 'png'), $folder = 'slideshow') {
$this->getFiles($folder);
$result = '';
$result .= '<div id="slider">'."\n";
foreach($this->files as $file) {
$ext = pathinfo('slideshow/'.$file, PATHINFO_EXTENSION);
if(isset($ext) && in_array(strtolower($ext), $exts)) {
$result .= '<img src="/'.$folder.'/'.$file.'"/>'."\n";
}
}
$result .= '</div><!-- slider -->'."\n";
return $result;
}

موفق باشید.