2016-09-13 6 views
1

У меня есть форма с более чем 4 полями, и все данные, вставленные в эти поля, связаны, поэтому я хочу добиться чего-то другого.
Например, у меня есть 4 поля с именами classclass_timeclass_teacher & batch_name и каждый раз, когда я заполняю и отправляю форму, данные будут отправлены в базу данных, в основном это сценарий расписания.
Итак, если в первый раз я добавил maths эти значения и отправлены в форму, и она была сохранена, теперь, если второй раз я добавляю то же время и имя учителя с другой партией, тогда он должен показывать ошибку, и форма не должна быть отправлена, потому что тот же учитель не может появляться в двух разных классах одновременно. Как я могу достичь этого с помощью PHP.
Вот код, который я пробовал.PHP сравнить значение из базы данных

$sql2 = "SELECT * FROM `s_timetable`"; 
$res = mysql_query($sql2) or die(mysql_error()); 
$fetch_data = mysql_fetch_array($res); 

if ($fetch_data['class_info'] && $fetch_data['teacher_info']) == $_POST['class'] && $_POST['teacher'] 
{ 

} 
+0

Вы не должны использовать никакие функции mysql _ *. Они были устаревшими с php 5.5 и полностью удалены в php 7.0 – Manish

+0

Поскольку у вас уже есть время и учитель из 'POST', сделайте запрос, если запись существует, если нет, то сделайте запись else, чтобы отклонить запись с предупреждением. – Sasikumar

ответ

1

Вместо этого в PHP вы можете просто добавить составной уникальный ключ, который не позволит одновременно иметь одного и того же учителя в базе данных.

ALTER TABLE s_timetable ADD CONSTRAINT myUniqueConstraint UNIQUE(class_time, class_teacher); 

Теперь каждый раз, когда вы пытаетесь вставить новые данные, которые он будет возвращать ошибку SQL, если тот же преподаватель есть в то же время.

Multiple column index documentation

2

перед вставкой новых данных, вы можете проверить вещи ниже заданного запроса, и если этот запрос возвращать больше 0 строк вы можете показать сообщение об ошибке

select * from `tablename` where `class_time` = '".$class_time."' and `class_teacher`='".$class_teacher."' 

Вы не должны использовать любой mysql_ * -функции. Они устарели с php 5.5 и полностью удалены в последних версиях php

0

Необходимо сначала проверить, что пользователь уже находится в таблице.

$sql = mysql_query("select * from table_name where class_time ='" . $_REQUEST['class_time'] . "' AND class_teacher ='" . $_REQUEST['class_teacher'] . "'"); 

$record = mysql_num_row($sql); 

if ($record) { 
    echo "Record already exits"; 
    exit(); 
} else { 
//insert query 
} 

Примечание: Прекратить использование mysql это осуждается.

+0

имя партии не требуется только время класса и имя учителя в порядке –

+0

@VivekSingh Yuple имя партии не требуется, спасибо за помощь. – Jaky

+0

Обновленный ответ. – urfusion

0

Просто добавьте запрос, который будет выбрать class_time и class_teacher, так что, если он уже существует, вы можете произвести сообщи об ошибке.

$checksched = mysqli_query($con,"SELECT * FROM s_timetable WHERE class_time = '".$inputted_time."' and class_teacher = 'inputted_teacher' ") 
    $match = mysqli_num_rows($checksched); 

if ($match > 0){ 
echo "<script> 
alert('Teacher already exist!'); 
</script>"; 
} 
Смежные вопросы