یلدا ادامه داره... ❤️ ۴۰ درصد تخفیف همه دورهها
استفاده از تخفیفهاسلام دوستان.وقتتون بخیر.
توی لیست محصولات میخوام هر 10 دقیقه قیمت محصول از جدول محصولات خونده بشه و بدون اینکه صفحه رفرش بشه قیمت محصول به روز بشه.محصولات رو از طریق ی foreach دارم به کاربر نمایش میدم
foreach($products as $product)
{{$product->id}}
{{$product->name}}
{{$product->price}}
endforeach
ممنون میشم راهنمایی کنین چجوری اینکار رو انجام بدم
@mohaligateway
@muhammad
@ali.bayat
@hesammousavi
@mrn
@juza66
سلام وقت بخیر ، من یه راه حل ساده و کاربردی واسه این سوال شما دارم:
چرا شما دوباره محصول رو بگیری از دیتابیس؟ فقط کافیه اون دیوی ک محصولات رو نمایش میده رفرش کنی(همون جایی که foreach قرار داره) به این صورت
$('.parent').load(document.URL + ' #wrapper);
داخل این کد parent دیو بالایی محصولات هست و wrapper دیو اصلی ماست که محصولات رو نمایش میده شما یک interval بزار مثلا ۵ ثانیه ای و کد بالا رو داخل این interval بزار و یک محصول اضافه کن به دیتابیس
سلام میتونی با تابع setInterval در جاوا اسکریپت این کارو انجام بدی در این تابع که زمان اجراشو مشخص میکنی در بازه های زمانی خاصی اجرا میشه و میتونی با ایجکس لیست محصولاتو دریافت و نشون بدی.
یه سرچ در باره نحوه کار کرد تابع setInterval انجام بده.
میتونی لیست کل محصولاتو بگیری یا فقط قیمتهارو بخونی که خوندن فقط قیمت ها مقداری پیچیده تره.
راه آسونش اینه لیست کامل محصولو در ده دقیقه بگیری با foreach نمایشش بدی.
سلام شب بهخیر.
کی توی سایت 10 دقیقه منتظر میمونه تا نیاز به چنین کاری باشه؟
اگه نیاز بود باید با جاواسکریپت، ریکوست HTTP بفرستین یا از Socket استفاده کنین. راه اول اوکی و راحته: یه ریکوست میزنین و لیست محصولات رو میگیرین، بعد با دستکاری DOM اون باکس رو آپدیت میکنین. اولین بار foreach داخل blade رو استفاده کردین ولی بعدش دیگه کارایی نداره چون با جاواسکریپت ریفرش میشه.
@hosseinshirinegad98
مهندس ممنون میشم اگر آموزش خوبی در این مورد داری بهم بدی؟ setInterval این رو توی چندتا از آموزش ها دیدم ولی نحوه ای که بخواد فقط اون foreach آپدیت بشه رو نفهمیدم.
ببینید همانطور که در بالا اشاره شد هیچ کس به مدت ده دقیقه در یه صفحه محصولات نمیمونه و شاید انجام چنین کاری اشتباه محض باشه ولی ایرادی نداره طریق انجامشو یاد بگیری بد نیست.
شما باید اون foreach رو به تنهایی برداری ببری تو یک ویو و بجاش از دستور include برای ایمپورت کردن اون foreach استفاده کنی و در دفعات بعد هم با ایجکس اون ویوی foreach رو سر جاش بزای. کافیه یه المنت دور foreach بزاری و با ایجکس ویوی موردنظرو برگردونی و قرارش بدی تو اون تگه.
اگه لازم داری یه نمونه کد برات ارسال کنم
@hosseinshirinegad98 نیکی و پرسش مهندس جان اگر یک نمونه بدی ممنون میشم.در مورد اون 10 دقیقه مهندس اصلا این چیزی که گفتم نیست چیزی که مد نظرمه یک اپ تحت وبه و اصلا محصول نیست من برای اینکه ملموس تر و باشه و درگیر توضیحات اون سمت نشیم گفتم محصول که زودتر به مقصود برسم
روت خوندن اطلاعات :
Route::get('products', 'ProductController@products');
کدهای کنترلر
class ProductController extends Controller
{
public function products()
{
$products = Product::orderBy('id', 'DESC')->get();
return view('products', compact('products'));
}
}
ویوی برنامه با نام : products.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="CSRF-TOKEN" content="{{ csrf_token() }}">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="{{url('css/app.css')}}">
</head>
<body>
<div id="products">
@if($products->count())
<table class="table table-bordered">
<thead>
<tr>
<th>عنوان</th>
<th>قیمت</th>
</tr>
</thead>
<tbody>
@foreach($products as $product)
<tr>
<td>{{$product->title}}</td>
<td>{{ $product->price }}</td>
</tr>
@endforeach
</tbody>
</table>
@else
<p class="alert alert-warning">محصولی برای نمایش یافت نشد</p>
@endif
</div>
</body>
</html>
<script src="{{url('js/jquery-2.1.1.min.js')}}"></script>
<script>
setInterval(function() {
$("#products").load(document.URL+ ' table');
}, 600000);
</script>
600000 معادل 10 دقیقه
سلام وقت بخیر ، من یه راه حل ساده و کاربردی واسه این سوال شما دارم:
چرا شما دوباره محصول رو بگیری از دیتابیس؟ فقط کافیه اون دیوی ک محصولات رو نمایش میده رفرش کنی(همون جایی که foreach قرار داره) به این صورت
$('.parent').load(document.URL + ' #wrapper);
داخل این کد parent دیو بالایی محصولات هست و wrapper دیو اصلی ماست که محصولات رو نمایش میده شما یک interval بزار مثلا ۵ ثانیه ای و کد بالا رو داخل این interval بزار و یک محصول اضافه کن به دیتابیس
آقا خیلی خیلی ممنون.
@hosseinshirinegad98
@eniack
مهندس فقط مشکلی که خوردم اینه که من دارم از data table استفاده می کنم و بعد از اولین برروز رسانی سرچ و پیج بندی data table از بین میره.راه حلی برای این قضیه هست؟
راحلش اینه که پارامترهای سرچو به لینکهای صفحه بندی بچسبونی.
در مورد متد appends در لاراول یه تحقیقی بکن یا متد withQueryString
و همینطور withPath با این متد ها میتونی پارامترهای سرچو به آخر لینک های صفحه بندی اضافه کنی .
سرچی بزنی کار دستت میاد . انگلیسی هم سرچ کن
@hosseinshirinegad98
مهندس appends تا جایی که می دونم مال زمانیه که از پجینیت خود لاراول استفاده کنی.
من الان از data table استفاده کردم و منظورم از رفتن سرچ و پیج بندی محو شدن باکس سرچ و دکمه های پجینیت هست.
تو data table اصلا پارامتری به آخر لینک های صفحه بندی اضاف نمیشه که که بخوام withPath کنمش.
به هر حال خیلی خیلی ممنون تا همینجا هم خیلی لطف کردین.کلی کارمو راه انداختین.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