PDA

View Full Version : سوال: محبوبترین آیتم ها



M_TAMMAR
چهارشنبه 13 دی 1391, 13:59 عصر
به نام خدا
سلام دوستان
من یک کتابخونه الکترونیکی را به عنوان پروژه دانشگاه طراحی کردم حالا میخوام یه لیست از کتابهایی که محبوبترین هستند یا به نوعی بیشتر امانت داده شده اند را داشته باشم
اطلاعات:
سه تا جدول به نامهای product, users and deposit دارم.
یه سری کد ناقص نوشتم اگه لطف کنید راهنمایی کنید ممنون میشم.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="styles.css" type="text/css" media="screen" />
<title> محبوبترین محصولات</title>
<script>
function printpage()
{
window.print();
}
</script>
</head>
<body class="mbody">
<div class="master" style="width: 1100px">
<section class="titr" style=" color: #101090; background: lightblue">
محصولات محبوب&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php">صفحه اصلی</a>
</section>
<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("library", $con);
mysql_query('SET NAMES utf8');
$result = mysql_query("SELECT * FROM product ORDER BY COUNT(*)");
mysql_query('SET NAMES utf8');
//echo mysql_result($result,0);
echo "<center><table border='1' style='direction: rtl; width: 100%'>
<tr>
<th>ردیف</th>
<th>نوع</th>
<th>نام</th>
<th>شابک</th>
<th>تیتر</th>
<th>نویسنده</th>
<th>مترجم</th>
<th>ناشر</th>
<th>آخرین چاپ</th>
<th>تعداد چاپ</th>
<th>موضوع</th>
<th>کلمات کلیدی</th>
<th>تعداد کلمات</th>
<th>قفسه کتابخانه</th>
<th>تاریخ</th>
</tr>";
mysql_query('SET NAMES utf8');
while($row = mysql_fetch_array($result))
{if ($row['kind'] == 1)
{
$kind = "کتاب";
}
else if ($row['kind'] == 2)
{
$kind = "نرم افزار";
}
else if ($row['kind'] == 3)
{
$kind = "مقاله";
}
else
{
$kind = "نا معلوم";
}
mysql_query('SET NAMES utf8');
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $kind . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['shabek'] . "</td>";
echo "<td>" . $row['title'] . "</td>";
echo "<td>" . $row['writer'] . "</td>";
echo "<td>" . $row['translator'] . "</td>";
echo "<td>" . $row['publisher'] . "</td>";
echo "<td>" . $row['lastpub'] . "</td>";
echo "<td>" . $row['pubnum'] . "</td>";
echo "<td>" . $row['subject'] . "</td>";
echo "<td>" . $row['keyword'] . "</td>";
echo "<td>" . $row['keywordnum'] . "</td>";
echo "<td>" . $row['libspace'] . "</td>";
echo "<td>" . $row['date'] . "</td>";
echo "</tr>";
}
echo "</table>";



mysql_close($con);
?><input type="button" value="Print this page" onclick="printpage()" />
</div>

</div>
</body>
</html>

parsboy
چهارشنبه 13 دی 1391, 14:06 عصر
دوست عزیز الان مشکلت کجاست؟!!!

Tarragon
چهارشنبه 13 دی 1391, 14:34 عصر
آقا شما باید یه قسمت دیگه هم در نظر بگیری که توش تعداد دفعاتی که کتاب گرفته شده رو بنویسی مثلا اسمشو بزاری 'tedad' بعد کد SQL مثل کد زیر می شه:
$result = mysql_query("SELECT * FROM product ORDER BY `tedad`");

M_TAMMAR
چهارشنبه 13 دی 1391, 15:30 عصر
دوست عزیز الان مشکلت کجاست؟!!!

مشکل اینجاست که من چجوری میتونم در یک لیست کتابهایی که بیشتر امانت داه شده اند را به ترتیب نشان بدهم.

M_TAMMAR
چهارشنبه 13 دی 1391, 15:32 عصر
آقا شما باید یه قسمت دیگه هم در نظر بگیری که توش تعداد دفعاتی که کتاب گرفته شده رو بنویسی مثلا اسمشو بزاری 'tedad' بعد کد SQL مثل کد زیر می شه:
$result = mysql_query("SELECT * FROM product ORDER BY `tedad`");

میشه کدی رو که میشه باهاش این کار رو کرد بنویسی؟
واقعا ممنون میشم.

Unique
چهارشنبه 13 دی 1391, 16:49 عصر
نیاز به این کار نیست که بیاین هر بار کتاب امانت میره توی یک فیلد دفعاتش را ذخیره کنین ! از توی همون جدولی که امانت ها را ذخیره مکنید با یک group by ساده میشه بدست آورد

مثلا فکر کن جدول مربوط به امانت ها اینه : amanat (aId,aBook,aStudent,aDate,aReturnDate,....)
جدول مربوط به کتاب ها هم اینه : books (bId,bName,....
حالا برای نمایش 5 تا کتبی که بیشتر تعداد امانت را داشته اند داریم :


select bName,count(*) total from amanat left join books on bId = aBook group by aBook order by total desc limit 5;

Tarragon
چهارشنبه 13 دی 1391, 18:01 عصر
بجز راه حل خوب آقای Unique یه راه دیگه اینه که یه colum دیگه مثل title درست کنید و اسمش رو بزارید tedad بعد از کدی که بالا تر گذاشتم استفاده کنید.
البته اینم بگم هر دفعه که یه کتاب امنت گرفته می شه مقدار tedad رو یکی ببرید بالا.