Надеюсь, для этого просто нужен двухминутный ответ от какой-то души.Новичок - попытка обновить запись базы данных из JQuery
Веб-страница PHP отображает содержимое записи базы данных. Это прекрасно работает. База данных открывается, и запись отображается правильно для заданного $ refno.
Функция, которую я пытаюсь добавить, - это обновить эту запись (заменив все, что находится в поле статуса с помощью «X»), нажав Ctrl + Shift + Z.
Я нашел несколько JQuery для прослушивания сочетаний клавиш Ctrl + Shift + Z, и это также работает. Но что не работает - это обновление!
Код (см. Ниже) содержит предупреждение (только для целей тестирования).
Если я опускаю строку с UPDATE, тогда срабатывает предупреждение, поэтому я могу сказать, что я добираюсь до этого сценария. Если я включаю строку с UPDATE, тогда предупреждение не срабатывает, и запись не обновляется.
Какая у меня ошибка?
<script type="text/javascript">
//CTRL+Shift+z combo
$(document).keydown(function(e){
if(e.which === 90 && e.ctrlKey && e.shiftKey){
alert('Whhooppie!');
UPDATE TestTable SET status='X' WHERE refno='$refno';
}
});
</script>
Очень большое спасибо за подбор этого. Еще не удалось - я действительно новичок и в последние несколько дней борется, пытаясь разобраться во всем этом. И не удалось.
У вас наверняка есть идея, что я хочу сделать (обновление статуса до «X» в записи для данного $ refno), и я уверен, что ваша кодировка в правильном направлении. Но мне нужно локализовать ваш код с моей базой данных, именами таблиц и полей, и есть несколько вещей, которые я не понимаю.
В вашем первом бите кода я предполагаю, что мне не нужны строки о нажатии кнопки, так как это срабатывает Ctrl + Shift + Z. Поэтому я заменил только свою неправильную строку UPDATE на ваш раздел .ajax. Я также предполагаю, что «тако» - это всего лишь пример, но я могу ошибаться. (. Как уже упоминалось, все новые вещи для меня)
Так что мой код теперь:
<script type="text/javascript">
//CTRL+Shift+z combo
$(document).keydown(function(e){
if(e.which === 90 && e.ctrlKey && e.shiftKey){
$.ajax({
url: "my_php_page.php",
data: {id:1,value:"&refno"},
method: "post"
})
.done(function(data) {
alert(data);
});
}
});
</script>
Для my_php_page.php: я заменил «тест» с фактическим именем базы данных (как показано ниже, как xxx), поместил пароль базы данных между метками кавычек (показано ниже как yyy), заменил «my_table» на фактическое имя таблицы и изменил «value =? where table_id =?» следующим образом:
<?php
// print_r($_POST);
$dsn = 'mysql:host=localhost;dbname=xxx';
$user = 'root';
$pass = 'yyy';
$db = new PDO($dsn, $user, $pass);
$id = isset($_POST['id']) ? $_POST['id'] : '';
$value = isset($_POST['value']) ? $_POST['value'] : '';
$success = false;
if (!empty($id) && !empty($value)) {
$query = "update TestTable set status='X' where refno='$value'";
$stmt = $db->prepare($query);
$success = $stmt->execute(array($value,$id));
}
if ($success) echo "it worked!";
else echo "it did not work...!";;
?>
(нужно ли мне двойной ;; на последней строке?)
При нажатии Ctrl + Shift + Z Я получаю ни "это сработало!" ни «это не сработало ...!», и запись не обновляется.
Я уверен, что я должен приближаться, но где я иду не так.
Снова большое спасибо за помощь.
вам необходимо использовать ajax для разговора с php-страницей и передать ему информацию, необходимую для выполнения обновления. php, который может выполнять материал на стороне сервера, будет содержать ваш оператор обновления. –
Просто включение SQL-запроса в середине вашего Javascript просто вызовет синтаксическую ошибку. Существует много причин, по которым это не сработает, не в последнюю очередь из-за того, что ваш Javascript работает в другой среде с вашего сервера базы данных, возможно, на другой машине. Вам необходимо позвонить на ваш сервер (с помощью AJAX, pehaps) и обработать его с помощью некоторого кода на стороне сервера, чтобы обновить вашу базу данных. –
Кроме того, не создавайте скрипт PHP, который будет выполнять произвольные SQL-команды, иначе кто-то может отправить вредоносную команду SQL скрипту. –