از کجا می دانید که خواننده مقالات یا مشتریان چه نظری بر روی محتوای وبسایت شما دارند؟ چطور قابلیت امتیازدهی ستاره ای به شما در جمع کردن نظرات مشتریان کمک می کند؟
در این آموزش قصد داریم به شما نحوه ساخت امتیازدهی ستاره ای با PHP و Ajax را بصورت حرفه ای یاد بدیم.
در مقالات قبلی منتشر شده نحوه پیاده سازی این سیستم را یاد گرفتیم :
ولی در این بخش قصد داریم روش و کدهای بروز برای ساخت امتیازدهی ستاره ای با PHP و Ajax را در اختیار شما قرار بدیم.
امتیازدهی ستاره ای به شما کمک می کند تا بدانید که دنبال کنندگان شما چه رتبه ای به محتوای شما دادند. اینکار نه تنها رتبه محتوای شما را مشخص می کند، بلکه بوسیله امتیازهای کسب شده باعث آوردن خوانندگان بیشتر برای صفحات و مشتریان بالقوه برای محصولات شما می شود.
وبسایت ها از روش های مختلفی به کاربران اجازه امتیازدهی مطلب را می دهند. برای مثال امتیازدهی ستاره ای (بسیار محبوب)، امتیازدهی انگشتی (بالا-پایین) همانند فیسبوک، ایموجی و غیره…
قطعا مثال های زیادی از سیستم های امتیازدهی را قبلا دیدید و ما در این مثال همه آن ها را یکجا جمع کردیم.
من برای سیستم امتیازدهی سه نوع UI مختلف را قرار دادم :
- امتیازدهی ۵ ستاره ای
- امتیازدهی لایک
- امتیازدهی ایموجی
پلاگین ها آماده برای داینامیک سازی امتیازدهی ستاره ای
پلاگین های متعددی برای ساخت امتیازدهی ستاره ای با PHP وجود دارند که امکانات فراوانی را شامل می شوند.
برای مثال، Reteit یک افزونه امتیازدهی براساس jQuery اس که به شما اجازه افزودن امتیازدهی ستاره ای به یک لیست، بخش انتخابی و دیگر بخش های HTML را می دهد.
همچنین از Font-Awesome, Material-icons برای نمایش آیکون های امتیازدهی پشتیبانی می کند.
UpvoteJS نیز یک پکیج جاواسکریپت است که برای رندر ویجت های امتیازدهی همانند سایت StackExchange است.
اگر وبسایت وردپرسی دارید, یک پلاگین رایگان و معروف به نام Wp-PostRatings برای پیاده سازی قابلیت امتیازدهی وجود دارد.
مزایای ساخت اسکریپت سفارشی امتیازدهی
با ساخت امتیازدهی ستاره ای با PHP و Ajax بصورت سفارشی، منطق کدها به منظور ایجاد سفارش سازی های دلخواه و توسعه و رفع مشکلات بسیار آسان خواهد بود
همچنین اضافه بار ناشی از امکانات اضافه و غیر نیاز ما کاهش پیدا می کند. همچنین انرژی و زمان ما برای مدیریت هزاران خط کد برای این قابلیت با یک UI ساده هدر نمی رود.
ساخت امتیازدهی ستاره ای با PHP و Ajax
من یک اسکریپت امتیازدهی ستاره ای براساس AJAX و با PHP و jQuery را ایجاد کردم.
این کد به شما یک لیست از دوره های آموزشی به همراه یک گزینه برای امتیازدهی هرکدام از دوره هایی که از دیتابیس خوانده شده اند را نشان می دهد.
عناصر امتیازدهی در UI قابل پیکربندی است. من سه UI جایگزین را برای بخش امتیاز دهی ارایه دادم که می توانید هر کدام را به سلیقه وب سایت خود برای جمعاوری نظر کاربران استفاده کنید.
برای ثبت امتیازها، درخواست توسط Ajax به سمت کد PHP ارسال می شود و آنجا امتیاز دوره در دیتابیس MySQL ذخیره می شود.
همینکه امتیاز ثبت شد، کاربر امکان امتیازدهی دوباره به همان دوره را نخواهد داشت.
تصویر زیر ساختار فایل های استفاده شده در این مثال را نشان می دهد :
دیتابیس امتیاز دهی
ما دو جدول tbl_courses
و tbl_course_rating
را ایجاد کردیم.جدول tbl_courses
شامل دوره هایی است که کاربر امکان ثبت امتیاز برای آنها را دارد.
جدول tbl_course_rating
نیز برای ثبت امتیازهای یونیک بدون تکرار استفاده می شود.
اسکریپت زیر برای ایجاد جداول و دامپ کردن داده های آن استفاده شده است که به راحتی می توانید برای ساخت جداول در محیط اجرای خود بهره ببرید.
sql/db_rating.sql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
-- -- Database: `db_rating` -- -- -------------------------------------------------------- -- -- Table structure for table `tbl_course` -- CREATE TABLE `tbl_course` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, `period` varchar(255) NOT NULL, `availabe_seats` int(11) NOT NULL, `last_date_to_register` date NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tbl_course` -- INSERT INTO `tbl_course` (`id`, `name`, `description`, `period`, `availabe_seats`, `last_date_to_register`) VALUES (1, 'Professional Training for Finantial Analyst\r\n', 'Professional Training for Finantial Analyst', '30 days', 2, '2020-01-31'), (2, 'Enterprise Programming in Artificial Intelligence\r\n', 'Enterprise Programming in Artificial Intelligence', '30 days', 2, '2020-01-24'); -- -------------------------------------------------------- -- -- Table structure for table `tbl_course_rating` -- CREATE TABLE `tbl_course_rating` ( `id` int(11) NOT NULL, `course_id` int(11) NOT NULL, `member_id` int(11) NOT NULL, `rating` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Indexes for dumped tables -- -- -- Indexes for table `tbl_course` -- ALTER TABLE `tbl_course` ADD PRIMARY KEY (`id`); -- -- Indexes for table `tbl_course_rating` -- ALTER TABLE `tbl_course_rating` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tbl_course` -- ALTER TABLE `tbl_course` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; -- -- AUTO_INCREMENT for table `tbl_course_rating` -- ALTER TABLE `tbl_course_rating` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=95; COMMIT; |
بخش UI نمایش گزینه امتیازدهی
در صفحه لندینگ, لیست دوره ها از دیتابیس خوانده ونمایش داده می شوند. کد HTML مورد نظر در اینجا قرار داده شده.
عناصر امتیازدهی بر اساس ثابت PHP تعریف شده در فایل پیکربندی لود می شوند که می تواند امتیازدهی ۵ ستاره ای یا ایموجی یا لایک باشد.
با کلیک روی المان امتیازدهی، درخواست AJAX برای ثبت امتیاز ارسال می شود.
index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Star Rating Script in PHP</title> <link href="./assets/css/phppot-style.css" type="text/css" rel="stylesheet" /> <link href="./assets/css/star-rating-style.css" type="text/css" rel="stylesheet" /> <script src="./vendor/jquery/jquery-3.3.1.js" type="text/javascript"></script> </head> <body> <div class="phppot-container"> <div class="container"> <h2>Star Rating Script in PHP</h2> <div id="course_list"> <?php require_once "getRatingData.php"; ?> </div> </div> </div> <script src="./assets/js/rating.js"></script> </body> </html> |
من فایل های قالب را برای ایجاد UI مختلف امتیازدهی بصورت جداگانه ایجاد کردم :
star-rating-view.php , favorite-rating-view.php , emoji_rating_view.php
این فایل ها با رویداد onClick
روی المان مشخص نمایش داده می شوند.
star-rating-view.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php for ($count = 1; $count <= 5; $count ++) { $starRatingId = $row['id'] . '_' . $count; if ($count <= $userRating) { ?> <li value="<?php echo $count; ?>" id="<?php echo $starRatingId; ?>" class="star"><img src="./img/<?php echo $apperance; ?>-filled.png"></li> <?php } else { ?> <li value="' . $count; ?>" id="<?php echo $starRatingId; ?>" class="star" onclick="addRating(this,<?php echo $row['id']; ?>,<?php echo $count; ?>, 'star');" onMouseOver="mouseOverRating(<?php echo $row['id']; ?>,<?php echo $count; ?>,'<?php echo $apperance; ?>');" onMouseLeave="mouseOutRating(<?php echo $row['id']; ?>,<?php echo $userRating; ?>,'<?php echo $apperance; ?>');"><img src="./img/<?php echo $apperance; ?>-open.png"></li> <?php } } ?> |
favourite-rating-view.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php for ($count = 1; $count <= 5; $count ++) { $starRatingId = $row['id'] . '_' . $count; if ($count == $userRating) { ?> <li value="<?php echo $count; ?>" id="<?php echo $starRatingId; ?>" class="star"><img src="./img/<?php echo $apperance; ?>-filled.png"></li> <?php } else { ?> <li value="<?php $count; ?>" id="<?php echo $starRatingId; ?>" class="star" onclick="addRating(this,<?php echo $row['id']; ?>,<?php echo $count; ?>);" onMouseOver="mouseOverRating(<?php echo $row['id']; ?>,<?php echo $count; ?>,'<?php echo $apperance; ?>');" onMouseLeave="mouseOutRating(<?php echo $row['id']; ?>,<?php echo $userRating; ?>,'<?php echo $apperance; ?>');"><img src="./img/<?php echo $apperance; ?>-open.png"></li> <?php } } ?> |
در قالب امتیازدهی ایموجی, محدوده ای از ۵ آیکون احساسات از خیلی غمگین به خیلی خوشحال نشان داده می شود.
توصیه می شود از این قالب برای بخش پشتیبانی / تیکت استفاده کنید تا مشتریان بتوانند احساس خود از پشتیبانی شما را ثبت کنند.
emoji-rating-view.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php for ($count = 1; $count <= 5; $count ++) { $starRatingId = $row['id'] . '_' . $count; if ($count == $userRating) { ?> <li value="<?php echo $count; ?>" id="<?php echo $starRatingId; ?>" class="star"><img src="./img/<?php echo $apperance . $count; ?>-filled.png"></li> <?php } else { ?> <li value="<?php $count; ?>" id="<?php echo $starRatingId; ?>" class="star" onclick="addRating(this,<?php echo $row['id']; ?>,<?php echo $count; ?>);" onMouseOver="mouseOverRating(<?php echo $row['id']; ?>,<?php echo $count; ?>,'<?php echo $apperance; ?>');" onMouseLeave="mouseOutRating(<?php echo $row['id']; ?>,<?php echo $userRating; ?>,'<?php echo $apperance; ?>');"><img src="./img/<?php echo $apperance . $count; ?>-open.png"></li> <?php } } ?> |
استایل های CSS
assets/css/star-rating-style.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
ul { margin: 0px; padding: 10px 0px 0px 0px; display: inline-flex; } li.star { list-style: none; display: inline-block; margin-right: 5px; cursor: pointer; color: #9E9E9E; } .row-title { font-size: 20px; color: #232323; } .review-note { font-size: 12px; color: #999; font-style: italic; } .row-item { margin-bottom: 20px; border-bottom: #F0F0F0 1px solid; } p.text-address { font-size: 12px; } img { height: 20px; width: 20px; } .course-detail { font-size: 1em; margin-right: 20px; } .loader-icon { display: none; } .response { display: inline-block; vertical-align: super; margin-left: 10px; color: #FF0000; } |
توابع jQuery برای مدیریت عملیات امتیازدهی
این فایل شامل توابع جی کوئری برای آماده سازی درخواست های AJAX برای ذخیره امتیازهای کاربران است.
همچنین رویدادهای ماوس را برای هایلایت کردن عناصر امتیازدهی مدیریت می کند.
تابع mouseOverRating()
ستاره یا دیگر عناصر امتیازدهی را هایلایت می کند. مشابه آن, mouseOutRating()
با برداشتن ماوس از روی عناصر آن را به حالت UI قبلی برمی گرداند.
کد Ajax در addRating()
نیز درخواست را به همراه آدرس PHP و داده ها آماده می کند. در صورت موفقیت آمیز بودن درخواست AJAX , ظاهر را بروزرسانی می کند.
assets/js/rating.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
function mouseOverRating(courseId, rating, appearance) { if (appearance == "star") { for (var i = 1; i <= rating; i++) { $('#' + courseId + "_" + i + ' img').attr('src', "./img/" + appearance + "-filled.png"); } } else { ratingIconPrefix = "./img/" + appearance; for (var i = 1; i <= rating; i++) { if (appearance == "emoji") { ratingIconPrefix = "./img/" + appearance + "1"; } if (i == rating) { $('#' + courseId + "_" + i + ' img').attr('src', ratingIconPrefix + "-filled.png"); } } } } function mouseOutRating(courseId, userRating, appearance) { var ratingId; if (appearance == "star") { if (userRating != 0) { for (var i = 1; i <= userRating; i++) { $('#' + courseId + "_" + i + ' img').attr('src', "./img/" + appearance + "-filled.png"); } } if (userRating <= 5) { for (var i = (userRating + 1); i <= 5; i++) { $('#' + courseId + "_" + i + ' img').attr('src', "./img/" + appearance + "-open.png"); } } $(".selected img").attr('src', "./img/" + appearance + "-filled.png"); } else { ratingIconPrefix = "./img/" + appearance; if (userRating <= 5) { for (var i = 1; i <= 5; i++) { if (appearance == "emoji") { ratingIconPrefix = "./img/" + appearance + i; } if (userRating == i) { $('#' + courseId + "_" + i + ' img').attr('src', ratingIconPrefix + "-filled.png"); } else { $('#' + courseId + "_" + i + ' img').attr('src', ratingIconPrefix + "-open.png"); } } } var selectedImageSource = $(".selected img").attr('src'); if (selectedImageSource) { selectedImageSource = selectedImageSource.replace('open', "filled"); $(".selected img").attr('src', selectedImageSource); } } } function addRating(currentElement, courseId, ratingValue, appearance) { var loaderIcon = $(currentElement).closest(".row-item"); $.ajax({ url : "ajax-end-point/insertRating.php", data : "index=" + ratingValue + "&course_id=" + courseId, type : "POST", beforeSend : function() { $(loaderIcon).find("#loader-icon").show(); }, success : function(data) { loaderIcon = $(currentElement).closest(".row-item"); $(loaderIcon).find("#loader-icon").hide(); if (data != "") { $('#response-' + courseId).text(data); return false; } if (appearance == 'star') { $('#list-' + courseId + ' li').each( function(index) { $(this).addClass('selected'); if (index == $('#list-' + courseId + ' li').index( currentElement)) { return false; } }); } else { $(currentElement).addClass('selected'); } } }); } |
ذخیره سازی امتیازهای کاربر در دیتابیس MySQL
وقتی اسکریپت AJAX صدا زده می شود, یک درخواست را به سمت PHP ارسال می کند. در PHP نیز داده های دریافتی در دیتابیس ذخیره می شوند.
براساس نمایش قالب متفاوت از امتیازدهی, محدوده مقدار امتیاز از ۱ تا ۵ تغییر می کند.
پیکربندی زیر برای ست کردن ظاهر عناصر امتیازدهی ست شده است. مقادیر قابل قبول بصورت کامنت در کد ظاهر شده اند.
Common/Config.php
1 2 3 4 5 6 7 8 9 |
<?php namespace Phppot; class Config { // Possible values: star | favourite | emoji const RATING_APPEARANCE = "favourite"; } |
کد PHP زیر توسط AJAX صدا زده می شود که امتیاز کاربران را در دیتابیس ذخیره می کند.
قبل از اضافه کردن, بررسی می کند که کاربر از قبل امتیازی برای این دوره ثبت کرده است یا خیر. اگر بله که اجازه ثبت مجدد را نمی دهد.
ajax-end-point/insertRating.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php namespace Phppot; use Phppot\Rating; require_once __DIR__ . "./../Model/Rating.php"; $rating = new Rating(); // Here the user id is harcoded. // You can integrate your authentication code here to get the logged in user id $userId = 5; if (isset($_POST["index"], $_POST["course_id"])) { $courseId = $_POST["course_id"]; $ratingIndex = $_POST["index"]; $rowCount = $rating->isUserRatingExist($userId, $courseId); if ($rowCount == 0) { $insertId = $rating->addRating($userId, $courseId, $ratingIndex); if (empty($insertId)) { echo "Problem in adding ratings."; } } else { echo "You have added rating already."; } } |
این کد نیز دوره ها و امتیاز آنها را از دیتابیس خوانده و در کد HTML نمایش می دهد.
getRatingData.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php namespace Phppot; use Phppot\Rating; require_once "./Common/Config.php"; $config = new Config(); require_once "./Model/Rating.php"; $rating = new Rating(); // Here the user id is harcoded. // You can integrate your authentication code here to get the logged in user id $userId = 5; $apperance = $config::RATING_APPEARANCE; $courseResult = $rating->getCourse(); if (! empty($courseResult)) { foreach ($courseResult as $row) { $userRating = $rating->getUserRating($userId, $row['id']); $totalRating = $rating->getTotalRating($row['id']); $date = date_create($row["last_date_to_register"]); ?> <div class="row-item"> <div class="row-title"><?php echo $row['name']; ?></div> <ul class="list-inline" id="list-<?php echo $row['id']; ?>"> <?php require $apperance . "-rating-view.php"; ?> <img src="img/loader.gif" class="loader-icon" id="loader-icon"> </ul> <div class="response" id="response-<?php echo $row['id']; ?>"></div> <p class="review-note">Total Reviews: <?php echo $totalRating; ?></p> <p class="text-address"> <label class="course-detail">Period: <?php echo $row["period"]; ?></label><label class="course-detail">Available seats: <?php echo $row["availabe_seats"]; ?></label><label class="course-detail">Last Date to Register: <?php echo date_format($date, "d M Y"); ?></label> </p> </div> <?php } } ?> |
در دو فایل PHP بالا, بدلیل استفاده نکردن از سیستم لاگین و ریجستر, آیدی کاربر را در متغییر $userid
قرار دادم که شما می توانید آیدی را از کاربر لاگین شده در سیشن ها بخوانید.
فایل Rating.php یک کلاس برای انجام عملیات امتیازدهی است که شامل توابعی برای خواندن دوره ها و نمایش امتیاز آنها است.
getUserRating()
و getTotalRating()
توابعی برای برگشت دادن داده های مربوط به نمایش آمار امتیاز ها هستند.
isUserRatingExist()
بررسی می کند که امتیاز هر کاربر برای هر دوره یکبار ثبت شده باشد.
من از دستورات از پیش ساخته شده MySQLi برای اجرای کوئری های دیتابیس استفاده کردم.
Model/Rating.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
<?php namespace Phppot; use Phppot\DataSource; class Rating { private $ds; function __construct() { require_once __DIR__ . './../lib/DataSource.php'; $this->ds = new DataSource(); } function getCourse() { $query = "SELECT * FROM tbl_course ORDER BY id DESC"; $result = $this->ds->select($query); return $result; } function getUserRating($userId, $courseId) { $average = 0; $avgQuery = "SELECT rating FROM tbl_course_rating WHERE member_id = ? and course_id = ?"; $paramType = 'ii'; $paramValue = array( $userId, $courseId ); $result = $this->ds->select($avgQuery, $paramType, $paramValue); if ($result > 0) { foreach ($result as $row) { $average = round($row["rating"]); } // endForeach } // endIf return $average; } function getTotalRating($courseId) { $totalVotesQuery = "SELECT * FROM tbl_course_rating WHERE course_id = ?"; $paramType = 'i'; $paramValue = array( $courseId ); $result = $this->ds->getRecordCount($totalVotesQuery, $paramType, $paramValue); return $result; } function isUserRatingExist($userId, $courseId) { $checkIfExistQuery = "select * from tbl_course_rating where member_id = ? and course_id = ?"; $userId; $courseId; $paramType = 'ii'; $paramValue = array( $userId, $courseId ); $rowCount = $this->ds->getRecordCount($checkIfExistQuery, $paramType, $paramValue); return $rowCount; } function addRating($userId, $courseId, $rating) { $insertQuery = "INSERT INTO tbl_course_rating(member_id,course_id, rating) VALUES (?,?,?) "; $paramType = 'iii'; $paramValue = array( $userId, $courseId, $rating ); $insertId = $this->ds->insert($insertQuery, $paramType, $paramValue); return $insertId; } } |
خروجی اسکریپت ساخت امتیازدهی ستاره ای با PHP و Ajax
در اسکرین شات زیر, یک متن قرمز رنگ را می بینید که یک خطا برای کاربری است که قصد ثبت امتیاز دوباره را دارد.
امیدواریم از آموزش ساخت امتیازدهی ستاره ای با PHP و Ajax به سه نوع مختلف نهایت استفاده را برده باشید.
برای دانلود سورس کد و دیتابیس از باکس دانلود استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
سلام وقت بخیر
من یه دیتابیس دارم مربوط به خواننده ها هستش
اگه توی تیبل singer_rating هر کابر به چند خواننده امتیاز داده باشه
و چندین خواننده وجود داشته باشه اگه بخوام سه تا از محبوب ترین خواننده ها رو انتخاب کنم چطوری باید این کارو انجام بدم
سلام.
ممنون.
در مورد دستور sql با join جستجو کنید
ممنون میشه بگید از کدام روش join استفاده کنم
سلام حسن جان این ایمیل که میفرستید نمایش دیدگاه که میزنیم توی یه سایت دیگه صاف ما رو میبره رو نظری که ثبت کردیم چطوریه شما طرز کارش رو بلدید آموزش بدید ممنونم
سلام.
هر کامنتی که در سایت ثبت می کنید و نمایش میدید یک id در تگ html بدید مثلا
بعد از آن می تونید اون رو بصورت site.com/mypost#comment_123 ایمیل کنید و مستقیما بعد باز کردن کامنت موردنظر نمایش داده میشه
سلام مهندس شفیعی عزیز مشکلم با location.reload رفع شد فقط میخوام وقتی صفحه رفرش شد بره به مختصات اون پستی که کاربر امتیاز داده این جا باید چیکار کنم ممنون از راهنمایی ها تون
سلام
با window.location.href میتونید url فعلی را دریافت و با
window.location.replace(PageURL);
ریدایرکت کنید
سلام حسن جان من کار سیستم امتیاز ددهی رو به پایان رسوندم ولی برای رفرش صفحه با دستور header بهم خطای can not modify header میده خواستم راهنماییم کنید چطوری صفحه index رو رفرش کنم کد ها رو تو crisp براتون میفرستم با دستورات ajax هم زدم نشد با تشکر فراوان از سایت خوبتون
سلام.
اول کدهای php بعد از آموزش ریدایرکت با php
سلام مهندس شفیعی نازنین من یه فیلم آموزشی تو این زمینه دانلود کردم فقط واسه میانگین گرفتن میخوام راهنماییم کنید چطوری توی یک جدول همه سطرهایی که دارای فیلد کلید خارجی یکسان هستند رو select کنم با دستور where فقط یکیشونو میاره ممنونم از راهنمایی ها تون
سلام.
در مورد join در mysql جستجو کنید
https://www.w3schools.com/sql/sql_join.asp
سلام حسن جان با همون where مشکلم حل شد باید دیتای برگشتی از تابع رو به صورت آرایه بر میگردوندم با تشکر از سایت خوبتون
سلام
یک کد select داخل بعضی از سایت ها هست که میتونیم چند تا option از داخلش انتخاب کنیم اما سوال که پیش میاد چه جوری چندتا داده ارسال میکنه؟و اینکه اگر ممکن یک نمونه کد و نحوه دریافت و ارسال داده با php مثال بزنید؟
http://dl.sibup.ir/dl/uploads/guest/158773101479551.png
سلام. از این آموزش می توانید استفاده کنید :
ساخت لیست باکس چند انتخابی با jQuery و PHP
موفق باشید.