Назначение PHP -> регистрируется, когда оно не должно этого делать..чего мне не хватает?

#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. Андрей Поскольку у вас это в цикле и вы перебираете каждую строку, эти переменные будут относиться только к последней строке, возвращаемой результирующим набором. Это не то, что вы хотите сделать.