شی گرایی و حلقه fetch_assoc

plague

Member
سلام
مدتیه که دارم شی گرا کار میکنم تصمیم گرفتم یه سایت خبری رو که قبلا نوشته بودم بازنویسی کنم

توی صفحه اول 7 تا از خبر های جدید به همراه تیتر و تاریخ هر کدوم نمایش داده میشه

من که هرچی فکر میکنم نمیتونم روشی برای نوشتن این کد در قالب شی گرا پیدا کنم

PHP:
while($row_news = mysql_fetch_assoc($result)){
echo  $row_news['title'];
echo  $row_news['news_text'];
...... }


حتی اگه دیتا ممبر هایی برای کلاس نیوز در نظر گرفته باشم مثلا :

title
news_text
باید به اضا هر 7 تا خبر 7 تا شی بسازم و بزارم تو صفحه اول که اینجوری همین حلقه معمولی رو بنویسم کد کمتر و ساده تری میشه


 

Masoud1365

مدیر انجمن
دید شی گرایی هم مهمه ها !
مثلا کار دیگهای که میشه کرد اینه که برای اخبار یک آبجکت داشته باشی !
اینو ببین
PHP:
class news{
    function latestNews($limite = 5){
        //nemayesh 5 ta az akharin khabar !
    }
    //baghiyeye method ha
}
$news = new news();
$news->latestNews(7);
به صورت پیش فرض 5 تا از آخرین آخبار رو نشون میده که میتونی تعدادش رو هم در هنگام فراخوانی مشخص کنید.البته این مثال بود :wink:
 

plague

Member
ممنون ولی مشکل اون کد های html هستن که خبر ها لابلای اونها نمایش داده میشن مشکل من نمایش اون آبجکت توی صفحست
مثلا
PHP:
<?php while($row_news = mysql_fetch_assoc($result)){ ?>
<div><?php echo  $row_news['title']; ?><br/>
<p><?php echo  $row_news['news_text']; ?>
...... }
یچیزی شبیه اینطوری نمایش میخام بدم این کد هارو چیکار کنم
مگه اینکه توی کلاس یه متد result تعریف کنم که مثلا تعداد رکورد های مورد نظر ما رو بگیره ( مثلا اینجا 7 تا ) و از دیتابیس بخونه و result رو return کنه اونوقت برای اون result یه حلقه while و fetch_assoc($result) بنویسم و نتایج رو ازش استخراج کنم و لابلای کد های html lhda fnl

میدونی منظور من به طور کلی این بود که امکانش هست یکاری کرد که اینجوری بشه نمایش داد

PHP:
<div><?php echo  news->title; ?><br/>
<p><?php echo  news->text; ?>
...... }
 

eAmin

Well-Known Member
بله، امکانش هست ولی نمی فهمم الان مشکل شما چیه؟
مثلا همین روشی که شما مد نظر دارید، در ساده ترین حالات می تونید چند property برای کلاس در نظر بگیرید و از طریق متد یا سازنده کلاس این پراپرتی ها رو مقدار دهی کنید و بعد بصورتی که درپستتون مطرح کردید استفاده کنید.
شما می تونید به روشهای خیلی مختلفی که شی گرایی در اختیار شما قرار میده روش های دلخواهتون رو پیاده سازی کنید. قوائد کلی شی گرایی رو اگر بصورت کامل درک کنید، مطمئن باشید دیگه به مشکل بر نمی خورید.

موفق باشید.
 

plague

Member
بله، امکانش هست ولی نمی فهمم الان مشکل شما چیه؟
مثلا همین روشی که شما مد نظر دارید، در ساده ترین حالات می تونید چند property برای کلاس در نظر بگیرید و از طریق متد یا سازنده کلاس این پراپرتی ها رو مقدار دهی کنید و بعد بصورتی که درپستتون مطرح کردید استفاده کنید.
شما می تونید به روشهای خیلی مختلفی که شی گرایی در اختیار شما قرار میده روش های دلخواهتون رو پیاده سازی کنید. قوائد کلی شی گرایی رو اگر بصورت کامل درک کنید، مطمئن باشید دیگه به مشکل بر نمی خورید.

موفق باشید.
من property برای کلاسم تایین کردم
title , news_text , date
مثلا
مشکل من اینه که وقتی شی رو میسازم اون متد سازنده کلاس یک بار این property ها رو مقدار دهی میکنه
یدونه آبجکت خبر به من میده با این پروپرتی ها
اگه میخاستم تو صفحه یدونه خبر نمایش داده بشه این روش خوب بود
درحالی که من میخام 7 تا خبر مثلا تو صفحه نمایش داده بشه
میتونم یه حلقهبزارم که به اضای هر خبر یه شی بسازه اون property ها رو مقدار دهی کنه و نمایش بده
که به نظرم اینکار یکم غیر منطقیه چون هفت بار باید به دیتابیس وصل بشه و یه خبر رو بگیره در حالی که اگه از روش معمولی استفاده کنم به یکبار وصل شدن به دیتابیس میتونم 7 تا خبر رو بگیرم


نمیدونم شاید بشه یه آرایه 3 بعدی به عنوان property در نظر بگیرم و متد من اون آرایه رو با7 تا خبر پر کنه و بهم برگشت بده
 

Masoud1365

مدیر انجمن
توی متدی که آخرین اخبار رو بر میگردونه نتایج رو به شکل زیر استخراج کنید.
PHP:
$latest_news = array(array('title'=>'title1','content'=>'content1'),
                     array('title'=>'title2','content'=>'content2'),
                     array('title'=>'title3','content'=>'content3'),
                     array('title'=>'title4','content'=>'content4'),
                     array('title'=>'title5','content'=>'content5'),
                     );
بعد با یه حلقه هر جوری که خواستید نمایش بدید!
 

جدیدترین ارسال ها

بالا