🙂
Я надеюсь создать очень простую систему рейтинга. Он не будет состоять из каких-либо средних значений, он буквально проголосует или проголосует, так что, если будет больше голосов, он пойдет в минус.
Я бы хотел, чтобы при нажатии на ссылки для голосования вверх / вниз страница не обновлялась, а только номер рейтинга. Я предполагаю, что могу это сделать с добавлением JavaScript, когда он вызывает новые данные, однако я не знаю, как запустить MySQL-запрос с помощью JavaScript.
Насколько я понимаю, это не все так безопасно, поэтому я надеюсь, что смогу запустить его из файла PHP?
Может ли кто-нибудь сказать мне, как это сделать, пожалуйста?
У вас должен быть запрос SQL-запроса в файле PHP и выполнить этот скрипт PHP через AJAX. Например:
В PHP:
$page_id = mysql_real_escape_string(html_entities($_POST['page_id'])); $rating = mysql_real_escape_string(html_entities($_POST['rating'])); mysql_query(" UPDATE ratings(vote) VALUES ('$rating') WHERE id = '$page_id' ");
AJAX (если вы используете jQuery):
function rate(rating, page_id) { $.ajax({ url: 'path/to/php_script.php', type: 'post', data: 'rating='+rating+'&page_id='+page_id, success: function(output) { alert('success, server says '+output); }, error: function() { alert('something went wrong, rating failed'); } }); }
HTML:
<form> Like: <input type="button" value="Like" onClick="rate(1, $_GET['page_id'])" /> <br /> Hate: <input type="button" value="Hate" onClick="rate(2, $_GET['page_id'])" /> </form>
Для этого вы используете javascript для вызова асинхронного вызова (ajax) в php-файл, который, в свою очередь, запускает запрос для обновления db и возвращает ответ на javascript. Затем вы используете этот ответ для обновления пользовательского интерфейса. Небезопасно выставлять запрос в javascript, поэтому убедитесь, что сам запрос находится в файле php.
Я лично рекомендую использовать утилиты jQuery Ajax для легкого кросс-браузера ajax.
Ответ AJAX – это ответ. Я рекомендую использовать jQuery или Mootools для этого, они упрощают их на несколько порядков.
Во всяком случае, способ сделать это – создать PHP-скрипт рейтинга. Он принимает элемент и рейтинг через данные POST и использует эти данные для вызова базы данных. Обязательно проверьте подлинность пользователя. Позвоните по этой странице с помощью AJAX, передав пункт / оценку через POST.
Да, вы можете запустить его из файла PHP, и вы можете вызвать PHP-файл из ajax. Простой пример
<?php if ($_GET['vote']){ if ($_GET['vote'] != "down" && $_GET['vote'] != "up") die('<script>alert("hacker");</script>'); include 'db.php'; mysql_query("INSERT INTO votes VALUES ('".$_GET['vote']."')"); die("<script>alert('Thanks for voting');</script>"); }
html_entities () не существует. Попробуйте htmlentities () Я также обнаружил, что mysql_real_escape_string {} помешал вводу ввода.
Javascript не работает. Невозможно разобраться, почему, как это делается тихо, как всегда.