Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mysql- dodawanie rekordów
Forum PHP.pl > Forum > Bazy danych > MySQL
pablo1121
Witam wszystkich jestem tutaj nowy. Zaczynam swoja przygodę z mysql i mam pewien problem tz stworzyłem taki kod, który ma mi rejestrować pacjentów do przychodni lekarskiej:


  1. <?php
  2.  
  3.  
  4. $db = mysql_connect("localhost", "root", "");
  5. $wb = mysql_select_db("DOCTOR2");
  6.  
  7. if (isset($_POST['checker']))
  8. {
  9.  
  10. $a=$_POST['imiep'];
  11. $b=$_POST['nazwiskop'];
  12. $c=$_POST['pesel'];
  13. $d=$_POST['imiel'];
  14. $e=$_POST['nazwiskol'];
  15. $f=$_POST['specjalizacja'];
  16. $g=$_POST['rok'].'-'.$_POST['miesiac'].'-'.$_POST['dzien'];
  17. $data = date("Y-m-d");
  18.  
  19. if($g<=$data)
  20. {
  21.  
  22. echo"<p id=\"text4\">Błędnie podana data</p>";
  23. die;
  24. }
  25. $czas =date('H:i:s');
  26. $h=$_POST['godzina'].':'.$_POST['minuty'].':'.'00';
  27.  
  28. if(isset($_POST['zarejestruj']))
  29. {
  30.  
  31. $query = 'SET NAMES UTF8; ';
  32. mysql_query($query);
  33.  
  34. $query = 'SET CHARACTER SET UTF8; ';
  35. mysql_query($query);
  36.  
  37. if($a=='' or $b=='' or $c=='' or $d=='' or $e=='' or $f=='' )
  38. {
  39. echo"<p id=\"text4\">Musisz wypełnić wszystkie pola </p>";
  40. }
  41. else
  42. {
  43. $wynik1 = mysql_query("SELECT idPacjent FROM Pacjent WHERE Imiep='$a' and Nazwiskop='$b' and Pesel='$c';") or die('ZŁE ZAPYTANIE 1');
  44. $i= mysql_fetch_assoc($wynik1);
  45. $k=$i['idPacjent'];
  46.  
  47. $wynik2 = mysql_query("SELECT idLekarz FROM Lekarz WHERE Imie='$d' and Nazwisko='$e' and Specjalizacja='$f';") or die('ZŁE ZAPYTANIE 2');
  48. $j= mysql_fetch_assoc($wynik2);
  49. $l=$j['idLekarz'];
  50.  
  51. $wynik3 = mysql_query("SELECT * FROM Wizyta WHERE Data_wizyty='$g' and Godzina_wizyty='$h' and Lekarz_idLekarz='$l' and Pacjent_idPacjent='$k' ;") or die('ZŁE ZAPYTANIE 3');
  52. $t=mysql_num_rows($wynik3);
  53.  
  54. if($t==0)
  55. {
  56.  
  57. $wynik3 = mysql_query("INSERT INTO Wizyta, pacjent, lekarz (idWizyta, Data_wizyty, Godzina_wizyty, Lekarz_idLekarz, Pacjent_idPacjent) VALUES ('' , '$g', '$h', $l, $k)")or die ('ZŁE ZAPYTANIE 4');
  58. $wynik4 = mysql_query("SELECT idWizyta, Data_wizyty, Godzina_wizyty, Pesel, Nazwiskop, Imiep, Nazwisko, idGabinetu FROM Wizyta, Lekarz, Pacjent, Termin WHERE Data_wizyty='$g' and Godzina_wizyty='$h' and Lekarz='$l' and Pacjent='$k' and idPacjent='$k' and idLekarz='$l' and idLekarz=idLekarza; ")or die('ZŁE ZAPYTANIE 5');
  59. echo "<br /><table cellpadding=\"2\" border=4 >";
  60. echo "<tr>";
  61. echo "<TD width=10% BGCOLOR=SKYBLUE><font color=black><b>id Wizyty</b></font></td>";
  62. echo "<TD width=10% BGCOLOR=SKYBLUE><font color=black><b>Data wizyty</b></font></td>";
  63. echo "<TD width=10% BGCOLOR=SKYBLUE><font color=black><b>Godzina wizyty</b></font></td>";
  64. echo "<TD width=10% BGCOLOR=SKYBLUE><font color=black><b>Nazwisko lekarza</b></font></td>";
  65. echo "<TD width=10% BGCOLOR=SKYBLUE><font color=black><b>Gabinet</b></font></td>";
  66. echo "<TD width=10% BGCOLOR=SKYBLUE><font color=black><b>Pesel pacjenta</b></font></td>";
  67. echo "<TD width=10% BGCOLOR=SKYBLUE><font color=black><b>Imie i Nazwisko pacjenta</b></font></td>";
  68. echo "<tr>";
  69.  
  70. $r = mysql_fetch_assoc($wynik4);
  71.  
  72. echo"<tr>";
  73. echo"<td BGCOLOR=burlywood>".$r['idWizyta']."</td>";
  74. echo"<td BGCOLOR=burlywood>".$r['Data_wizyty']."</td>";
  75. echo"<td BGCOLOR=burlywood>".$r['Godzina_wizyty']."</td>";
  76. echo"<td BGCOLOR=burlywood>".$r['Nazwisko']."</td>";
  77. echo"<td BGCOLOR=burlywood>".$r['idGabinetu']."</td>";
  78. echo"<td BGCOLOR=burlywood>".$r['Pesel']."</td>";
  79. echo"<td BGCOLOR=burlywood>".$r['Imiep'].' '.$r['Nazwiskop']."</td>";
  80. echo"</tr>";
  81. echo"</table>";
  82. }
  83. else
  84. {
  85. echo "<p id=\"text4\">Niestety wybrany prez ciebie termin jest już zajęty</p><br />";
  86. }
  87. }
  88. }
  89. }
  90. ?>
  91.  
  92. </div>
  93. </body>
  94. </html>
  95. <?php
  96. if(!$db)
  97. {
  98.  
  99. print "<p id=\"text4\">Wystapil blad przy łączeniu z bazą danych</p>";
  100. }
  101. if(!$wb)
  102. {
  103. print(" <p id=\"text4\">Nie znaleziono bazy danych </p>");
  104. }
  105. ?>


