ارسال نظر

jalaladdin

Active Member
تابعی که اشاره کردید اضافه کردم
بعد در جلوی نظرات این خروجی را نوشتم اما چیزی را نشان نمیدهد
PHP:
                echo '<a href="'.$filename.'?id='.$news_i['id'].'" class="bg-green03">نظرات</A><BR/>'."\n";
                echo $num_rows;
برای نشان دادن تعداد نظرات باید این مقدار در پایگاه داده ذخیره شود؟
سپاس
 

jalaladdin

Active Member
PHP:
$sql="SELECT * FROM idea where cid=$id and checked=1  ORDER BY id ASC";
$result = mysql_query($sql);
$num_rows = mysql_num_rows($result);  
echo"$num_rows";
کد را بدین صورت اضافه کردم تعداد نظرات در ادامه مطلب در بالای نظرات نشان داده میشود چگونه میتوانم این تعداد نظرات در صفحه اصلی جلوی لینک نظرات نشان بدهم
 

Domanjiri

Well-Known Member
دوست من، شما می خواین که در صفحه ای که مطالب هستند( و نظرات نیستند) تعداد نظرات رو زیر هر مطلب نشون بدین؟ مثل وبلاگ ها؟

برای اینکار باید اینکار رو انجام بدین:

یه جای این کوئری:
PHP:
SELECT * FROM `message` ORDER BY `id` DESC
اینو بزارید:
PHP:
SELECT a. * , count( b.id ) AS comment_num
FROM message AS a
LEFT JOIN idea AS b ON a.id = b.cid
GROUP BY a.id
ORDER BY a.id DESC

حالا
PHP:
$news_i['comment_num']
تعداد کامنت های مربوط به هر مطلب هست.

مهم: لطفن برای موارد کاملن جدا و نامرتبط با هم، تاپیک ها مجزا ایجاد کنید، مثلن شما می تونستید برای این سوال یه تاپیک با عنوان "چطور در صفحه اصلی، تعداد کامنت های هر مطلب رو زیرش نشون بدیم؟" ایجاد کنید.

موفق باشین.
 
آخرین ویرایش:

jalaladdin

Active Member
درود بر شما

به فرم "ارسال نظر" باید یه فیلد مخفی با مقدار" آیدی مطلبی که براش کامنت ارسال میشه"، اضافه کنید:
PHP:
echo "<input type='hidden' name='message_id' value=\"$id\">";
و بعد در فایل idea.php اون آیدی ارسالی رو به عنوان cid دریافت کنید:
PHP:
$cid = $_POST['message_id'];
حالا هنگام ذخیره کامنت در دیتابیس، مقدار فیلد cid رو همین مقداری که بدست اومده قرار بدین:
PHP:
$cid = $_POST['message_id'];
.....
.....
$sql = "INSERT INTO idea (id ,name ,email ,message ,cid ,checked)
VALUES (NULL , $n, $e, $me, $cid, '0')";
mysql_query($sql);
.....
..
موفق باشین

برای بعضی از نظرات مقدار cid=0درج میشود در پایگاه داده به نظر شما مشکل از کجاست؟
 

Domanjiri

Well-Known Member
درود بر شما

شما باید قبل از insert کردن هر کامنت در جدول، از طبیعی بودن مقدار cid اطمینان حاصل کنید:

PHP:
if(is_int($cid)){
....
inserting
.....
} else {
...
show error
....
}

موفق باشین
 
آخرین ویرایش:

jalaladdin

Active Member
دوست من، شما می خواین که در صفحه ای که مطالب هستند( و نظرات نیستند) تعداد نظرات رو زیر هر مطلب نشون بدین؟ مثل وبلاگ ها؟

برای اینکار باید اینکار رو انجام بدین:

یه جای این کوئری:
PHP:
select * from `message` order by `id` desc
اینو بزارید:
PHP:
select a. * , count( b.id ) as comment_num
from message as a
left join idea as b on a.id = b.cid
group by a.id
order by a.id desc
حالا
PHP:
$news_i['comment_num']
تعداد کامنت های مربوط به هر مطلب هست.

مهم: لطفن برای موارد کاملن جدا و نامرتبط با هم، تاپیک ها مجزا ایجاد کنید، مثلن شما می تونستید برای این سوال یه تاپیک با عنوان "چطور در صفحه اصلی، تعداد کامنت های هر مطلب رو زیرش نشون بدیم؟" ایجاد کنید.



موفق باشین.
میخواهم برای نظراتی که برای هرمطلب توسط مدیر تائید شده تعداد آنها در قسمت نظرات نشان داده شود امابرای نظراتی که که توسط مدیر تائید نشده است در صفحه اصلی وب سایت تعداد کل نظرات برای هر مطلب نشان میدهد
 
آخرین ویرایش:

Domanjiri

Well-Known Member
درود بر شما

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

در صفحه نظرات به انتهای کوئری این رو اضافه کنید:
PHP:
...WHERE checked=1
و این تابع تعداد نظرات رو برمی گردونه:
PHP:
mysql_num_rows($result)

در صفحه اصلی هم (طبق کوئری بالا) دستور زیر رو به انتهای کوئری اضافه کنید:

بعد از ویرایش:
همون کوئری که قبلن گفتم ،تعداد کل نظرات رو بر می گردونه و نیازی نیست چیزی بهش اضافه کنید> یعنی این کوئری:
کد:
select a. * , count( b.id ) as comment_num
from message as a
left join idea as b on a.id = b.cid
group by a.id
order by a.id desc

موفق باشین
 
آخرین ویرایش:

jalaladdin

