Учет посещаемости с использованием php, mysql и javascript

#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, если хотите. Я могу предоставить надежные примеры кода, если хотите.