JavaScript для обновления MySQL?

🙂

Я надеюсь создать очень простую систему рейтинга. Он не будет состоять из каких-либо средних значений, он буквально проголосует или проголосует, так что, если будет больше голосов, он пойдет в минус.

Я бы хотел, чтобы при нажатии на ссылки для голосования вверх / вниз страница не обновлялась, а только номер рейтинга. Я предполагаю, что могу это сделать с добавлением 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.

http://api.jquery.com/jQuery.post/

http://mootools.net/docs/core/Request/Request

Да, вы можете запустить его из файла 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 не работает. Невозможно разобраться, почему, как это делается тихо, как всегда.