PDA

View Full Version : دسته بندی موضوعات مختلف در یک سایت و نمایش بر اساس هر موضوع خاص



hamidhassas
شنبه 20 اسفند 1390, 09:25 صبح
من میخوام یک قسمت در برنامه خودم ایجاد کنم به این صورت که وقتی کاربر یک مطلب جدید رو نوشت قبل از ارسال گروه مربوط به مطلب رو تعیین کنه مثلا اگر یک خبر جدید را ارسال می کنه قبل از ارسال یک لیست رو باز کنه و از داخل اون یک موضوع را انتخاب کنه و بعد مطلب رو ارسال کنه ، که به ازای هر یک از موضوع های تعیین شده یک مقدار عددی وارد دیتا بیس بشه مثلا برای موضوع خبر مقدار 3 و برای موضوع دانلود مقدار 8.

تا اینجا رو انجام دادم و درست کار میکنه

اما میخوام زمان نمایش وقتی که یک کاربر یک موضوع رو انتخاب میکنه تمامی موضوعاتی که با همان مقدار تعیین شده از قبل زخیره شده نمایش داده بشه

یعنی اگر کسی روی موضوع خبر که مقدار 3 داره کلیک کنه تمام مطالبی که دارای مقدار 3 است به نمایش در بیاد و اگر روی موضوع دانلود کلیک کنه که دارای مقدار 8 است تمامی مطالب با موضوع دانلود نمایش داده بشه.



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

alishmas
شنبه 20 اسفند 1390, 10:32 صبح
فرض کنیم کدی که شما فرمودید با نام category_id در دیتابیس ذخیره شده باشه کافیه وقتی کاربر مثلا روی اخبار ورزشی کلیک کرد که شماره موضوع آن 20 است
یه دستور select اجرا بشه هر چی رکورد با category_id بیست تو جدول است fetch کنه.


$sql="select * from news where category_id=\"$_GET[category_id]\" ";
mysql_query($sql);

با آرزوی موفقیت.:لبخندساده:

hamidhassas
یک شنبه 21 اسفند 1390, 00:15 صبح
ممنون فقط چند سوال
1- پس category_id نام فیلد دیتابس اسک که در آن مقدار مورد نطر برای هر موضوع ریخنه میشه
2- تو این کد من چطوری تعیین کتم که لینکی که اسم اون ورزشه و مقدار 20 مربوط به آن است توسط کد بالا اجرا بشه
3-آیا باید برای هر لینکی که به یک اسم خواص است کد بالای شما نوشته بشه
4-آیا ممکنه یک نمونه کوچک بنویسید و برای دانلود قرار بدهید تا دقیقا بفهمم چه شده و چطور باید استفاده کرد

alishmas
یک شنبه 21 اسفند 1390, 09:37 صبح
بله فرض کنید ما دو جدول داریم یکی news و یک category حالا می خواهیم موضوعات را لیست کنیم تا با کلیک بر روی هر موضوع اخبار مربوط به اون موضوع نمایش داده بشه:


mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("select * category");

while ($row = mysql_fetch_assoc($result)) {
echo('<a href="news.php?category_id='.$row["category_id"].'>'.$row["category_name"].'</a>');
}


و در فایل news.php همانطور که در پست قبلی نوشتم category_id را کهGETـ$ ارسال شده دریافت و تمام اخباری را که category_id آنها با category_id ارسال شده برابر بود از جدول اخبار fetch کرده و نمایش می دهیم.


$result = mysql_query("select * from news where category_id=\"$_GET[category_id]\"");

while ($row = mysql_fetch_assoc($result)) {
echo $row["news_title"]
}

hamidhassas
یک شنبه 21 اسفند 1390, 14:02 عصر
یک سوال دیگه:
1-من چطوری میتونم یک فیلد درست کنم کاربر خودش هم بتونه قسمت های مختلفی را به سلیقه خودش به اون موضوع هایی که من به صورت دستی تعریف کردم اضافه کنه یعنی اینکه وقتی اون یک موضوع رو ارسال میکنه به صورت پیش فرض برای هر موضوع یک کد جدید و غیر تکراری به اون موضوع تعلق بگیری

2-بعد چه طوری به صورت اتوماتیک این موضوع با کد جدیدش برای هر قسمت قرار بگیره تا وقتی روی اون موضوع جدید کلیک شد مطالب مربوط به اون موضوع فقط به نمایش در بیاد

hamidhassas
چهارشنبه 24 اسفند 1390, 12:05 عصر
خواهش میکنم اگه راه حلی دارید یا کدی می نویسید به صورت جزء به جزء توضیح بدید
ممنون