Na mojej podstronie wyrzuca mi błąd w kodzie:

  1. $wynik3 = mysql_query("SELECT * FROM Wizyta WHERE Data_wizyty='$g' and Godzina_wizyty='$h' and Lekarz_idLekarz='$l' and Pacjent_idPacjent='$k' ;") or die('ZŁE ZAPYTANIE 3');
  2. $t=mysql_num_rows($wynik3);
  3.  
  4. if($t==0)
  5. {
  6.  
  7. $wynik3 = mysql_query("INSERT INTO Wizyta, pacjent, lekarz (idWizyta, Data_wizyty, Godzina_wizyty, Lekarz_idLekarz, Pacjent_idPacjent) VALUES ('' , '$g', '$h', $l, $k)")or die ('ZŁE ZAPYTANIE 4');
  8. $wynik4 = mysql_query("SELECT idWizyta, Data_wizyty, Godzina_wizyty, Pesel, Nazwiskop, Imiep, Nazwisko, idGabinetu FROM Wizyta, Lekarz, Pacjent, Termin WHERE Data_wizyty='$g' and Godzina_wizyty='$h' and Lekarz='$l' and Pacjent='$k' and idPacjent='$k' and idLekarz='$l' and idLekarz=idLekarza; ")or die('ZŁE ZAPYTANIE 5');


Myślę ze może to być spowodowane tym ze poleceniem INSERT INTO próbuje zapisać dane do wielu tabel...
Możecie mi podpowiedzieć jak ten błąd zniwelować...

Dodam ze posiadam bazę danych z następującymi tabelami:


  1. Adres
  2. idAdres PRIMARY KEY
  3. Miasto
  4. Wojewodztwo
  5. Adres_zamieszkania
  6.  
  7. Gabinet
  8. idGabinet PRIMARY KEY
  9. Rodzaj_gabinetu
  10.  
  11.  
  12. Lekarz
  13. idLekarz PRIMARY KEY
  14. Specjalizacja_idSpecjalizacja
  15. Imie
  16. Nazwisko
  17. Miasto
  18. Adres_zamieszkania
  19. Kod_pocztowy
  20. Numer_telefonu
  21. INDEX Lekarz_FKIndex1(Specjalizacja_idSpecjalizacja)
  22.  
  23.  
  24. Pacjent
  25. idPacjent PRIMARY KEY
  26. Adres_idAdres
  27. Imie
  28. nazwisko
  29. Pesel
  30. Kod_pocztowy
  31. Numer_telefonu
  32. Grupa_krwi
  33. Numer_ubezpieczenia
  34. Uczulenie
  35. INDEX Pacjent_FKIndex1(Adres_idAdres)
  36.  
  37.  
  38. Specjalizacja
  39. idSpecjalizacja PRIMARY KEY,
  40. Nazwa_specjalizacji,
  41.  
  42. Termin
  43. idTermin PRIMARY KEY
  44. Lekarz_idLekarz
  45. Gabinet_idGabinet
  46. Dzien_tygodnia
  47. Godzina_rozpoczecia
  48. Godzina_zakonczenia
  49. INDEX Termin_FKIndex2(Gabinet_idGabinet),
  50. INDEX Termin_FKIndex2(Lekarz_idLekarz)
  51.  
  52.  
  53. Wizyta
  54. idWizyta PRIMARY KEY
  55. Pacjent_idPacjent
  56. Lekarz_idLekarz
  57. Data_wizyty
  58. Godzina_wizyty
  59. INDEX Wizyta_FKIndex1(Lekarz_idLekarz),
  60. INDEX Wizyta_FKIndex2(Pacjent_idPacjent)

bpskiba
1 Nie można wykonać inserta na dwóch tabelach (zaraz odezwą się forumowicze pisząc, że jednak można. Na Twoim poziomie przyjmij jednak, że nie da rady)
2 Próbujesz wpisać pusty ciąg '' jako id_wizyta, i to jest błąd. Ustaw w tabeli wizyta autoincrement i korzystaj np z tej funkcji http://www.php.net/manual/pl/function.mysql-insert-id.php
pablo1121
Mógłbyś bardziej dokładnie powiedzieć jak tej funkcji użyć, gdzie? Zlikwidować ogóle to id wizyta, które przypisuje ''?!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.