PDA

View Full Version : اجرا مر حله به مرحله یک حلقه... زمان دار



Vidico
جمعه 08 خرداد 1394, 15:45 عصر
سلام

من یک فایل html دارم که مثلا 200 تا عکس کوچک در کنار هم نمایش داده میشه( بصورت زیر)


. . . . . . .

. . . . . . .

. . . . . . .


میخوام ردیف اول عکس هام لود بشه و تو html نمایش داده بشه بعد از 10 ثانیه ردیف اول حذف بشه و بره ردیف دوم رو لود کنه و نمایش بده...

چیکار کنم؟

ممنون میشم راهنماییم کنید

reza_alie
جمعه 08 خرداد 1394, 15:56 عصر
سلام شما می تونید از جی کوئری استفاده کنید

Vidico
جمعه 08 خرداد 1394, 16:04 عصر
سلام شما می تونید از جی کوئری استفاده کنید

ممنون از راهنمایی تون، میدونم به کمک جاوا یا جی کوری یا آجاکس امکان پذیر هست، ولی چطوری؟؟؟
ممنون میشم راهنمایی کنید تا بتونم اجراش کنم!!!

pls

barnamenevis2016
جمعه 08 خرداد 1394, 17:28 عصر
فکر می کنم باید بهتر توضیح بدید..ولی یکی از شاه کلیک های ساخت هم چین چیزی استفاده از متد جاوا اسکریپت زیره:

setTimeout("function", 10000)
کد بالا باعث می شه تابع مورد نظرتون که میان دو علامت نقل قوله "" پس از ده ثانیه یک بار اجرا بشه...حالا باید یک تابع مناسب برای اینکار بسازید که درون کد بالا جای بدید و کد بالا رو اجرا کنید و در خود تابع نیز کد بالا موجود باشه...و قرار بزارید در تابتون که با شرایطی این تداوم اجرا در ده ثانیه بعدی نیز تکرار بشه با اجرای کد بالا که در درون خود داره و قطع بشه در شرایطی که شما تعیین می کنید با عدم دوبار اجرای متد بالا...درست منظورمو رسوندم :متفکر: حالا روشای دیگه هم می تونه باشه

Vidico
جمعه 08 خرداد 1394, 19:14 عصر
فرض کنیم یه حلقه for داریم که یک دستوری رو اجرا می کنه


for ($i = 0; $i <= 1000; $i++) { echo $i;}



حال این حلقه شروع می کنه از عدد 1 تا هزار رو می نویسه!
من میخوام اعداد 1 تا 50 نوشته بشه و مثلا 10 ثانیه صبر کنه حالا دوباره عدد 50 تا 100 رو بنویسه

و.....

barnamenevis2016
جمعه 08 خرداد 1394, 20:19 عصر
اول این نکته رو توجه داشته باشید...که در php اینطور نیست که انتظار داشته باشید اون حلقه for که نشون دادید در بالا در هربار گردشش نتیجه echo رو در صفحه نشون بده...بلکه ابتدا کل اون 1000 چرخش باید انجا بشه...و پس از انجام نتیجه حاصل که 1000 دستور echo هست نمایش داده می شه....
در اینجا یک کار به نظرم معقول استفاده از جاواست...می تونید از غالبای زیر استفاده کنید...
این کد زیر همون چیزیه که من در بالا منظورم بود و گفتم:

function changeImg(){
alert('a')
if (1==1){
setTimeout("changeImg()", 10000)
}
};
var a = setTimeout("changeImg()", 10000)

اگر این کد جاوا رو اجرا کنید...تا ابد هر ده ثانیه یکبار یک alert میده...چون شرط همیشه برقراره..پس همیشه این ده دقیقه ادامه داره...
حالا باید یک جور شرط دلخواه رو ایجاد کنید...
در کد زیر ما شرط گذاشتیم که متغیر a به هزار رسید دیگه کار متوقف بشه و در هر بار اجرا 50 تا به a اضافه می شه


function changeImg(){
var global = $a;
alert('a')
if ($a!=1000){
setTimeout("changeImg()", 10000)
}
$a = $a +50;
};
$a = 0
var a = setTimeout("changeImg()", 10000)

حالا شما به جای alert تابع و دستورات دلخواه خودتون رو می تونید قرار بدید....

barnamenevis2016
جمعه 08 خرداد 1394, 20:36 عصر
به جای alert می تونید از آزاکس بهره ببرید و تابعی جایگزین بنویسید...
به جای alert کد زیر رو بنویسید:

$post(url,{},function(data){
$('.div').append(data)
})
و بعد در فایلی با آدرس url که بالا دادید..کد php زیر رو مثل ا بنویسید....که هرچی رو که echo می شه در div چاپ کی کنه

echo "s"

Vidico
جمعه 08 خرداد 1394, 22:48 عصر
به جای alert می تونید از آزاکس بهره ببرید و تابعی جایگزین بنویسید...
به جای alert کد زیر رو بنویسید:

$post(url,{},function(data){
$('.div').append(data)
})
و بعد در فایلی با آدرس url که بالا دادید..کد php زیر رو مثل ا بنویسید....که هرچی رو که echo می شه در div چاپ کی کنه

echo "s"


فدایی داری به مولا، دمت گرم
منتها این قسمتشو متوجه نشدم، ممنون میشم فایل نمونه در اختیارم قرار بدین، خیلی گلی ایشاله از شرمندگیت در بیام

fatima-php
شنبه 09 خرداد 1394, 08:32 صبح
البته باید بجای append از html استفاده کنید تا محتوای جدید بجای اینکه به ته قبلیا اضافه بشه، جایگزینش بشه. فرض کنید شما یک فایل PHP دارین که فایلهای عکس داخل یک پوشه رو میخواد تکه تکه نشون بده. فرضاً کدش هم اینه:

$files = glob('images/*.jpg');
$page = (isset($_POST['page']) ? max(1, intval($_POST['page'])) : 1);
$itemsPerPage = 10;
$files = array_slice($files, ($page - 1) * $itemsPerPage, $itemsPerPage);
foreach($files as $file) {
echo '<img src="' . $file . '" />';
}
حالا توی صفحه اصلیتون این کد رو میگذارین (فرض کردم کد بالا رو توی gallery.php ذخیره کردین) :

<div id="gallery">
<?php require_once 'gallery.php'; ?>
</div>
<script src="jquery.min.js" type="text/javascript">
<script type="text/javascript">
var page = 2; // first page is loaded with require_once
function showGallery() {
$.ajax({
type: "post",
data: "page="+page,
url: "gallery.php",
success: function(result) {
$("#gallery").html(result);
}
});
page++;
}
$("document").ready(function() {
setInterval("showGallery()", 10000);
});
</script>

Vidico
شنبه 09 خرداد 1394, 09:44 صبح
این کدهای فایل index.php
وقتی با php اجرا می کنم همه عکس ها رو نشون میده ، اما وقتی با index.html اجرا می کنم اصلا هیچ عکسی نشون نمیده! و صفحه خالیه!! (چون تگ php رو نمی شناسه که صفحه گالری رو لود کنه!)






<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>



<script src="jquery.min.js" type="text/javascript"></script>


<script type="text/javascript">
var page = 2; // first page is loaded with require_once
function showGallery() {
$.ajax({
type: "post",
data: "page="+page,
url: "gallery.php",
success: function(result) {
$("#gallery").php(result);
}
});
page++;
}
$("document").ready(function() {
setInterval("showGallery()", 1000);
});
</script>

</head>
<body">



<div id="gallery">
<?php require_once 'gallery.php'; ?>
</div>



</body>
</html>




اینم فایل gallery.php



<?php


$files = glob('images/*.jpg');
$page = (isset($_POST['page']) ? max(1, intval($_POST['page'])) : 1);
$itemsPerPage = 10;
$files = array_slice($files, ($page - 1) * $itemsPerPage, $itemsPerPage);
foreach($files as $file) {
echo '<img src="' . $file . '" />';
}




?>





فولدر images هم پر کردم از عکس jpg
وفایل jquery.min هم تو فولدر اصلی گذاشتم

*** اما موقعی که اجرا می کنی همه عکس ها رو میاره و نشون میده !!!!

Vidico
شنبه 09 خرداد 1394, 09:56 صبح
بعد میشه یک سوال دیگه بپرسم؟؟؟
میشه هر 10 ثانیه یه فایل php رو فراخوانی کرد؟؟؟

fatima-php
شنبه 09 خرداد 1394, 11:57 صبح
بله میشه. میتونید url رو توی کدی که دادم عوض کنید. درمورد مشکل هم نمیدونم چرا واسه شما اینطوریه چون خودم تست کردم درست کار کرد.

Vidico
شنبه 09 خرداد 1394, 12:22 عصر
بله میشه. میتونید url رو توی کدی که دادم عوض کنید. درمورد مشکل هم نمیدونم چرا واسه شما اینطوریه چون خودم تست کردم درست کار کرد.

ببینید من زیاد جاوا و آجاکس بلد نیستم، یه مقداری php بلدم
اجازه بدین یه نوع دیگه بررسی کنیم
فرض کنید تو فایل index.php یک کد iframe هست که صفحه page.php رو نشون میده و صفحه پیج دات پی اچ پی یه کدی رو واسه خودش اجرا می کنه
ما توی فایل ایندکس می خواهیم هر 10 ثانیه این iframe فایل page.php رو به روز کنه! یعنی دوباره اجرا کنه!

....
یه فایل php باشه که هر 10 ثانیه رفرش بشه! و در هر بار رفرش شدن کدی تحلیل بشه و مقدار خروجی در فایل متنی ذخیره بشه و ....

fatima-php
شنبه 09 خرداد 1394, 12:54 عصر
براتون نمونه کدم رو آپلود کردم: http://uplod.ir/3yo0ha0sxgg2/stepgallery.zip.htm

توصیه میکنم با iframe اصلاً کار نکنید.

Vidico
شنبه 09 خرداد 1394, 13:10 عصر
6.5 مگابایت؟؟؟
فکر نکنم چند تا فایل html اینقدر باشه، اشتباهی آپلود نکردین؟
:گیج:

این که پسورد میخواد؟؟؟

fatima-php
شنبه 09 خرداد 1394, 13:43 عصر
نه درسته. چون عکس هم همراهش گذاشتم حجمش اینقدر شده. پسورد رو براتون پیام خصوصی میکنم.

fatima-php
شنبه 09 خرداد 1394, 14:26 عصر
یکی دیگه آپلود کردم. عکسها رو برداشتم و رمز هم نداره. خودتون توی پوشه images چندتا عکس (ترجیحاً بالای 20 30 تا) بگذارین و نتیجه کارش رو ببینید. لینک دانلود: http://uplod.ir/j9mhbgr93ajq/stepgallery.zip.htm

Vidico
شنبه 09 خرداد 1394, 15:01 عصر
یکی دیگه آپلود کردم. عکسها رو برداشتم و رمز هم نداره. خودتون توی پوشه images چندتا عکس (ترجیحاً بالای 20 30 تا) بگذارین و نتیجه کارش رو ببینید. لینک دانلود: http://uplod.ir/j9mhbgr93ajq/stepgallery.zip.htm

عالیه، کار کرد...

دستتون درد نکنه، گلی گلللللللللللللللل