#php #javascript #mysql #html
#php #javascript #mysql #HTML
Вопрос:
Просто, что мне нужно сделать, это создать страницу, на которой есть список имен и флажков рядом с ними. Как только вы нажмете кнопку отправки внизу, мне нужно пройти по странице и найти каждую отмеченную. С этой информацией я должен вставить эти имена сегодняшнюю дату и 1 в таблицу в mysql.
Проблема заключается в том, что кнопка onclick запускает некоторый php для обновления таблицы. Я считаю, что есть способ опубликовать в файле php некоторую информацию, поэтому, если бы я мог получить массив всех проверенных пользователей и передать его в файл php, где он будет выполнять запросы mysql, это было бы здорово.
Я огляделся, и все предлагают то или иное, но никто не приводит никаких примеров или даже приличного описания того, что нужно было бы сделать.
У меня уже есть распечатанные имена и флажки, но мне нужен какой-то способ отправки посещаемости.
Есть предложения?
Ответ №1:
Вы можете сделать это исключительно на PHP, если вам не нужен JavaScript для обновления других элементов формы, когда пользователь взаимодействует со страницей. Таким образом, вы можете забыть о событии onclick. Что вам нужно сделать, это создать ссылку на файл .php в действии вашей формы. Итак <form action="some_php_file.php" method="post">
. Теперь в этом some_php_file.php файл, вы возьмете информацию о $_POST из формы и создадите массив. Итак, если ваши флажки выглядят так, <input type="checkbox" name="name1" value="Some Value" />
то вы создадите свой массив, установив это !empty($_POST['name1'])
. Если оно не пустое, значит, пользователь установил флажок. Теперь, когда у вас есть массив со всеми установленными флажками, вы можете вставить это вместе с другой информацией в БД с помощью MySQL.
Ответ №2:
Создайте форму на странице со всеми вашими флажками:
<form action='this_page.php' method='post'>
David Smith <input type='checkbox' name='student[davidsmith]' value='1' />
Suzy Cutie <input type='checkbox' name='student[suziecutie]' value='1' />
Tom Geralds <input type='checkbox' name='student[tomgeralds]' value='1' />
<input type='submit' value='Submit' name='submit_button' />
</form>
Ваш PHP-код, расположенный в заголовке того же файла или в отдельном (включенном) файле, будет выглядеть примерно так:
<?php
if(!isset($_POST['submit_button'])){
//form has not been submitted
return;
}
//form HAS been submitted
$student_array = $_POST['student'];
foreach($student_array as $name=>$val){
//$val needs to be 0 or 1.
$val = ($val == "1")?1:0;
mysql_query("INSERT INTO attendance VALUES('$name',CURDATE(),$val)");
}
?>
Очевидно, убедитесь, что количество ваших флажков соответствует базе данных.
Наиболее полным / правильным способом сделать это было бы динамическое создание флажков на основе значений в базе данных. У вас должна быть таблица ‘student’ с их именем и первичным ключом (уникальным идентификатором).
Комментарии:
1. Мне понравился ответ всех, но я думаю, что это тот, который я собираюсь попробовать. Спасибо за очень четкий и подробный пример, я очень признателен.
2. У меня проблема. Мое имя таблицы — посещаемость со столбцами для имени участника, даты, настоящего. Где присутствует 1 или 0. Я хочу ввести данные в целом, чтобы оператор был чем-то вроде
INSERT INTO attendance (MemberName, Date, Present) VALUES($row[MemberName], Date(Y-m-d), $val);
того, где $row[MemberName] получается другим sql-запросом, получающим все отдельные имена из моей таблицы. Кстати, они распечатываются в таком порядке. Есть ли способ, которым я могу получить значение $ val равным 1 или 0, что необходимо для пометки их как присутствующих? Пока что используется предложенный вами foreach, но это не работает.3. @eric — Я внес изменения в цикл foreach, пожалуйста, проверьте это и перезвоните мне.
4. к сожалению, это на самом деле ничего не вставляет в мою базу данных. Я не уверен, относится ли это к вашему коду или к моей базе данных. Я не вижу никаких ошибок, но в мою базу данных ничего не добавляется. Я попробую это во внешнем файле php
5. @eric — код на самом деле неполный. Вам нужно убедиться, что установлено правильное подключение к базе данных, и что ваше поле даты задано правильно, и если ваше имя участника является внешним ключом из другой таблицы, то значения совпадают. Этот код является лишь руководством для выполнения задачи.
Ответ №3:
Вы пробовали использовать форму? Я думаю, это именно то, что вы ищете.
Комментарии:
1. однако, как именно будет работать форма. Это будет более 20 имен и одна кнопка отправки. Смогу ли я взять массив и опубликовать его с помощью отправки?
Ответ №4:
Другие ответы также являются хорошими ответами, но вот мой другой подход.
Вы говорите, что уже поставили имена и флажки. ОК. Теперь поместите кнопку на страницу, где хотите. А затем свяжите его с событием щелчка. Если вы используете здесь Jquery, вы можете легко получить значения флажков с соответствующими именами. Соберите всю информацию о флажках, поместите их в массив в javascript, а затем отправьте их в файл php. Вы можете использовать метод $.post в jQuery, если хотите. Я могу предоставить надежные примеры кода, если хотите.