mahan19
چهارشنبه 24 اسفند 1390, 16:41 عصر
دستابیس : شما به یک جدول که اخبار و یک جدول که بخش ها رو ذخیره کنه نیاز داری
در موقع ثبت خبر باید آی دی بخش مورد نظر رو هم ذخیره کنید ،پس یک فیلد بخش هم باید برای جدول اخبار بذاری
در موقع خوندن خبر خب نشون میدی که این خبر مطعلق به فلان بخش هست
ولی برای خوندن تمام خبر هایی که مطعلق به این بخش هستند، باید دستور مای اسکیوال زبر رو اجرا کنی :
انتخاب کن از جدول اخبار ، جاهایی که فیلد بخش برابر با مثلا 5(بخش مورد نظر) میباشد،
بعد اخبار رو لیست میکنی

این الگوریتمش بود ، اگه مشکلی هست بگو کد بنویسم

lady64
چهارشنبه 24 اسفند 1390, 18:51 عصر
آقای حمید به این صورت میخوان که وقتی از لیست باکس مثلا دانلود کلیک شد همون موقع تمام خبرهای مربوط به اون بیاد.این درست که باید یک selesct انجام بشه.اما آیا نباید برای بهتر جلوه دادن و رفرش نشدن با ajax این کار رو انجام داد ؟
اگر کسی اینو میدونه ممنون میشم راهنمایی کنه

hamidhassas
چهارشنبه 02 فروردین 1391, 23:16 عصر
دستابیس : شما به یک جدول که اخبار و یک جدول که بخش ها رو ذخیره کنه نیاز داری
در موقع ثبت خبر باید آی دی بخش مورد نظر رو هم ذخیره کنید ،پس یک فیلد بخش هم باید برای جدول اخبار بذاری
در موقع خوندن خبر خب نشون میدی که این خبر مطعلق به فلان بخش هست
ولی برای خوندن تمام خبر هایی که مطعلق به این بخش هستند، باید دستور مای اسکیوال زبر رو اجرا کنی :
انتخاب کن از جدول اخبار ، جاهایی که فیلد بخش برابر با مثلا 5(بخش مورد نظر) میباشد،
بعد اخبار رو لیست میکنی

این الگوریتمش بود ، اگه مشکلی هست بگو کد بنویسم

ممنون از راهنمایتون
اگه امکان داره کد را هم برای دانلود همراه با فایل دیتابیس به صورت فایل zip قرار بدین اگه امکان داره قسمت به قسمت هر مرحله از کد را توضیح بدین تا کاملا متوجه بشم

hamidhassas
دوشنبه 07 فروردین 1391, 18:26 عصر
بله فرض کنید ما دو جدول داریم یکی news و یک category حالا می خواهیم موضوعات را لیست کنیم تا با کلیک بر روی هر موضوع اخبار مربوط به اون موضوع نمایش داده بشه:


mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("select * category");

while ($row = mysql_fetch_assoc($result)) {
echo('<a href="news.php?category_id='.$row["category_id"].'>'.$row["category_name"].'</a>');
}


و در فایل news.php همانطور که در پست قبلی نوشتم category_id را کهGETـ$ ارسال شده دریافت و تمام اخباری را که category_id آنها با category_id ارسال شده برابر بود از جدول اخبار fetch کرده و نمایش می دهیم.


$result = mysql_query("select * from news where category_id=\"$_GET[category_id]\"");

while ($row = mysql_fetch_assoc($result)) {
echo $row["news_title"]
}



من هیچی نفهمیدم
من در داخل دیتابیس یک جدول دارم به نام News و در داخل اون سه تا فیلد دارم به نام های ID , Subject , Gorup در داخل Gorup کد میخوره مثلا 12 و 14 و یا هر عدد دیگه ای میخوام هر رکوردی که در داخل فیلد Gorup عدد 12 داره نمایش داده بشه چکار باید بکنم

خواهشا اسم ها رو عوض نکنید که من گیج میشم نمی فهمم چه اتفاقی می افته

من آخر نفهمیدم که category_id چیه و از کجا می فهمه که تمامی رکورد هایی که عدد مثلا 12 را داره نشون بده

hamidhassas
سه شنبه 08 فروردین 1391, 18:36 عصر
بابا کسی نیست کمک کنه

