PDA

View Full Version : سوال: محدود کردن مطلب در یک صفحه



mostafa_14
جمعه 13 اردیبهشت 1398, 21:11 عصر
با سلام
یک قالب سایت استاتیک دارم و برای درج خبر می خواهم به عنوان مثال چهار تا خبر که درج شد ما بقی خبر ها بره تو آرشیو، چطوری میتونم صفحه را کنترل کنم که بقیه خبر ها را نشان ندهد، باید تو قالب استاتیک این موضوع کنترل شود و یا کد php بنویسم؟؟؟؟
ممنون میشم یکی بتونه راهنماییم کنه

plague
شنبه 14 اردیبهشت 1398, 15:45 عصر
با php وقتی از دیتابیس خبرا رو میخونی به تعداد لازم یعنی 4 تا بخون

mostafa_14
یک شنبه 15 اردیبهشت 1398, 20:37 عصر
با php وقتی از دیتابیس خبرا رو میخونی به تعداد لازم یعنی 4 تا بخون
مثال می زنید چطوری میشه اینکار رو انجام داد؟؟؟؟؟ ممنون میشم

plague
دوشنبه 16 اردیبهشت 1398, 16:27 عصر
خوندن از دیتابیس رو بلدین ؟
اگه بلد نستین که برید مطالعه کنید یاد بگیرید
اگه بلدین کافیه ته کوئری LIMIT 4 بزاری که فقط 4 تا رو بخونه

mostafa_14
دوشنبه 16 اردیبهشت 1398, 18:32 عصر
خوندن از دیتابیس رو بلدین ؟
اگه بلد نستین که برید مطالعه کنید یاد بگیرید
اگه بلدین کافیه ته کوئری LIMIT 4 بزاری که فقط 4 تا رو بخونه
کار با دیتابیس را بلدم و فقط شرط را مونده بودم که اوکی مرسی

mostafa_14
دوشنبه 16 اردیبهشت 1398, 23:40 عصر
این پست را اشتباه نوشتم. با عرض پوزش از همگی نمیدونستم چطوری باید حذفش می کردم.

mostafa_14
دوشنبه 16 اردیبهشت 1398, 23:42 عصر
خوندن از دیتابیس رو بلدین ؟
اگه بلد نستین که برید مطالعه کنید یاد بگیرید
اگه بلدین کافیه ته کوئری LIMIT 4 بزاری که فقط 4 تا رو بخونه

الان این کار را انجام دادم و درست انجام شد،
توی قالبی که دارم تو هر بخش باید 5 تا اخر نمایش داده شود، با همین دستور LIMIT چهار تا را میشه انجام داد ولی اخرین پست ارسالی، جای مطلب فرق می کنه. اینو باید چیکار کنم؟؟؟
و توی حلقه :
این را در کوئری زدم:



$sql="SELECT * FROM product_tbl LIMIT 0,4";


<div class="row">


<?php
$product=listprodefault();
foreach ($product as $value):
?>

<div class="col-xs-12 col-md-6">
<div class="post-box section-post-box">
<a href="#" class="section-post-img">
<img width="110" height="110"
src="admin/<?php echo $value['img']?>"
class="attachment-110x110 size-110x110 wp-post-image"/></a>
<div class="section-post-content">
<h2 class="top-slick-h2">
<?php echo $value['title']; ?>
</h2>
<div class="blog-content-description">

<?php echo $value['text']; ?>

</div>
<ul class="top-slick-ul section-post-ul">
<li class="li-md"><i class="fa fa-calendar-o"></i> انتشار: ۳۰-۱۰-۹۷</li>
</ul>
</div>
</div>
</div>

<?php endforeach; ?>

</div>
به این صورت که اون چهار تا اینجا قرار میگیره و یکی دیگر جای مطلبش فرق می کنه:


