Witam.
Mam dość złożony skrypt w którym nie bardzo wiem dlaczego nie wszystko działa. Mam formularz przez któy wprowadzam pacjentów. Są tam dane osobowe wraz z PESEL. Jednak PESEL nie zawsze w momencie zapisywania będzie znany.
Dane wpisywane są do tab pacjenci i tabeli wizyta jednocześnie i w niektórych przypadkach skrypt działa nie tak jak powinien. Dodatkowo mam wyszukiwarkę która wyszukuje pacjentów i możliwość przekierowania z niej wyszukanego pacjenta żeby zrobić rezerwację.
początek skryptu:
  1. <?php
  2. include('connect2.php');
  3. $pytanie='select max(id_pac) as id_pac from pacjenci';
  4. if ($res=mysqli_query($mysqli,$pytanie)){
  5. while ($row=mysqli_fetch_row($res))
  6. $max=$row['id_pac'];}
  7.  
  8. //jeżeli pacjent ma już id - przeniesione dane z wyszukiwarki
  9. if ($_GET['id_pac']<=$max){
  10. $query1 = 'insert into wizyta (id_pac,id_lek, id_bad, termin, new) values
  11. ( "'.$_GET['id_pac'].'", "'.$_GET['id_lek'].'","'.$_GET['ID_BAD'].'", "'.$_GET['termin'].'",now())';
  12. $result1=mysqli_query($mysqli,$query1) or
  13. die(mysqli_error($mysqli));

I tutaj pierwszy błąd - rezerwuje wizytę pacjenta nie tego "wyciągniętego z przeglądarki" tylko pacjenta z najwyższym ID. Muszę zostawić wartość <= bo może się zdarzyć, że nowy pacjent który dopiero co się zapisał chce od razu zarezerwować 2 wizytę.
następna część:
  1. //pecjent bez znajomości PESEL z nową wizytą
  2. if (($_GET['id_pac']=="")&&($_GET['PESEL']=="")){
  3. $query = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, kod, adres, tel, tel_kom, rok_ur) values
  4. (NULL,"'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  5. "'.$_GET['miasto'].'","'.$_GET['kod'].'",
  6. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'")';
  7. $result=mysqli_query($mysqli,$query)
  8. or die(mysqli_error($mysqli));}

tutaj pacjent wpisuje się prawidłowo do tabeli pacjenci, ale nieprawidłowo zapisuje się wizyta - tzn. w tabeli wizyta zapisuje się w dwóch wierszach. Tabela składa się z ID_WIZ, ID_PAC, ID_LEK, ID_BAD i terminu. I w pierwszym wierszu wpisują się wszystkie dane poza ID_PAC (wpisuje się 0, a w drugim wierszu jest już OK).
Taka sama sytuacja jest w ostatnim przypadku. Pacjent nowy, ale zna swój PESEL, ale znowu w tabeli wizyta 2 wiersze.
  1. //pacjent z PESEL na nową wizytę
  2. if (($_GET['id_pac']=="")&&($_GET['PESEL']>0)){
  3. $query5 = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, kod, adres, tel, tel_kom, rok_ur) values
  4. ("'.$_GET['PESEL'].'","'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  5. "'.$_GET['miasto'].'","'.$_GET['kod'].'",
  6. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'")';
  7. $result5=mysqli_query($mysqli,$query5)
  8. or die(mysqli_error($mysqli));}
  9. $pytanie1='SELECT max(id_pac) as id_pac from pacjenci';
  10. $max_pac1=mysqli_query($mysqli,$pytanie1) or die(mysqli_error($mysqli));
  11. $pacjent = mysqli_fetch_assoc($max_pac1);
  12. $pac = $pacjent['id_pac'];
  13. $query2 = 'insert into wizyta (id_pac, id_lek, id_bad, termin, new) values
  14. ("'.$pac.'","'.$_GET['id_lek'].'","'.$_GET['ID_BAD'].'", "'.$_GET['termin'].'", now())';
  15. $result1=mysqli_query($mysqli,$query2) or
  16. die(mysqli_error($mysqli));

Jak można te błędy naprawić. Z góry dzięki za pomoc.