Это немного глупо!
Во-первых, давайте уточним HTML. Флажки по умолчанию отправляют значение «вкл», когда установлен флажок (если вы не указали value
во входном теге, которого у вас нет). Продолжайте и полностью удалите событие onClick, поскольку мы будем делать это с jQuery, чтобы упростить вещи и лучше отделить ваше поведение от презентации.
Во-вторых, давайте правильно настроим ваш php-файл. Если вы на самом деле не изменили имя пользователя и пароль, скорее всего, их значения должны быть
$dbhost='localhost';
$dbuser='root';
$dbpass='';
Как только это соединение заработает, нам нужно исправить то, как мы работаем с опубликованными данными. Мне нравится делать это, пытаясь вытащить его в отдельные переменные, чтобы, если что-то пошло не так, я мог просто сделать print variable;
и посмотреть, какое значение (если оно есть) у него есть.
Лучший способ получить опубликованные данные в вашем php-файле и запросить их, был бы следующий:
$id=$_POST['id'];
$favorite=$_POST['favorite'];
$query="UPDATE mytable SET favorite='$favorite' WHERE id='$id'";
То, что это делает, изменяет значение любимого столбца на 'on' или ''. Итак, перейдите к тому месту, где вы на самом деле выводите флажки, и вставьте несколько php, чтобы установить флажок, если он уже установлен в базе данных. Вот так.
echo "<input type='checkbox' id='$rowid;' name='favorite'";
if(//check in database if 'favorite' column is set to 'on'){
print "checked='checked'";
}
echo "/>";
Обратите внимание на отсутствие события onClick. Мы справимся с этим с помощью jquery.
$('input[name=favorite]').click(function(){
//if a checkbox with name 'favorite' is clicked, do the following.
//grab the id from the clicked box
var id=$(this).attr('id');
//grab the value from the checkbox (remember, if it is checked it will be 'on', else ''
var favorite=$(this).val();
//setup the ajax call
$.ajax({
type:'POST',
url:'check_favorite.php',
data:'id= ' + id + '&favorite='+favorite
});
}
});
ТАМ. Уф. Я думаю, что об этом нужно позаботиться, если не о многом.