PDA

View Full Version : مشکل در تکرار اطلاعات در خواندن دیتابیس



hamidhassas
یک شنبه 20 فروردین 1391, 18:26 عصر
من میخوام اطلاعات رو از دو جدول مختلف در دیتابیس بخونم
تا اینجا مشکلی وجود نداره
اما هنگام تکرار شدن اطلاعات فقط 2 رکورد نمایش داده میشه


مشکل کد پایین چیه:




<html>
<head>
<title>سرزمین دانستنی ها</title>
<?php
include '../../Administrator/config.php';
connect($username,$password,$Mydb);
mysql_query('SET NAMES \'utf8\'');
$read_sql= mysql_query("select * from news ORDER BY id DESC LIMIT 0,30");
$row=mysql_fetch_array($read_sql);
$group=mysql_query("select * from news_group ORDER BY id DESC LIMIT 0,30");
$row2=mysql_fetch_array($group);
?>
<body>
<table align="center" border="0" width="100%">
<tr>
<td width="94%">
<table border="0" align="center" width="100%">
<tr>
<td colspan="4"><?php print $row[2]; ?></td>
</tr>
<tr>
<td colspan="4">زیرگروه
<?PHP print $row2[1]; ?></td>
</tr>
<?php
while ($row=mysql_fetch_array($read_sql, MYSQL_BOTH))
{
while ($row2=mysql_fetch_array($group))
{
?>
<tr>
<td width="10%"></td>
<td colspan="3"><?php print $row[2]; ?></td>
</tr>
<tr>
<td colspan="4">زیرگروه <?PHP print $row2[1]; ?></td>
</tr>
</tr>
<?php } }?>
</table></td>
</tr>
</table>
</body>
</html>


مشکل دوم:
با توجه به کد بالا

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

این اتفاق بیوفته که



<?php if($row['Gorup']=='$row2[0]') echo "$row2[1]"; ?>



یعنی در فیلد Gorup که در جدول news است مقدار های عددی وجود دارد که برای هر رکورد یک عدد متفاوت است و میخوام هر عددی که در داخل آن بود بیاد آن عدد را با شماره id موجود در جدول news_group متابقت بده و هر توضیحی ( نام فیلد subject است ) که مربوط به آن ID نوشته شده رو نمایش بده

MMSHFE
یک شنبه 20 فروردین 1391, 22:14 عصر
این ساختار طراحی صحیح نیست. لطفاً ساختار جداولتون (اسامی فیلدها همراه با توضیح هرکدوم) و نیازی که از سکریپت دارین رو بفرمایید تا یک نمونه کد براتون بگذارم.

hamidhassas
یک شنبه 20 فروردین 1391, 22:42 عصر
من دو تا جدول دارم یکی news و یکی news_group هر کدام دارای فیلد های id , subject هستند. با این تفاوت که جدول news دارای یک فیلد اضافه با نام group است که یک سری عدد در آن زخیره میشود که از عدد 1 تا حداکثر 50 است.

در داخل جدول news_group موضوع هر خبر زخیره شده که هر کدام دارای یک عدد است که توسط id تعیین شده که شماره رکورد است.
در داخل جدول news یک خبر زخیره میشه و در فیلد group یک عدد که بیان گر موضوع خبر است که همین عدد برابر idدر جدول news_group است

یعنی اگر عدد id در جدول news_group برابر 26 باشد همین عدد در جدول news در فیلد group در هم 26 است که بیانگر موضوع آن خبر است

حالا میخوام کاری کنم که وقتی کاربر دارد یک خبر را میخواند در گوشه ای موضوع خبر نمایش داده شود. که این موضوع خبر یک متن است مثلا ( فن آوری ها ) که کد آن مثلا 26 است

توجه به این نکته که من در داخل جدول news_group موضوع های مختلفی دارم که هر کدام دارای یک id مشخص هستند و میخوام هر خبری که دارای یکی از این موضوع ها ( بر اساس شماره id ) بود به موضوع اون خبر نوشته بشه

hamidhassas
چهارشنبه 23 فروردین 1391, 18:09 عصر
چی شد؟

هنوز چشم انتظارم

MMSHFE
چهارشنبه 23 فروردین 1391, 23:01 عصر
SELECT `news`.`id` AS `id`, `news`.`subject` AS `subject`, `news_group`.`subject` AS `group`
FROM `news`, `news_group`
WHERE (`news`.`group` = `news_group`.`id`)
LIMIT 30

hamidhassas
پنج شنبه 24 فروردین 1391, 15:14 عصر
ببخشید فکر کنم درست منظورم را متوجه نشدید

من دو تا جدول دارم
news = در اون یک خبر ارسال می کنم که دارای موضوع و متن خبر و یک قسمتی است که نوع خبر را دسته بندی می کنه
موقع ثبت خبر به جای اینکه نوع خبر یک نوشته باشه یک عدد است که این عدد برابر با یک متن است که در جدول news_group قرار دارد این عدد همان شماره id در جدول news_group است که هر شماره id در این جدول دارای یک متن است مثلا

اعداد زیر برابر با :
1=پزشکی
2=اقتصادی
3=ادبی

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

موضوع خبر: انجمن های برنامه نویس
متن خبر: رسیدگی و پاسخ به مشکلات شما...
زیر گروه: 2

خوب حالا میخوام کاری کنم که به جای اینکه جلو زیر گروه عدد را بگزاره بجاش بر توی جدول news_group هر id که عدد مثلا 2 را داشت نوشته جلو همون عدد (id) رو نشون بده

مثلا این جوری
زیر گروه : 2 بشه زیرگروه : اقتصادی

