PDA

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



mohammadrasoul
سه شنبه 08 مهر 1393, 00:22 صبح
من جدولی دارم با اسم user_post که در اون کاربران مطالب خودشون رو زخیره کردن تو این جدول فیلدی دارم با نام cline_id که id کاربران زخیره شده ( هر id مختص به کاربری خاص هست ) خوب میخوام کاری کنم که اول تعداد cline_id هایی که به ترتیب بیشترین پست ها رو دارن لیست بشن و در جلوی هر کدوم تعداد پست های که گذاشتن رو چاپ کنه مثل زیر

ahmad 560
mohammad 436
ali 365
moein 221

میشه کدش رو برام بنویسین و خط به خط توضیح بدین آخه تازه دارم php رو یاد میگیرم اگرم به صورت یک فایل برام بزارینش ممنون میشم

hamidhassas
سه شنبه 08 مهر 1393, 00:25 صبح
آقا منم دنبال همین کدم ی ماهه دنبالشم اگه لطف کنید به منم یاد بدین ممنون میشم

bagherok
سه شنبه 08 مهر 1393, 00:52 صبح
SELECT c.name,count(u.clinet_id) count
FROM user_post u
LEFT JOIN clinet c ON u.clinet_id=c.id
GROUP BY c.name
ORDER BY count DESC

mohammadrasoul
سه شنبه 08 مهر 1393, 08:17 صبح
SELECT c.name,count(u.clinet_id) count
FROM user_post u
LEFT JOIN clinet c ON u.clinet_id=c.id
GROUP BY c.name
ORDER BY count DESC

ممنون از راهنمای تون ول الان این چیه چطوری اطلاعات رو لیست کنم چطوری چاپ کنم؟

hamidhassas
سه شنبه 08 مهر 1393, 08:34 صبح
من جند تا سوال دارم

این c.name چیه؟
این u , c در چیه؟

بعد این تابع رو در while قرار بدم با تابع mysql_fetch_array() باید اطلاعات رو چاپ کنم؟؟


من الان با کد زیر اطلاعات 100 تا از بیشترین رکورد ها رو لیست میکنم رو لیست میکنم ولیو در داخل حلقه while با ی کد دیگه تعداد هر کدوم رو جلوش چاپ کنم


$read_sql=mysql_query("SELECT `clinet_id`,count(`clinet_id`) as `count` FROM `user_post` group by `clinet_id` having count(*) >= 1 ORDER BY `count` DESC LIMIT 0 , 100");
while($cline_name=mysql_fetch_array($read_sql))
{
$SQL_number=mysql_query("SELECT COUNT(*) as count FROM `user_post` where `clinet_id`='".$cline_name['clinet_id']."'");
if(mysql_num_rows($SQL_number)!=0) {
$number=mysql_result($SQL_number,0,'count'); } ?>
echo '<pre>'.$cline_name['clinet_id'].' '.$number.'</pre>';
}


حالا تو کد شما نوشتین LEFT JOIN `clinet c` ON u.clinet_id=c.id
یعنی u.clinet_id=c.id باید بگیم از دیتابیس فیلد هایی که clinet_id اونها برابر با id مثلا شماره 3 هست؟

خوب clinet c چیه؟

گیج شدم نمیدونم داره چه اتفاقی می افته میشه یکم توضیح بدین

آخه چطوری بیشترین تکرار ها رو باید توی u.clinet_id=c.id قرار بدیم؟


آقا میشه کامل کدی که نوشتین رو توضیح بدین چی به چیه تا منم یاد بگیرم


SELECT c.name,count(u.clinet_id) countFROM user_post uLEFT JOIN clinet c ON u.clinet_id=c.idGROUP BY c.nameORDER BY count DESC

bagherok
سه شنبه 08 مهر 1393, 10:18 صبح
u اسم مستعار برای user_post
c اسم مستعار برای client

این پایینی بدون اسم مستعار


اینم یه query هست مثل بقیه query ها


SELECT client.name,count(user_post.client_id) FROM user_post LEFT JOIN client ON user_post.client_id=client.id GROUP BY client.name ORDER BY count(user_post.client_id) DESC

سلکت کن name رو از جدول clientو تعداد client_id ها جدول user_post
Join کن با جدول clientجایی که client_id از جدول user_post با id جدول clientبرابر باشه
و بعد همه روبراساس name از جدول clientتویه دسته یا گروه قرار بده

فیلدهای جدول کلایت هم به اینصورت هست
یه id داره و name
که این id برابر با client_id جدول user_post هست



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