انجمن‌های فارس وب

نسخه کامل: طريقه پياده سازي موضوع بندي در مديريت محتواي php
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
سلام ،
دوستان یک سوالی داشتم ! ؟

بچه ها ما فرض میکنیم یک صفحه مدیریت داریم که وقتی لاگین میکنیم به مدیریت ارسال سایت منتقل میشم برای پست دادن در صفحه اصلی . من میخوام کاری کنم که در صفحه ارسال مطلب یک لیست باز شو داشته باشم که لیست موضوعات در آن باید انتخاب بشه ( مثلاً یک فولدر به نام Caregory داریم که داخل این فولدر دو تا فولدر دیگه به نام Mobile و Game وجود داره ) حالا من وقتی میخوام مطلب بزارم تو سایت ، مطلبم در مورد موبایل هست و موبایل رو انتخاب میکنم حالا میخوام این مطلب هم تو صفحه اصلی سایت و هم تو قسمت Category/Mobile قرار بگیره و وقتی مثلا من میخوام مطالبو موبایل رو ببینم فقط مطالب مربوط به موبایل تو صفحه موبایل نشون بده

امیدوارم منظورمو باز دوباره درست رسونده باشم ( ممنون میشم دوستان با یک مثال راهنمایی کنن و راجبه به کد های مثال توضیحات بدن )

موفق باشید ،
سوال شما خيلي كلي هستش كه طريقه ي ايجاد موضوع بندي مطالب رو مي طلبه ، از سيستم مديريت محتواي خاصي استفاده مي كنيد؟ سوال شما دقيقاً به آلگوريتم برنامه نويسي موضوعات و روابطشون با پست ها در زبان php مربوط مي شه؟
نه سیستم خاصی نیست خودم نوشتم سیستمو که یک سیستم ساده هستش که یک مدیریت داره و وقتی لاگین میکنی میتونی مطلب ارسال کنی و مطالب در دیتابیس ذخیره میشه و تو صغحه اصلی نمایش داده میشه و حالا من میخوام مثه بعضی از سیستم ها ی سایت موضوع بندی کنم
روش كلي و ساده ي كار اين هستش كه جدولي به نام مثلاً cats بسازيد ، شامل 2 ستون title و ID ؛ همچنين براي جدول پست ها هم يك ستون مثل catID در نظر بگيريد كه مشخص كننده ي اين هستش كه اون پست منتصب به كدام موضوع هست.

فكر مي كنم ادامه ي كار براي شما قابل حدس باشه ، با دستورات sql در زمان نوشتن پست ، عناوين موضوعات رو با توجه به ID استخراج و در يك select با option هاي همسان ID موضوعات آماده ي انتخاب مي كنيد .

بعد از ثبت ، مقدار option انتخابي در catID پست مورد نظر درج و پست ها با توجه به catID از بانك اطلاعاتي استخراج و براي نمايش آماده مي شن.

البته ، قبل از انجام اين اعمال مي بايست تسلط كافي بر روي دستورات بانك اطلاعاتي و handle كردن اطلاعات داشته باشيد و همچنين در مورد شاخص هاي امنيت و طريقه ي كدنويسي استاندارد در php تحقيق كنيد.
دوست عزیز امکانش هست یک نمونه مثال ساده و کوچیک بزینید ؟؟؟
اگر منظور شما از "مثال ساده و كوچيك" اين هستش كه مثالي از برنامه براي شما نوشته بشه ، خير ؛ امكانش نيست ، چون برعكس ظاهر امر ، ساده و كوچك نيست!

پيشنهاد مي كنم با رجوع به سورس كد برنامه هاي مديريت محتوا ، همانند serendipity ، wordpress يا phpfusion كه ساختار به نسبت ساده تري دارند ، بيشتر با نحوه ي اجراي كار آشنا بشيد ، در صورت بروز سوال در مورد جزء جزء كار ، مي تونيد موضوع رو در تاپيك مجزا ايجاد كنيد.

موفق باشيد.
خوب شاید مشکل من حل بشه ، در هر صورت مشکل من هیمنه دیگه انجمن هم یعنی همین دیگه
شاید این سوال من سوال خیلیای دیگه هم باشه ، و این سوال من که قراره شما جوابشو بدی میتونه یه آموزش بشه
اگر نگاهي به [ جهت مشاهده لينك عضو شويد ! ] ، كه جزئي از قوانين فارس وب نيز هست ، انداخته باشيد ، در بند 7 داريم:

نقل قول:
7 - در انجمن ها هیچ کس خادم دیگری نیست ! همه به هم در نشان دادن راه و چاه ؛ دوستانه و در حد راهنمائی کمک می کنند ؛ همانطور که هیچ معلمی مشق شاگردش را انجام نمی دهد ، هیچ کاربری نبایست انتظار داشته باشد که کارهای شخصی شان توسط اعضای انجمن صورت پذیرد ! جستجو در وب يك وظيفه ي شخصي است !


هدف ما در انجمن ها حل مشكل نيست ، بلكه نشان دادن راه حل مشكل هست! فكر مي كنم تا اينجاي كار ، آشنايي با پياده سازي صحيح برنامه و معرفي نمونه هاي مناسب ، آموزش خوبي بوده باشه ؛ تحقيق ، كنكاش و رسيدن به هدف به عهده ي خود شماست ، ارائه ي برنامه ي آماده ، نمو خلاقيت و تحصيل علم رو از شما صلب مي كنه و اين اصلاً خوب نيست !