Active Member
به جای این کوئری
PHP:
mysql_query('SELECT * FROM `message` ORDER BY `id` DESC');
این کوئری را جایگزین کردم
PHP:
mysql_query('SELECT a. * , count( b.id ) AS comment_num FROM message AS a LEFT JOIN idea   AS b  ON a.id = b.cid 
                                                                            GROUP BY a.id
                                                           
                   ORDER BY a.id DESC  ');
این کوئری تعداد کل نظرات را برمیگردونه من میخواهم آن تعداد نظراتی که توسط مدیر تائید شد در صفحه اصلی سایت در جلوی نظرات نشان دهد
مثلا برای مطلب اول ،چهار نظر در پایگاه داده درج شده است اما مدیر دو نظر تائید کرده وزیر مطلب اول نشان داده میشود امادر صفحه اصلی سایت جلوی نظرات 4 نشان داده میشود چه تغییراتی بدهم تا جلوی نظرات عدد 2 نشان دهد

در صفحه نظرات به انتهای کوئری این رو اضافه کردم
PHP:
WHERE checked=1
و در زیر همین کوئری این تابع اضافه کردم
PHP:
mysql_num_rows($result)
 

jalaladdin

Active Member
آن کاری که شما گفتید انجام دادم در تعداد نظرات تغیری صورت نگرفت کل نظرات نشان داده میشود!!!
 

Domanjiri

Well-Known Member
خب شاید کل نظرات توسط مدیر تایید شده و مقدار checked ِشون 1 هست!

الان فکر تِم کار دست ِتون اومده (عبارت WHERE checked=x تعیین کننده هست)، فقط باید کمی حوصله به خرج بدین و با کدتون سرو کله بزنید، همین!

موفق باشین
 

jalaladdin

Active Member
درود بر شما

شما باید قبل از insert کردن هر کامنت در جدول، از طبیعی بودن مقدار cid اطمینان حاصل کنید:

PHP:
if(is_int($cid)){
....
inserting
.....
} else {
...
show error
....
}
موفق باشین

دستور شرطی بدین صورت نوشتم
PHP:
if(is_int($id)){
$idea=mysql_query("INSERT INTO idea (name,email,comment,cid,checked) VALUES('$n','$e','$me','$id','0') ");
  mysql_set_charset("utf8",$con);

    printf('<div class="  bg-blue "><script language="javascript" type="text/javascript">
alert("نظر شما پس از بررسی توسط مدیر سایت، به نمایش خواهد آمد.");
</script></div>');}

else{
    echo"error";
    }
در صفحه نظر error نشان میدهد
 

Domanjiri

Well-Known Member
سلام

خب این یعنی اینکه id$ یک integer نیست دیگه (.... ،0،1،2،3،4، 132-) ، اگه برای چک کردن id$ از کد زیر استفاده کنید، بهتره:
PHP:
$id = (int) $_POST['id'];

if ($id > 0 ){
.....
} else {
...
}

الان سوال ِتون چیه دقیقن؟

موفق باشین
 

jalaladdin

Active Member
گاهی اوقات برای بعضی از نظرات مقدار cid=0درج میشود در پایگاه داده
 
آخرین ویرایش:

Domanjiri

Well-Known Member
مقدار cid از یک فیلد مخفی توی فرم ارسال نظر دریافت میشه، قاعدتن این مقدار به هیچ وجه نباید صفر باشه. چون که مطلبی با آیدی صفر نداریم که بخواد توی فرم ارسال نظرش، فیلد مخفی با مقدار صفر داشته باشیم.

شما پروسه ی:

1- نمایش فرم ارسال نظر و به تبع اون ساخت فیلد مخفی با مقدار: "آیدی مطلبی که قراره براش کامنت فرستاده بشه"

2- دریافت این مقدار با استفاده از متد podt

رو کاملن بررسی کنید، مثلن کد html فرم ارسال نظر رو نگاه کنید و ببینید که مقدار اون فیلد مخفی درست هست یا نه..

پ.ن : نیاین بگین "فیلد مخفی کدومه؟":)-?).. اگه پیاده سازیش نکردین، برگردین و مطالب چند صفحه قبل رو بخونید.

موفق باشین
 

jalaladdin

Active Member
برای مطالب وب سایتم فرم ارسال نظر گذاشتم برای مطالبی که امروز قرار میدم نظر ارسال میگردد اما
برای مطالبی که چند روز پیش در وب سایت قرار دادم نظر ارسال نمیگردد به نظر شما مشکل از کجاست؟
این کد ارسال نظر
PHP:
if(!empty($_POST['name'] )&&!empty($_POST['email']) && !empty($_POST['comment'])&& !empty($_POST['user_code']) ){
    
    
           
$n = $_POST['name'];
$e=$_POST['email'];
$me=$_POST['comment'];
$id =intval( $_POST['message_id']);
if($id>0){
if( mysql_num_rows( mysql_query( "SELECT `cid` FROM `idea`
WHERE `comment` = '" . $_POST['comment'] . "' and `email` = '" . $_POST['email'] . "'  LIMIT 1" ) )< 1 ) {
//vojood nadare pas felan kar kon
 
$idea=mysql_query("INSERT INTO idea (name,email,comment,cid,checked) VALUES('$n','$e','$me','$id','0') ");
  mysql_set_charset("utf8",$con);

    printf('<div class="  bg-blue "><script language="javascript" type="text/javascript">
alert("نظر شما پس از بررسی توسط مدیر سایت، به نمایش خواهد آمد.");
</script></div>');
}
else{
    //else shart aval
    //echo"error";
    }



}
else {
//echo'<div class=" send"><center>نظر ارسال شده است</center></div>';
} 
    }
 

جدیدترین ارسال ها

بالا