#php
#php
Вопрос:
Итак, в принципе, я хотел создать страницу назначения врача, и я хотел не регистрировать пациента, если он / она хочет обратиться к тому же врачу в тот же день и в тот же час с другим пациентом. Вот мой php-код :
$con2 = mysqli_connect('localhost','root','','cabinet');
$sql="SELECT data,ora,doctorul FROM programare";
$res2=mysqli_query($con2,$sql);
while($row=mysqli_fetch_array($res2)){
$data2=$row['data'];
$ora2=$row['ora'];
$doctor2=$row['doctorul'];
}
if (isset($_POST['programare'])) {
$errors=array();
$nume=$_POST['nume'];
$data=$_POST['data'];
$ora=$_POST['ora'];
$tip=$_POST['tip'];
$doctor=$_POST['doctor'];
if(!empty($nume) amp;amp; !empty($data) amp;amp; !empty($ora) amp;amp; !empty($doctor)){
if ($data == $data2 amp;amp; $ora == $ora2 amp;amp; $doctor == $doctor2) {
array_push($errors,"Programare existenta la acea ora!");
}else{
$sql2="INSERT INTO programare(nume,data,ora,tipul,doctorul)VALUES(?,?,?,?,?)";
mysqli_query($con2,$sql2);
$stmt = mysqli_stmt_init($con2);
if(!mysqli_stmt_prepare($stmt,$sql2)){
echo "SQL error";
} else {
mysqli_stmt_bind_param($stmt,"sssss",$nume,$data,$ora,$tip,$doctor);
mysqli_stmt_execute($stmt);
}
array_push($errors,"Programare inregistrata");
}
}else{
array_push($errors,"Introduceti toate datele!");
}
}
Итак, если я зарегистрирую пациент1 в doctor1 в date1 hour1, и после этого я хочу зарегистрировать пациент2 в doctor1 в date1 hour1, это работает .. это не регистрирует пациент2, но если я зарегистрирую пациент3 в doctor2 в date2 hour2, и после этого я зарегистрирую пациент4 в doctor1 в date1 hour1, это работает…и это не должно … так чего же мне не хватает в моем коде?
Вот форма:
<form class="form-horizontal form-bordered" method="post">
<?php include('erori.php'); ?>
<div class="form-group">
<label class="col-md-3 control-label" for="inputFocus">Nume</label>
<div class="col-md-6">
<input class="form-control" id="inputFocus" type="text" name="nume" autocomplete="off">
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label" for="inputFocus">Tip</label>
<div class="col-md-6">
<input class="form-control" id="inputFocus" type="text" name="tip" autocomplete="off">
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label" for="inputFocus">Data</label>
<div class="col-md-6">
<input class="form-control" id="datepicker2" type="text" name="data" autocomplete="off">
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label" for="inputFocus">Ora</label>
<div class="col-md-6">
<input class="form-control" id="inputFocus" type="text" name="ora" autocomplete="off">
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Doctor</label>
<div class="col-md-6">
<select data-plugin-selectTwo class="form-control populate" name="doctor">
<option></option>
<?php
$con = mysqli_connect('localhost','root','','cabinet');
$sql="SELECT user FROM users WHERE level='1'";
$res=mysqli_query($con,$sql);
while($row=mysqli_fetch_array($res)){
echo "<option>".$row['user']."</option>";
}
?>
</select>
</div>
</div>
<div class="form-group" id="btnform">
<button type="submit" class="mb-xs mt-xs mr-xs btn btn-primary" name="programare">Inregistrare</button>
</div>
</form>
Комментарии:
1. Меня пугает, что медицинские системы, которые потенциально критичны для безопасности, разрабатываются начинающими инженерами без какого-либо надзора. Надеюсь, это игрушечный проект и не причинит вреда
2. Ваш первый ВЫБОР должен проверять, есть ли строка, соответствующая полям ввода, если есть, не вставляйте. Другой вариант, вы могли бы использовать составной ключ для этих полей.
3. @EriksKlotins не волнуйтесь, сэр, это для проекта для моей школы, и спасибо за ваш ответ.
4. @JonStirling я не проверяю здесь: if ($data == $ data2 amp; amp; $ ora == $ ora2 amp; amp; $ doctor == $ doctor2), потому что я передал $ data2 в $ row [‘данные’] / $ ora2 в $ row [‘ora’] и $ doctor2 в $ row [‘doctorul’] из моей таблицы, где у меня есть все назначения и $ data, $ ora, $ doctor взяты из моих исходных данных ..
5. @Trick. Андрей Поскольку у вас это в цикле и вы перебираете каждую строку, эти переменные будут относиться только к последней строке, возвращаемой результирующим набором. Это не то, что вы хотите сделать.