<div class="post-box">
<a href="#" class="latest-post">
<img width="358" height="253" src="Images/default/colour_chart_loreal_professionnel_hair_colour_toro nto_tony_shamas_hair_laser_salon-1024x722-768x542.jpg" class="attachment-360x253 size-360x253 wp-post-image" alt="چگونه در سال جدید بهترین رنگ مو مناسب رنگ پوست خود را انتخاب کنیم؟" srcset="Images/colour_chart_loreal_professionnel_hair_colour_toro nto_tony_shamas_hair_laser_salon-1024x722-768x542.jpg 768w, Images/colour_chart_loreal_professionnel_hair_colour_toro nto_tony_shamas_hair_laser_salon-1024x722-300x212.jpg 300w, Images/default/colour_chart_loreal_professionnel_hair_colour_toro nto_tony_shamas_hair_laser_salon-1024x722.jpg 1024w" sizes="(max-width: 358px) 100vw, 358px" /> </a>
<h2 class="top-slick-h2 latest-post-h2"><a href="#">عنوان پست</a></h2>
<div class="latest-post-content">


متن پست </div>
<ul class="top-slick-ul latest-post-ul">
<li><i class="fa fa-calendar-o"></i> انتشار: ۰۲-۱۱-۹۷</li>
</ul>
</div>
</div>

اخرین پستی که تو سایت از دیتابیس می خونم جاش تو قالب سایت فرق می کنه. اینو باید چطوری انجام بدم.
ممنون میشم راهنمایی کنید

plague
سه شنبه 17 اردیبهشت 1398, 16:20 عصر
اخرین پستی که تو سایت از دیتابیس می خونم جاش تو قالب سایت فرق می کنه. اینو باید چطوری انجام بدم.
متوجه نمیشم یعنی چی
اگه منورت اینه که آخرین پست رو اولی نشون نمیده و میخای بیاد اول باید با order by مرتب سازی کنی



select * from table order by id desc limit 4

mostafa_14
سه شنبه 17 اردیبهشت 1398, 20:46 عصر
متوجه نمیشم یعنی چی
اگه منورت اینه که آخرین پست رو اولی نشون نمیده و میخای بیاد اول باید با order by مرتب سازی کنی



select * from table order by id desc limit 4


150143

با توجه به تصویر بالا مشکل اینه که پست اخر همون سمت راستی هست که خارج از اون چهار تایی ها هست. اون چهار تا که شما راهنمایی کردید به درستی کار میکنه با همون حلقه foreach . ممنون میشم راهنمایی کنید که چطوری اخرین پست سمت راستی به درستی نمایش دهد؟؟؟؟؟؟؟

plague
سه شنبه 17 اردیبهشت 1398, 22:40 عصر
یدونه کوئری جدا بزن آخری رو بخون از دیتبیاس بعد بزارش سمت راست


select * from table order by id desc limit 1

mostafa_14
سه شنبه 17 اردیبهشت 1398, 23:39 عصر
یدونه کوئری جدا بزن آخری رو بخون از دیتبیاس بعد بزارش سمت راست


select * from table order by id desc limit 1

یه تابع در قسمت product به صورت زیر :


function listprodefault(){
$connection=config();
$sql="SELECT * FROM product_tbl LIMIT 0,4";
$sql1="SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 1";
$row=mysqli_query($connection,$sql,$sql1);
while($res=mysqli_fetch_assoc($row)) {
$result[] = $res;
}
return $result;
}

نوشتم.
فکر کنم طریقه کوئری درست نیست میشه راهنمایی بفرمایید؟؟؟
بعد این حلقه برای که بتونه از دیتابیس بخونه چطوری باید تو صفحه اصلی سایت قرار بدم؟؟؟
ممنون میشم راهنمایی کنید.

plague
چهارشنبه 18 اردیبهشت 1398, 17:41 عصر
اول اینکه 0,4 نزار فقط 4 بزار اون 0 برای آفست هستش که ما استفاده نمیکنی
دوم اینکه ما نمیتونی 2 کوئری همزمان اجرا کنی باید برای هر کدوم جداگانه mysqli_query و حلقه بنویسی
سوم اینکه کوئری هات یکیشون order by داره و یکی نداره مگه هردوون نمیخای آخرین ها رو نون بده ؟

