PDA

View Full Version : سوال: نیازمند یک رتبه دهی ساده برای مطالب



mamali-mohammad
دوشنبه 04 اردیبهشت 1391, 12:53 عصر
سلام
من نیازمند یه رتبه دهی به مطالب هستم
مثل سایت stackoverflow
ممنون

MMSHFE
دوشنبه 04 اردیبهشت 1391, 16:41 عصر
دوست عزیز پیاده سازی چنین قابلیتی که خیلی راحته. کافیه کنار هر مطلب دو دکمه یا عکس برای امتیاز مثبت یا منفی بگذارین و AJAX هرموقع روی اونها کلیک شد، یک اسکریپت سمت سرور رو صدا بزنید که امتیاز اون مطلب رو در دیتابیس کم یا زیاد کنه (برحسب دکمه مربوطه). موفق باشید.

mamali-mohammad
دوشنبه 04 اردیبهشت 1391, 22:17 عصر
ممنون میشم اگه کدش رو بدید

mamali-mohammad
چهارشنبه 06 اردیبهشت 1391, 14:53 عصر
داداش ؟
میشه کمک کنی ؟

MMSHFE
چهارشنبه 06 اردیبهشت 1391, 15:09 عصر
این کدی که قراره امتیاز رو کم یا زیاد کنه (مثلاً به اسم vote.php ذخیرش میکنیم) :


if(isset($_POST['action'], $_POST['id'])) {
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
$action = strtolower($_POST['action'] == 'dec') ? 'dec' : 'inc';
$id = is_numeric($_POST['id']) ? (int) $_POST['id'] : 0;
mysql_query('UPDATE `posts` SET `score`=`score`'.($action == 'inc' ? '+' : '-')."1 WHERE (`id`='{$id}')");
echo mysql_affected_rows() > 0 ? 'Success' : 'Failure';
}
else {
exit('Insufficient Data');
}

حالا توی صفحه نمایش مطالب، دو عکس میگذاریم که یکی علامت + و یکی دیگه علامت منفی داره و برای درج اونها این کد رو میگذاریم:


<img alt="<?php echo $post['id'].'" src="plus.jpg"/>
<img alt="<?php echo $post['id'].'" src="minus.jpg"/>
و این اسکریپت رو هم در قسمت head صفحه قرار میدیم:

<script src="jqmin.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("img[src$='plus.jpg']").click(function() {
var id = $(this).attr("alt");
$.ajax({
type: "post",
url: "vote.php",
data: "action=inc&id="+id,
success: function(data) {
alert(data);
}
});
});
$("img[src$='minus.jpg']").click(function() {
var id = $(this).attr("alt");
$.ajax({
type: "post",
url: "vote.php",
data: "action=dec&id="+id,
success: function(data) {
alert(data);
}
});
});
});
</script>

اینطوری، هرموقع روی هر عکس کلیک بشه، برحسب اینکه + بوده یا - کد AJAX مناسب صدا زده میشه و به امتیاز اون مطلب یک واحد اضافه یا ازش یک واحد کم میشه.
موفق باشید.

soroush.r70
پنج شنبه 07 اردیبهشت 1391, 12:16 عصر
جناب شهرکی با تشکر از شما در کد بالا روی تصاویر باید کلیک بشه تا امتیاز ثبت بشه به چه صورته ممنون می شم یه توضیحی بدین نمی دونم کد بالا مشکل داره....؟

MMSHFE
پنج شنبه 07 اردیبهشت 1391, 12:27 عصر
بله باید روی تصاویر کلیک بشه. البته یک ایراد جزئی داشت (توی سلکتور CSS علامت $ جا مونده بود) که رفعش کردم.
موفق باشید.

mamali-mohammad
جمعه 08 اردیبهشت 1391, 21:53 عصر
ممنون
من میخوام فقط یه جواب داشته باشیم
یعنی حاصل مثبت+منفی رو برگردونه
مثل سایت stackoverflow

MMSHFE
شنبه 09 اردیبهشت 1391, 12:14 عصر
خوب اون echoها یا dieهای اضافه رو حذف کنید و فقط یک echo‌در انتها بگذارین که بگه «امتیاز شما ثبت شد». مثال (فایل vote.php) :


if(isset($_POST['action'], $_POST['id'])) {
mysql_connect('localhost', 'root', '');
mysql_select_db('dbname');
$action = strtolower($_POST['action'] == 'dec') ? 'dec' : 'inc';
$id = is_numeric($_POST['id']) ? (int) $_POST['id'] : 0;
mysql_query('UPDATE `posts` SET `score`=`score`'.($action == 'inc' ? '+' : '-')."1 WHERE (`id`='{$id}')");
}
echo 'Success';

موفق باشید.

soroush.r70
شنبه 09 اردیبهشت 1391, 18:31 عصر
جناب شهرکی وقتی چه روی منفی و روی مثبت زده می شه پیغام Failure می ده و در فیلد خودش که score باشه درج نمی شه دلیلش چی می تونه باشه می تونین به کد های بالا یه نگاه بندازین مشکل از کجاست با تشکر

MMSHFE
شنبه 09 اردیبهشت 1391, 19:24 عصر
نمیدونم والا. با mysql_error خطا رو نمایش بدین ببینیم مشکل از کجاست.

mamali-mohammad
شنبه 09 اردیبهشت 1391, 20:35 عصر
نه منظورم چیز دیگه هست
یه عکس ضمیمه کردم

MMSHFE
یک شنبه 10 اردیبهشت 1391, 00:42 صبح
آهان الآن متوجه شدم. ايشالا تا فردا يك نمونه براتون ميگذارم. موفق باشيد.

mamali-mohammad
دوشنبه 11 اردیبهشت 1391, 11:07 صبح
ممنون داداش
منتظرم

MMSHFE
دوشنبه 11 اردیبهشت 1391, 15:21 عصر
فایل نمونه رو براتون ضمیمه کردم. موفق باشید.

mamali-mohammad
پنج شنبه 14 اردیبهشت 1391, 15:14 عصر
داداش ممنون
اما یه مشکلی هست
id از طریق table ارسال میشه
چطوری از طریق div بفرستمش ؟
ممنون

MMSHFE
پنج شنبه 14 اردیبهشت 1391, 15:18 عصر
خوب باید کد رو تغییر بدین. مثلاً بجای table به div خودتون id بدین و با jQuery و تغییر در Selectorها، id اختصاص یافته به div رو پیدا کرده و ارسال کنید.