شمارش پیغام های جدید و نمایش دادن آن

این تاپیک 2 پاسخ و 2 مشارکت کننده دارد . آخرین آپدیت توسط :  lili ،‏ 2 سال و 4 ماه پیش .

این تاپیک تاکنون 530 بازدید داشته است .

نویسنده پست
جمعه ، 8 آگوست 2014     1:41 ب.ظ #


lili

Subscriber
184 پست38 تاپیک

سلام .

من یه فرم ارتباط با ما دارم که اطلاعات به دیتابیس فرستاده میشه توی جدول دیتابیسم یک فیلد به اسم status گذاشتم و زمانیکه پیغام ارسال میشه خودم دستی این مقدار و 0 قرار دادم  در یه جدول دیگه تعیین کردم که مقدار صفر برای پیغام های خوانده نشده باشه و مقدار 1 برای پیغام هایی که خوانده میشن

توی پنل ادمینم  میخوام نشون بده که مثلا : شما 2 پیغام جدید دارید یعنی در واقع مقادیر صفر و برام بشماره و اگر تبدیل شدن به 1 پیغام بده که : پیغام جدیدی وجود ندارد

با قسمت اول یعنی شمارش مقادیر 0 مشکلی ندارم ولی پیغام و به درستی میده ولی شمارش مقادیر 1 و نمیتونم خوب درست کنم.

2 تا راه و انجام دادم:

اولین راه این کار و کردم که برای هرکدوم یک function درست کردم کدهای زیر و نوشتم:

function unread(){
if(isset($result)){
}

while($row = mysql_fetch_array($result)){
$count = $row['COUNT(status)'];

echo " شما " ."" .$count ."" ." پیغام جدید دارید ";

}}

function read(){
$sql = mysql_query("SELECT COUNT(status) FROM `message` WHERE `status`=1 GROUP BY `status`") or die(mysql_error());
while($row = mysql_fetch_array($sql)){
$count = $row['COUNT(status)'];

$count2 = $row['COUNT(status)'];
echo"پیغام جدیدی ندارید";
}
}

و در جایی که میخواستم این پیغام نمایش داده بشه جفت این دوتا تابع و فراخوانی کردم کار میکنه هردو پیغام و نشون میده ولی یه مشکلی که وجود داره زمانیکه توی دیتابیسم چندتا پیغام داشتم باشم و تعدادی از اونها status 0 داشته باشن و تعدادی 1 هر دو پیغام و هم زمان و کنار هم نشون میده یعنی هم میگه چندتا پیغام جدید هست و هم میگه پیغام نیست!

یه راه دیگه که به کار بردم سعی کردم جفت این توابع و با هم توی یک تابع بذارم و به صورت زیر نوشتم ولی این کدم مشکل داره فقط 0 ها رو میشماره و کدهای مربوط به 1 و اصلا نمیشماره و نشون نمیده
function unread(){
$result = mysql_query("SELECT COUNT(status) FROM `message` WHERE `status`=0 GROUP BY `status`")or die(mysql_error());
$sql = mysql_query("SELECT COUNT(status) FROM `message` WHERE `status`=1 GROUP BY `status`") or die(mysql_error());

if(isset($result)){
while($row = mysql_fetch_array($result)){
$count = $row['COUNT(status)'];

echo " شما " ."" .$count ."" ." پیغام جدید دارید ";
}
}
elseif(isset($sql)){
while($row = mysql_fetch_array($sql)){
$count = $row['COUNT(status)'];

$count2 = $row['COUNT(status)'];
echo"پیغام جدیدی ندارید";
}
}
}

میشه راهنمایی کنید که چطوری میتونم این کار و انجام بدم و مشکل کدم و بهم بگید ممنون میشم

0  تشکر
:: این تاپیک، پاسخ تائیدشده دارد : مشاهده پاسخ تائید شده توسط سوال کننده
جمعه ، 8 آگوست 2014     3:19 ب.ظ # پاسخ تائید شده توسط سوال کننده


کیوان علی محمدی

Authorplus
VIP
1792 پست4 تاپیک

سلام.اینو تست کنید،به جای message_ID فیلد کلید اصلی جدول رو قرار بدین.

<code>
function getMessageCount(){
$query=mysql_query("SELECT COUNT(message_ID) FROM message WHERE status=0");
$count=mysql_result($query,0,0);
if(intval($count)){
return "شما ".$count." پیغام جدید دارید ";
}
return "پیغام جدیدی وجود ندارد";
}
</code>

1  تشکر
جمعه ، 8 آگوست 2014     5:07 ب.ظ #


lili

Subscriber
184 پست38 تاپیک

ممنون درست شد فقط متوجه$count نشدم  میشه یه توضیحی بدید که معنی این خط کد چه کاری انجام میده و پارامترهای 0و0 به چه معنیه و اینکه intval که در if نوشته شده چه کاری انجام میده

0  تشکر
پست 1 تا 3 (از مجموع 3 پست)

این تاپیک پاسخ تائید شده دارد و بسته شده است .