Reza1607
سه شنبه 08 فروردین 1391, 19:37 عصر
من در داخل دیتابیس یک جدول دارم به نام News و در داخل اون سه تا فیلد دارم به نام های ID , Subject , Gorup در داخل Gorup کد میخوره مثلا 12 و 14 و یا هر عدد دیگه ای میخوام هر رکوردی که در داخل فیلد Gorup عدد 12 داره نمایش داده بشه چکار باید بکنم


براي اين قسمت از اين كوئري استفاده كنيد


SELECT * FROM `news` WHERE `Group`=12

شما سوال هاتون رو يكي يكي بپرسيد تا دوستان بتونند راهنماييتون بكنن

mohsen6500
سه شنبه 08 فروردین 1391, 21:53 عصر
سلام
خیلی کار پیچیده ایی نیست
ابتدا شما باید یک جدول داشته باشید که اسمش رو news در نظر گرفتید ( یا هر اسم دیگه ای) که از چهار فیلد ID و Subject News و Group تشکیل شده است.
فیلد اول مربوط به آی دی خبرهست و باید از نوع INT و بعنوان کلید اصلی و همچنین به صورت شمارش خودکار باشه.
فیلد دوم مربوط به عنوان خبر هست که باید از نوع VARCHAR تعیین بشه.
فیلد سوم مربوط به متن خبر هست که باید از نوع TEXT تعیین بشه.
فیلد چهارم هم مربوط به موضوع اون هست که از نوع INT باشه خوبه.
خوب پس کدمربوط به MYSQL اون این جوری میشه :


CREATE TABLE `news` (
`ID` INT( 50 ) NOT NULL AUTO_INCREMENT ,
`Subject` TEXT NOT NULL ,
`News` TEXT NOT NULL ,
`Group` INT( 150 ) NOT NULL ,
PRIMARY KEY ( `ID` )
)

حالا باید یک جدول هم باید داشته باشید برای موضوعات (مثلا catagory) که این جدول catagory باید به این صورت باشه:


CREATE TABLE ` catagory` (
`catagory_id` INT( 250 ) NOT NULL AUTO_INCREMENT ,
`catagory_name` VARCHAR( 250 ) NOT NULL ,
PRIMARY KEY ( `catagory_id` )
(


همانطور که مشخص میشه دو تا فیلد رو ساختم یکی برای آی دی موضوع ودیگری برای نام موضوع
که آی دی به صورت کلید تعریفش کردم و هم به صورت شمارش اتوماتیک
یعنی اینکه خودش به صورت اتوماتیک با اضافه شدن یک نام جدید ، یک آی دی به نام موضوع اضافه میکنه و شما کافیه که فقط نام موضوع جدیدتون رو وارد کنید
خوب این هم از این حالا یک فرم درست میکنیم برای ارسال خبر و اون رو توی صفحه اصلی جای میدیم و بانام دلخواه مثلا index.php ذخیره می کنیم:


<!-- ___/\/\/\___ Begin Add New News ____/\/\/\/\___ -->
<table width="500" border="1" bordercolor="#000066" align="center" cellpadding="1" cellspacing="1">
<tr>
<td align="center" valign="top" bgcolor="#FF99FF"><strong>ارسال مطلب جدید</strong></td>
</tr>
<tr>
<td bgcolor="#FF66FF"><form method="post" action="save.php" name="SendNews" id="SendNews">
<table width="460" border="0" align="center" cellpadding="1">
<tr>
<td width="287" align="right" valign="top"><input name="Subject" type="text" id="Subject" size="45" maxlength="250" dir="rtl" /></td>
<td width="163" align="left" valign="top">: موضوع خبر</td>
</tr>
<tr>
<td align="right" valign="top"><textarea name="text" id="text" cols="45" rows="5" dir="rtl"></textarea></td>
<td align="left" valign="middle">: متن خبر</td>
</tr>
<tr>
<td align="right" valign="top">
<select name="Group" size="1" id="Group" style="font-family:Tahoma; font-size:10px; color:#030;" dir="rtl">
<option value="0" selected="selected">--------</option>
<?php
include 'connect.php';
mysql_query("SET NAMES 'utf8'");
$Q = mysql_query("select * from catagory order by catagory_id desc");//اتصال به جدول موضوعات به ترتیب آی دی از آخر به اول
while($R = mysql_fetch_assoc($Q) )
echo'<option value="'.$R['catagory_id'].'">'.$R['catagory_name'].'</option>';
?>
</select>
</td>
<td align="left" valign="middle">: موضوع خبر</td>
</tr>
</table>
<p align="center">
<input type="submit" name="Submit" id="button" value="ارسال خبر" />
<input type="reset" name="reset" id="reset" value="مجدد" />
</p>
</form>
</td>
</tr>
</table>
<!-- ___/\/\/\___ End Add New News ____/\/\/\/\___ -->


خوب همانطور که می بینید یک جدول کلی دارم و توی اون یک فرم و توی این فرم یک جدول دیگه رو جای دادم.
در این فرم یک ستون واسه عنوان خبر – یکی واسه متن خبر و آخری برای موضوع که اونو از دیتابیس واز جدول category دریافت می کنم و نمایش میدم.
اطلاعات فرم روبه صفحه save.php ارسال می کنم
در این صفحه با توجه به اینکه اگرتمامی مواردمورد نظر پرشده باشند آنوقت اطلاعات را گرفته و در جدول news ذخیره می کند.
این هم از صفحه save.php

/*\/\____ Begin Add New News ____/\/\/\/\*/
if(isset($_POST['Subject'])&&($_POST['text'])&&($_POST['Group']))//اگر عنوان و متن خبروموضوع آن وارد شده بود
{
include 'connect.php';
$Sub = $_POST['Subject']; //قرار دادن عنوان خبر در متغییر
$Txt = $_POST['text']; //قرار دادن متن خبر در متغییر
$Cat = $_POST['Group']; //قرار دادن موضوع خبر در متغییر
mysql_query("SET NAMES 'utf8'");// برای درج اطلاعات به صورت فارسی
echo $Sub.' -> '.$Txt.' -> '.$Cat;
$Ist = mysql_query("INSERT INTO `news` (`Subject` ,`News` ,`Group`)VALUES ('$Sub','$Txt','$Cat')");
//ریختن اطلاعات در دیتا بیس و در جدول خبرها
if($Ist==true) //اگر اطلاعات ذخیره شد
{
echo'<div align="center">اطلاعات با موفقیت درج شد!<br />';
echo'<a href="index.php">بازگشت</a></div>';
return true;
}
else //اگر اطلاعات درج نشد
{
echo'<div align="center">مشکل در برقراری ارتباط با دیتا بیس<br />';
echo'<a href="index.php">بازگشت</a></div>';
return false;
}
}
/*\/\____ End Add New News ____/\/\/\/\*/

حالا برای وارد کردن موضوع به جدول موضوعات نیاز به یک فرم داریم که به این شکل مینویسیم :

<!-- ___/\/\/\___ End Add New Catagory ____/\/\/\/\___ -->
<table width="500" border="1" bordercolor="#000066" align="center" cellpadding="1" cellspacing="1">
<tr>
<td align="center" valign="top" bgcolor="#99FFFF"><strong>ارسال موضوع جدید</strong></td>
</tr>
<tr>
<td bgcolor="#00FFFF">
<form action="save.php" method="post" name="AddCatagory" id="AddCatagory">
<table width="460" border="0" align="center" cellpadding="1">
<tr>
<td width="287" align="right" valign="top"><input name="Catagory" type="text" id="Catagory" size="45" maxlength="250" dir="rtl" /></td>
<td width="163" align="left" valign="top">: موضوع</td>
</tr>
</table>
<p align="center">
<input type="submit" name="Submit" id="button" value="ارسال موضوع" />
<input type="reset" name="reset" id="reset" value="مجدد" />
</p>
</form>
</td>
</tr>
</table>
<!-- ___/\/\/\___ End Add New Catagory ____/\/\/\/\___ -->


همه چیزمشخصه!
برای دریافت اطلاعات نیز به این شکل عمل میکنیم:

/*\/\____ Begin Add New Catagory ____/\/\/\/\*/
if(isset($_POST['Catagory']))
{
include 'connect.php';
$Cat = $_POST['Catagory'];
mysql_query("SET NAMES 'utf8'");
$Qry = mysql_query("INSERT INTO `catagory` (`catagory_name`)VALUE ('$Cat')");

if($Qry==true) //اگر اطلاعات ذخیره شد
{
echo'<div align="center">اطلاعات با موفقیت درج شد!<br />';
echo'<a href="index.php">بازگشت</a></div>';
return true;
}
else //اگر اطلاعات درج نشد
{
echo'<div align="center">مشکل در برقراری ارتباط با دیتا بیس<br />';
echo'<a href="index.php">بازگشت</a></div>';
return false;
}
}
/*\/\____ End Add New Catagory ____/\/\/\/\*/

در آخر هم این کدهارو توی یه فایل زیپ شده براتون قرار میدم
سوالی بود درخدمتم
امیدوارم توضیحاتم مفید واقع بشه
موفق باشید