اگه اون 4 تایی که میخونی 4 تای آخرین محصولات هستن
و اون 1 دونه ای که سمت راست نشون میدی هم آخرین محصوله
نیاز به 2 کوئری نداری

طبق تابعی که نوشتی توی
$result[0]
آخرین محصول وجود داره و میتونی همون رو استفاده کنی سمت راست

mostafa_14
چهارشنبه 18 اردیبهشت 1398, 19:33 عصر
اول اینکه 0,4 نزار فقط 4 بزار اون 0 برای آفست هستش که ما استفاده نمیکنی
دوم اینکه ما نمیتونی 2 کوئری همزمان اجرا کنی باید برای هر کدوم جداگانه mysqli_query و حلقه بنویسی
سوم اینکه کوئری هات یکیشون order by داره و یکی نداره مگه هردوون نمیخای آخرین ها رو نون بده ؟

اگه اون 4 تایی که میخونی 4 تای آخرین محصولات هستن
و اون 1 دونه ای که سمت راست نشون میدی هم آخرین محصوله
نیاز به 2 کوئری نداری

طبق تابعی که نوشتی توی
$result[0]
آخرین محصول وجود داره و میتونی همون رو استفاده کنی سمت راست

دوم فرمودید: " دوم اینکه ما نمیتونی 2 کوئری همزمان اجرا کنی باید برای هر کدوم جداگانه mysqli_query و حلقه بنویسی" یعنی باید یه حلقه while بنویسم که هر کدوم را جدا خروجی بده؟؟؟

سوم فرمودید: "سوم اینکه کوئری هات یکیشون order by داره و یکی نداره مگه هردوون نمیخای آخرین ها رو نون بده ؟" هردو اخری نیستن، سمت راستی میشه اخرین پست و بعدش چهارتای بعدی.
ممنون میشم راهنمایی فرمایید.

plague
چهارشنبه 18 اردیبهشت 1398, 20:45 عصر
4 تای بعدی رو هم اگه بخای بازم باید مرتب سازی کنی وگرنه 4 تای اول رو میده نه 4 تای آخر
باید هرکوئری رو جدا اجرا کنی و تو حلقه بزاری البته اون یکدونه چون فقط یک سطر رو میخای نیاز به حلقه نداره


$sql="SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 4";
$row=mysqli_query($connection,$sql);
while($res=mysqli_fetch_assoc($row)) {
$products_4[] = $res;
}

$sql1="SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 1";
$row = mysqli_query($connection,$sql1);

$products_1 = mysqli_fetch_assoc($row);





البته کار صحیح تری که میتونی بکنی اینه که 5 تای آخر رو بخونی



$sql="SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 5";
$row=mysqli_query($connection,$sql,$sql1);
while($res=mysqli_fetch_assoc($row)) {
$products_5[] = $res;
}

اولین خونه از آرایه میشه اون یکدونه سمت راست

4 تا خونه دیگه هم میشه برای وسط که اینجوری میتونی یک خونه از آرایت رو جدا کنی



$last_product = $products_5[0];
unset($products_5[0]);

mostafa_14
چهارشنبه 18 اردیبهشت 1398, 22:07 عصر
4 تای بعدی رو هم اگه بخای بازم باید مرتب سازی کنی وگرنه 4 تای اول رو میده نه 4 تای آخر
باید هرکوئری رو جدا اجرا کنی و تو حلقه بزاری البته اون یکدونه چون فقط یک سطر رو میخای نیاز به حلقه نداره


$sql="SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 4";
$row=mysqli_query($connection,$sql);
while($res=mysqli_fetch_assoc($row)) {
$products_4[] = $res;
}

$sql1="SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 1";
$row = mysqli_query($connection,$sql1);

$products_1 = mysqli_fetch_assoc($row);





البته کار صحیح تری که میتونی بکنی اینه که 5 تای آخر رو بخونی



$sql="SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 5";
$row=mysqli_query($connection,$sql,$sql1);
while($res=mysqli_fetch_assoc($row)) {
$products_5[] = $res;
}

اولین خونه از آرایه میشه اون یکدونه سمت راست

4 تا خونه دیگه هم میشه برای وسط که اینجوری میتونی یک خونه از آرایت رو جدا کنی