براي دومين بار اعلام مي كنم چنانچه در مورد ريزه كاري هاي كار ، مثل چگونگي ارتباط بين 2 جدول مختلف ، سوالي داشتيد ، جداگانه مطرح كنيد ، وقت طلاست ، از همين حالا دست به كار بشيد!

دوست عزیز من طبق گفته شما یک جدول Cats با دو فیلد ID , TITLE ساختم که ID رو Primary key و Auto Criment گذاشتم و 2 مقدار وارد این جدول کردم :

ID = 1 | TITLE = Program
ID = 2 | TITLE = Game


در جدول News هم یک cat_id ایجاد کردم و مقدار اون رو برای پست هایی که داده بودم با توجه به ID جدول Cats تنظیم کردم یعنی یک مطلب بود که در مورد game بود و cat_id اون رو 2 گذاشتم .

حالا این محتویات صفحه addnews.php هستش که باید مشخص بشه که مطلب ارسالی مربوط به چه دسته ای هستش :

<form method="post" action="addnews1.php">
    <div align="center" dir="rtl">
    <table border="1" cellspacing="1" width="500" class="style" >
    <tr bordercolor="#000000">
    <tr>
    <td class="style1">عنوان :</td>
    <td align="right"><input type="text" name="title" size="65" /></td>
    </tr>
    
    <tr>
    <td class="style1"> خبر کوتاه : </td>
    <td><textarea name="kholase" rows="5" cols="50"></textarea></td>
    </tr>
    </tr>
    <td class="style1"> متن خبر </td>
    <td><textarea name="content" rows="5" cols="50"></textarea></td>
    <tr>
    <td>
    
    <table align="center">
    <tr>
    <td><input type="submit" name="btn" value="ADD" /></td>
    </tr></table></tr></table></div></form>


</body>
</html>

Bonyanalam
با دستورات sql در زمان نوشتن پست ، عناوين موضوعات رو با توجه به ID استخراج و در يك select با option هاي همسان ID موضوعات آماده ي انتخاب مي كنيد .

بعد از ثبت ، مقدار option انتخابي در catID پست مورد نظر درج و پست ها با توجه به catID از بانك اطلاعاتي استخراج و براي نمايش آماده مي شن.



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

موفق باشید
بسيار عالي ، حتماً منظور شما از Auto Criment ، همان auto_increment بوده ، كه id از نوع bigint و ويژگي unsigned با طول 20 و title از نوع text هستش. در مورد جدول news هم فرض رو بر اين مي گيريم كه شامل حداقل 3 ستون p_title مربوط به عنوان اخبار ، text مربوط به محتواي اخبار و cat_id مربوط به كليد موضوع هستش .

حقيقتاً كد php شما مورد نيازه ، نه كد html ، با اين حال من به ساده ترين روش نمايش اخبار (حلقه ي عناوين ، محتوا و موضوع) رو مثال مي زنم ، ارتباط با بانك اطلاعاتي test :

$dbhost 'localhost';
$dbuser 'root';
$dbpass '';

$conn mysql_connect($dbhost$dbuser$dbpass);

if(! 
$conn )
{
  die(
'MySQL Error: ' mysql_error());
}
mysql_select_db('test'); 


رجوع به بانك اطلاعاتي و پرس و جوي رابطه بينcat_id از جدول news و id از جدول cats و يافتن اطلاعات مربوطه:

$sql 'SELECT a.p_title, a.text, b.title
        FROM news a, cats b
        WHERE a.cat_id = b.id'


آزمون صحت پرس و جو:

$retval mysql_query($sql$conn);

if(!
$retval)
{
  die(
'Could not get data: ' mysql_error());

ايجاد حلقه ، استخراج و نمايش تك تك اطلاعات مورد نظر:

while($row mysql_fetch_array($retvalMYSQL_ASSOC))
{
    echo 
"Post Title: {$row['p_title']} <br> ".
        
"post content: {$row['text']}  <br> ".
         
"Cat: {$row['title']} <br> ".
         
"<hr>";


خروجي ما با فرض 2 پست ، چيزي شبيه به خطوط زير خواهد بود:

Post Title: my pro
post content: in barnameye mane
Cat: Program

---------------------------------------------------------------
Post Title: my games
post content: salam, in baziye mane
Cat: Game


با اين توضيحات فكر مي كنم استخراج موضوعات و نمايش در يك تگ select كار سختي نباشه:

$cats mysql_query("SELECT id,title FROM cats");

$cat_selector "<select>\n";
while(
$cat mysql_fetch_array($cats))
{
    
$cat_selector .= "<option value={$cat['id']}>".$cat['title']."</option>\n";

$cat_selector .= "</select>";
echo 
$cat_selector


كه خروجي اين كد به صورت انتخاب موضوعات با value متناسب با id موضوع مربوطه هستش و با فرض 2 موضوع پيش فرض به صورت زير خواهد بود:

<select>
<option value=1>Program</option>
<option value=2>Game</option>
</select>


كه پس از ثبت خبر يا پست مربوطه ، value منتخب با توجه به id موضوعات قابل استفاده و handle كردن فرامين و اجراي دستورات دلخواه خواهد بود.

در مورد نمايش تمامي عناوين يك موضوع از متد GET استفاده كنيد و با اشاره به id موضوع ، تمامي موضوعات رو نمايش بدين ، چيزي شبيه به [ جهت مشاهده لينك عضو شويد ! ] .

اين يك روش پيش پا افتاده و ساده ي پياده سازي اين طرح بود ، سعي كنيد پايه ي برنامه رو به صورت كلاس اجرا كنيد و روي فرامين mysql و توابع كار با بانك اطلاعاتي php تسلط بيشتري پيدا كنيد.

صفحات: 1 2
مرجع آدرس ها