MMSHFE
پنج شنبه 24 فروردین 1391, 16:29 عصر
خوب برادر من، عزیز دلم، من هم که همین کارو کردم. شما خروجی اون کد رو ببینید، اگه چیزی که میخواستین نبود بفرمایید. کافیه به قسمت WHERE شرط خودتون رو با AND اضافه کنید. مثلاً اگه مطلب شماره 5 رو میخواین نشون بدین، بنویسید:

SELECT `news`.`id` AS `id`, `news`.`subject` AS `subject`, `news_group`.`subject` AS `group`
FROM `news`, `news_group`
WHERE (`news`.`group` = `news_group`.`id` AND `news`.`id` = '5')

اگر هم همه مطالب رو میخواین، همونطوری که گذاشتم بنویسید. توی خروجی کوئری مذکور، فیلدهای id و subject و group رو دارین ولی بجای اینکه توی فیلد group عدد گروه باشه، اسم گروه هست. موفق باشید.

hamidhassas
پنج شنبه 24 فروردین 1391, 16:40 عصر
ممنون از کمکتون اما من حسابی گیج شدم آخه کد شما چطوری باپروژه من کار میکنه نفهمیدم.
اگه امکان داره میشه کد خودتون رو در کد زیر قرار بدین ببینم چی طوری میگویید؟

این هم اصل فایل ها همراه با دیتابیس اگه میشه دانلود کنید و مشاهده کنید .

http://hassas-computer.com/123/news.zip

hamidhassas
جمعه 25 فروردین 1391, 11:45 صبح
میشه بگید مشکل کد زیر چیه که جواب نمیده.


<html>
<?php
include 'config.php';
connect($username,$password,$Mydb);
mysql_query('SET NAMES \'utf8\'');
$news= mysql_query("select * from news ORDER BY id DESC LIMIT 0,6");
$group= mysql_query("select * from news_group ORDER BY id DESC LIMIT 0,6");
$row=mysql_fetch_array($news);
$row2=mysql_fetch_array($group);
mysql_close ($con);
?>
<body bgcolor="#E6E6E6" width="959" height="673">
<table border="2" align="center" width="100%">
<tr>
<td>
<?php if($row['Gorup']=='$row2[0]') echo "$row2[1]"; ?>
</td>
</tr>
<?php while ($row=mysql_fetch_array($news, MYSQL_BOTH) and $row2=mysql_fetch_array($group, MYSQL_BOTH)) { ?>
<tr>
<td>
<?php if($row['Group']=='$row2[0]') echo "$row2[1]"; ?>
</td>
</tr>
<?php } ?>
</table>
</body>
</html>



دقیقا این خط جواب نمیده:


<?php if($row['Group']=='$row2[0]') echo "$row2[1]"; ?>

MMSHFE
جمعه 25 فروردین 1391, 12:24 عصر
<?php if($row['Group'] == $row2[0]) echo $row2[1]; ?>
رشته های توی گیومه تک پردازش نمیشن. درنتیجه بجای اسم متغیر داخلشون، مقدارش قرار نمیگیره. موفق باشید.

hamidhassas
جمعه 25 فروردین 1391, 15:51 عصر
بازم جواب نمیده

این هم اصل فایل ها همراه با دیتابیس اگه میشه دانلود کنید و مشاهده کنید .

http://hassas-computer.com/123/news.zip

MMSHFE
جمعه 25 فروردین 1391, 16:22 عصر
<!doctype html>
<html>
<head>
<title>News</title>
</head>
<body bgcolor="#E6E6E6" width="959" height="673">
<?php
require_once 'config.php';
connect($username, $password, $Mydb);
mysql_query('SET NAMES \'utf8\'');
$read_sql = "SELECT `news`.*,`news_group`.`group`
FROM `news`,`news_group`
WHERE (`news`.`gorup`=`news_group`.`id`)
ORDER BY `news`.`id` DESC LIMIT 6";
$tab = mysql_query($read_sql);
if($tab && mysql_num_rows($tab) > 0) {
while($row = mysql_fetch_assoc($tab)) {
?>
<table border="0" align="center" width="100%">
<tr>
<td width="9%" class="TD_Right"><p class="Taxt">[<?php echo $row['Show']; ?>]تعداد بازدید</p></td>
<td colspan="3" class="TD_Right"><p class="Taxt" dir="rtl" style="font-weight:bold; color:#000">۩{<a href="News_Full_Preview_Link.php?h=<?php echo $row['id']; ?>" style="text-decoration:none;" class="No_UnderLine_Link"><?php echo $row['Subject']; ?></a>}</p></td>
</tr>
<tr>
<td class="TD_Center"><font size="2"><img src="<?php echo $row['Image']; ?>" width="100" height="100" align="right"></font></td>
<td colspan="3" class="TD_Right"><p class="Taxt" dir="rtl"><font face="Tahoma, Geneva, sans-serif" dir="rtl"><?php echo $row['Text']; ?></font></p></td>
</tr>
<tr>
<td class="TD_Right"><p class="Taxt"><?php if($row['Edame_matlab'] == 1) { echo "<a class=\"No_UnderLine_Link\" href=\"News_Full_Preview_Link.php?h={$row['id']}\">ادامه مطلب</a>"; } ?></p></td>
<td width="35%" class="TD_Right"><p class="Taxt">ارسال نظر</p></td>
<td width="37%" class="TD_Right"><p class="Taxt" dir="rtl">{زیرگروه <?php echo $row['group']; ?>}</p></td>
<td width="19%" class="TD_Right"><p class="Taxt">{<?php echo $row['Date']; ?>}تاریخ ارسال</p></td>
</tr>
<tr>
<td class="TD_Center" colspan="4">.................................................. .................................................. ....................................</td>
</tr>
<?php
}
}
mysql_close();
?>
</table>
</body>
</html>

به تغییرات کد دقت کنید.
موفق باشید.