$last_product = $products_5[0];
unset($products_5[0]);


اون وقت این


foreach ($product as $value):

کد foreach را باید بالای اون اولی قرار بدهم یا اینکه دوتا foreach بزنم؟؟؟؟؟

plague
پنج شنبه 19 اردیبهشت 1398, 19:40 عصر
محصول سمت راست foreach نمیخاد چون آرایه یک بعدی هستش کافیه خونه هاش رو echo کنی
اون 4 تا میخان

mostafa_14
پنج شنبه 19 اردیبهشت 1398, 22:57 عصر
کد زیر :


$sql="SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 4";
$row=mysqli_query($connection,$sql);
while($res=mysqli_fetch_assoc($row))
} $products_4[] = $res;
{



را میزنم پیغام خطای زیر:
150158
را می دهد ولی وقتی بدون :


ORDER BY SORT DESC

میزنم محصولات را نشون میده ولی اخرین پست را نشون نمیدهد، از اولین پست را نشون می دهد.
ممنون میشم راهنمایی فرمایید. با تشکر

plague
جمعه 20 اردیبهشت 1398, 17:04 عصر
وقتی این میاد یعنی تو کئریت اشتباه داشتی و اجرا نشده
پیشنهاد میکنم بعد از اجرای کوئری چکش کنی برای اررور

حدس میزنم فیلدی به اسم sort تو دیتابیس نداشته باشی و همینجوری از خودت نوشته باشی این رو
بجاش باید فیلدی که میخای بر اساس اون مرتب سازی بشن داده ها رو بزاری
تیبلت چه فیلدایی داره ؟

mostafa_14
جمعه 20 اردیبهشت 1398, 20:07 عصر
وقتی این میاد یعنی تو کئریت اشتباه داشتی و اجرا نشده
پیشنهاد میکنم بعد از اجرای کوئری چکش کنی برای اررور

حدس میزنم فیلدی به اسم sort تو دیتابیس نداشته باشی و همینجوری از خودت نوشته باشی این رو
بجاش باید فیلدی که میخای بر اساس اون مرتب سازی بشن داده ها رو بزاری
تیبلت چه فیلدایی داره ؟

الان این مشکل حل شد. فیلد sort داشت مشکل syntax داشت حل شد.
مشکل برای این محصول سمت راست است که کد زیر :



function listprodefault()
{
$connection = config();
$sql = "SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 4";
$row = mysqli_query($connection, $sql);
while ($res = mysqli_fetch_assoc($row)) {
$result_4[] = $res;
}
return $result_4;
$sql1 = "SELECT * FROM product_tbl ORDER BY SORT DESC LIMIT 1";
$row = mysqli_query($connection, $sql1);
$res = mysqli_fetch_assoc($row);
return $res;
}

در تایع و کد زیر را در صفحه اصلی:



<div class="row">




<div class="col-xs-12 col-sm-6 col-md-4">
<a href="#"><label class="section-label sl1 visible-xs">سبک زندگی</label></a>
<div class="post-box">
<?php

$product1=listprodefault();
?>
<a href="#" class="latest-post">
<img width="358" height="253" src="admin/<?php echo $product1['img'];?>" class="attachment-360x253 size-360x253 wp-post-image"
</a>
<h2 class="top-slick-h2 latest-post-h2"><a href="#">
<?php echo $product1['title']; ?>
</a>
</h2>
<div class="latest-post-content">
<?php echo $product1['text']; ?>
</div>
<ul class="top-slick-ul latest-post-ul">
<li><i class="fa fa-calendar-o"></i> انتشار: ۰۲-۱۱-۹۷</li>
</ul>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-8">
<a href="#"><label class="section-label sl1 hidden-xs">سبک زندگی</label></a>
<div class="section-category-img hidden-xs hidden-sm"><img src="Images/default/life-stile.jpg" alt="category"></div>
<div class="row">


<?php
$product=listprodefault();
foreach ($product as $value):
?>

<div class="col-xs-12 col-md-6">
<div class="post-box section-post-box">
<a href="#" class="section-post-img">
<img width="110" height="110"
src="admin/<?php echo $value['img']?>"
class="attachment-110x110 size-110x110 wp-post-image"/></a>
<div class="section-post-content">
<h2 class="top-slick-h2">
<?php echo $value['title']; ?>
</h2>
<div class="blog-content-description">

<?php echo $value['text']; ?>

</div>
<ul class="top-slick-ul section-post-ul">
<li class="li-md"><i class="fa fa-calendar-o"></i> انتشار: ۳۰-۱۰-۹۷</li>
</ul>
</div>
</div>
</div>

<?php endforeach; ?>

</div>
</div>
</div>

وسط صفحه که چهار تا را نشون میده درست کار می کنه ولی محصول سمت راست پیغام زیر:
150160
را می دهد.
مشکل از کجاست؟؟ راهنمایی بفرمایید . ممنون میشم

plague
شنبه 21 اردیبهشت 1398, 17:11 عصر
تابع فقط یک return میتونه داشته باشه و وقتی به return رسید کدای بعدش دیگه اجرا هم نخواهد شدا
اگه بخای 2 تا مقدار برگردونه یا باید 2 تا تابع بنویسی یا اینکه 2 تا رو بزاری توی یک آرایه بعد برگردونی آرایه رو
از روش دوم استفاده کن که گفتم 5 تای آخر رو بخون بعد یکیش رو جدا کن برای سمت راست

mostafa_14
شنبه 21 اردیبهشت 1398, 21:29 عصر
تابع فقط یک return میتونه داشته باشه و وقتی به return رسید کدای بعدش دیگه اجرا هم نخواهد شدا
اگه بخای 2 تا مقدار برگردونه یا باید 2 تا تابع بنویسی یا اینکه 2 تا رو بزاری توی یک آرایه بعد برگردونی آرایه رو
از روش دوم استفاده کن که گفتم 5 تای آخر رو بخون بعد یکیش رو جدا کن برای سمت راست

ببخشید اینقدر می پرسم. ممنون میشم کمکم کنید.
تابع function به صورت زیر :



function listprodefault(){
$connection=config();
$sql="SELECT * FROM product_tbl ORDER BY sort DESC LIMIT 5";
$row=mysqli_query($connection,$sql);
while($res=mysqli_fetch_assoc($row)) {
$products_5[] = $res;
}
$last_product=$products_5[0];
unset($products_5[0]);
}



و در صفحه ای که میخواهم فراخوانی کنم:



<div class="row">

<?php
$product=listprodefault();
foreach ($product as $value):
?>

<div class="col-xs-12 col-md-6">
<div class="post-box section-post-box">
<a href="#" class="section-post-img">
<img width="110" height="110"
src="admin/<?php echo $value['img']?>"
class="attachment-110x110 size-110x110 wp-post-image"/></a>
<div class="section-post-content">
<h2 class="top-slick-h2">
<?php echo $value['title']; ?>
</h2>
<div class="blog-content-description">

<?php echo $value['text']; ?>

</div>
<ul class="top-slick-ul section-post-ul">
<li class="li-md"><i class="fa fa-calendar-o"></i> انتشار: ۳۰-۱۰-۹۷</li>
</ul>
</div>
</div>
</div>

<?php endforeach; ?>

</div>



و



<div class="col-xs-12 col-sm-6 col-md-4">
<a href="#"><label class="section-label sl1 visible-xs">سبک زندگی</label></a>
<div class="post-box">
<?php
$product1=listprodefault();

?>
<a href="#" class="latest-post">
<img width="358" height="253" src="admin/<?php echo $product1['img'];?>" class="attachment-360x253 size-360x253 wp-post-image"
</a>
<h2 class="top-slick-h2 latest-post-h2"><a href="#">
<?php echo $product1['title']; ?>
</a>
</h2>
<div class="latest-post-content">
<?php echo $product1['text']; ?>
</div>
<ul class="top-slick-ul latest-post-ul">
<li><i class="fa fa-calendar-o"></i> انتشار: ۰۲-۱۱-۹۷</li>
</ul>
</div>
</div>



150163