Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]elseif - czemu nie działa
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam taki oto skrypcik:
  1. <?php
  2. include('connect2.php');
  3. if(empty($_GET['nazwisko'])||empty($_GET['imie'])||empty($_GET['id_lek'])
  4. ||empty($_GET['ID_BAD'])||empty($_GET['termin'])){
  5. echo "<center><b>!!!!SPRAWDŹ CZY WYPEŁNIŁEŚ WSZYSTKIE OBOWIĄZKOWE POLA!!!!!</b></center>";
  6. echo "<center><h2><a href=\"rezwizyta.php\">Wróć do REZERWACJI</a></h2></center>";
  7. }
  8. else{
  9. $pytanie='select max(id_pac) as id_pac from pacjenci';
  10. if ($res=mysqli_query($mysqli,$pytanie)){
  11. while ($row=mysqli_fetch_row($res))
  12. $max=$row['id_pac'];
  13. //jeżeli pacjent ma już id - przeniesione dane z wyszukiwarki
  14. if (isset($_GET['id_pac'])){
  15. $query1 = 'insert into wizyta (id_pac,id_lek, id_bad, termin, new) values
  16. ("'.$_GET['id_pac'].'", "'.$_GET['id_lek'].'","'.$_GET['ID_BAD'].'", "'.$_GET['termin'].'",now())';
  17. $result1=mysqli_query($mysqli,$query1) or
  18. die(mysqli_error($mysqli));}
  19. }
  20. //pacjent z PESEL na nową wizytę
  21. elseif(empty($_GET['id_pac'])&&(isset($_GET['PESEL']))){
  22. $query = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, kod, adres, tel, tel_kom, rok_ur) values
  23. ("'.$_GET['PESEL'].'","'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  24. "'.$_GET['miasto'].'","'.$_GET['kod'].'",
  25. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'")';
  26. $result=mysqli_query($mysqli,$query)
  27. or die(mysqli_error($mysqli));
  28. $pytanie1='SELECT max(id_pac) as id_pac from pacjenci';
  29. $max_pac1=mysqli_query($mysqli,$pytanie1) or die(mysqli_error($mysqli));
  30. $pacjent = mysqli_fetch_assoc($max_pac1);
  31. $pac = $pacjent['id_pac'];}
  32. $query2 = 'insert into wizyta (id_pac, id_lek, id_bad, termin, new) values
  33. ("'.$pac.'","'.$_GET['id_lek'].'","'.$_GET['ID_BAD'].'", "'.$_GET['termin'].'", now())';
  34. $result1=mysqli_query($mysqli,$query2) or
  35. die(mysqli_error($mysqli));
  36. }
  37. //pacjent bez PESEL na nową wizytę
  38. elseif(empty($_GET['PESEL'])&&(empty($_GET['id_pac']))){
  39. $query = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, kod, adres, tel, tel_kom, rok_ur) values
  40. (NULL,"'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  41. "'.$_GET['miasto'].'","'.$_GET['kod'].'",
  42. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'")';
  43. $result=mysqli_query($mysqli,$query)
  44. or die(mysqli_error($mysqli));}
  45. }
  46.  
  47. $query4= 'select nazwisko_imie from wizyta inner join lekarze1 using (id_lek) inner join pacjenci using (id_pac)';
  48. $rez4= mysqli_query($mysqli, $query4);
  49. while ($nowaTab=mysqli_fetch_array($rez4,MYSQLI_ASSOC))
  50. {
  51. $doktor=$nowaTab['nazwisko_imie'];
  52. $dr=$doktor;
  53. }
  54. echo '<center>';
  55. echo 'Gratujację właśnie umówiłeś wizytę </h4><br/>';
  56. echo 'Nazwisko pacjecnta: <b>' .$_GET['nazwisko'].'</b><br/>';
  57. echo 'Imię pacjecnta: <b>' .$_GET['imie'].'</b><br/>';
  58. echo 'termin wizyty: <b>' .$_GET['termin'].'</b><br/>';
  59. echo 'Lekarz: <b>' .$dr.'</b>';
  60. echo '</center>';
  61. echo "<center><h2><a href=\"menu.html\">Wróć do MENU</a></h2></center>";
  62. echo "<center><h2><a href=\"rezwizyta.php\">Umów wizytę</a></h2></center>";}
  63. ?>

Jest to skrypt wysyłający dane z formularza. I tutaj pytanie - dlaczego nie działa mi elseif. Eclipse wyrzuca mi błąd na poziomie składni przy 38 linijce unexpected elseif. No właśnie nie rozumiem za bardzo dlaczego?
Z góry dzięki za pomoc.
jasin
Bo "rąbnąłeś" się w klamrach ... Ten elsif odnosi się do: (wyciąłem środek bloku by było "jaśniej")
  1. if(empty($_GET['nazwisko'])||empty($_GET['imie'])||empty($_GET['id_lek'])
  2. ||empty($_GET['ID_BAD'])||empty($_GET['termin'])){
  3.  
  4. }
  5. else{
  6.  
  7. }
  8. //pacjent bez PESEL na nową wizytę
  9. elseif(empty($_GET['PESEL'])&&(empty($_GET['id_pac']))){


a w php nie ma kontrukcji if ... else ... elseif

w linii 18 masz zbędną klamrę.
jacusek
Dzięki za pomoc składniowo pomogło, ale mam jednak teraz problem merytoryczny
  1. //jeżeli pacjent ma już id - przeniesione dane z wyszukiwarki
  2. if(isset($_GET['id_pac'])){
  3. $query1 = 'insert into wizyta (id_pac,id_lek, id_bad, termin, new) values
  4. ("'.$_GET['id_pac'].'", "'.$_GET['id_lek'].'","'.$_GET['ID_BAD'].'", "'.$_GET['termin'].'",now())';
  5. $result1=mysqli_query($mysqli,$query1) or
  6. die(mysqli_error($mysqli));}
  7.  
  8. //pacjent z PESEL na nową wizytę
  9. elseif(empty($_GET['id_pac'])&&(isset($_GET['PESEL']))){
  10. $query = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, kod, adres, tel, tel_kom, rok_ur) values
  11. ("'.$_GET['PESEL'].'","'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  12. "'.$_GET['miasto'].'","'.$_GET['kod'].'",
  13. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'")';
  14. $result=mysqli_query($mysqli,$query)
  15. or die(mysqli_error($mysqli));
  16. if(isset($result)){
  17. $pytanie1='SELECT max(id_pac) as id_pac from pacjenci';
  18. $max_pac1=mysqli_query($mysqli,$pytanie1) or die(mysqli_error($mysqli));
  19. $pacjent = mysqli_fetch_assoc($max_pac1);
  20. $pac = $pacjent['id_pac'];
  21. $query2 = 'insert into wizyta (id_pac, id_lek, id_bad, termin, new) values
  22. ("'.$pac.'","'.$_GET['id_lek'].'","'.$_GET['ID_BAD'].'", "'.$_GET['termin'].'", now())';
  23. $result1=mysqli_query($mysqli,$query2) or
  24. die(mysqli_error($mysqli));}
  25. }
  26.  
  27. //pacjent bez PESEL na nową wizytę
  28. elseif(empty($_GET['PESEL'])&&(empty($_GET['id_pac']))){
  29. $query = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, kod, adres, tel, tel_kom, rok_ur) values
  30. (NULL,"'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  31. "'.$_GET['miasto'].'","'.$_GET['kod'].'",
  32. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'")';
  33. $result=mysqli_query($mysqli,$query)
  34. or die(mysqli_error($mysqli));
  35. if(isset($result)){
  36. $pytanie1='SELECT max(id_pac) as id_pac from pacjenci';
  37. $max_pac1=mysqli_query($mysqli,$pytanie1) or die(mysqli_error($mysqli));
  38. $pacjent = mysqli_fetch_assoc($max_pac1);
  39. $pac = $pacjent['id_pac'];
  40. $query2 = 'insert into wizyta (id_pac, id_lek, id_bad, termin, new) values
  41. ("'.$pac.'","'.$_GET['id_lek'].'","'.$_GET['ID_BAD'].'", "'.$_GET['termin'].'", now())';
  42. $result1=mysqli_query($mysqli,$query2) or
  43. die(mysqli_error($mysqli));
  44. }
  45. }

Ech no właśnie między linikami 9-25 i 28-45 wykonuje mi się tak jakby połowa funkcji. Co ciekawe wydaje mi się że część drugiej części (tylko i wyłącznie $query2). Wbijają wszystkie informacje do tab. wizyta, ale przy id_pac podają 0. No i nie tworzą rekordu i tabeli pacjenci.
Pilsener
Niepotrzebnie komplikujesz kod, nie używaj else if, ja tego nie używam i jakoś żyję, po prostu rozpisuje skrypt na etapy i algorytm działa np. tak:

1. Wykonuje się etap 1
2. Sprawdzmy, czy wykonał się etap 1, jeśli tak to robimy etap 2
3. Sprawdzamy, czy wykonał się etap 2, jeśli tak to robimy etap 3

W ten sposób rozbijasz algorytm na "drzewo" (polecam case, by podzielić kod na wygodne mniejsze fragmenty):

etap1
--etap 1.1
----etap 1.1.1
----etap 1.1.2
-- etap 1.2
etap2

Kod który napisałeś jest dla mnie nieczytelny i niezrozumiały, skąd mam wiedzieć jak to ma działać i jaki efekt chcesz osiągnąć? Twój opis problemu dużo nie pomaga, jeśli chcesz zrobić jakąś akcję dla wybranych warunków to wystarczą same ify:
1. Jeśli id_pac i pesel nie istnieją to coś tam
2. Jeśli id_pac nie istnieje ale pesel istnieje to coś tam
3. Analogicznie

Jak patrzę na stado else ifów to nie ogarniam tego.
piotrooo89
tak to jest najlepszy sposób, później wszystko wynika jedno z drugiego.
jacusek
Dzięki za rady. Na razie zostałem przy elseif. W sumie w tym momencie działa. Próbowałem to robić na takim case:
  1. switch($_GET["action"]){
  2. case 'id':
  3. if (isset($_GET['id_pac'])){
  4. $query1 = 'insert into wizyta_test (id_pac,id_lek, id_bad, termin, new) values
  5. ( "'.$_GET['id_pac'].'", "'.$_GET['id_lek'].'","'.$_GET['ID_BAD'].'", "'.$_GET['termin'].'",now())';
  6. $result1=mysqli_query($mysqli,$query1) or
  7. die(mysqli_error($mysqli));}else{
  8. break;
  9. }
  10. case "PESEL": //nowy pacjent z PESEL
  11. if (!isset($_GET['id_pac'])){
  12. $query = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, kod, adres, tel, tel_kom, rok_ur) values
  13. ("'.$_GET['PESEL'].'","'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  14. "'.$_GET['miasto'].'","'.$_GET['kod'].'",
  15. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'")';
  16. $result=mysqli_query($mysqli,$query)
  17. or die(mysqli_error($mysqli));
  18. $pytanie1='select max(id_pac) from pacjenci';
  19. $max_pac1=mysqli_query($mysqli,$pytanie) or die(mysqli_error($mysqli));
  20. $pacjent = mysqli_fetch_assoc($max_pac1);
  21. $pac = $pacjent["id_pac"];
  22. $query2 = 'insert into wizyta_test (id_pac, id_lek, id_bad, termin, new) values
  23. ("'.$pac.'","'.$_GET['id_lek'].'","'.$_GET['id'].'", "'.$_GET['data'].'", now())';
  24. $result1=mysqli_query($mysqli,$query2) or
  25. die(mysqli_error($mysqli));}else{
  26. break;
  27. }
  28. default://nowy pacjent bez PESEL
  29. if ((!isset($_GET['id_pac']))&&((!isset($_GET['id_pac'])))){
  30. $query = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, kod, adres, tel, tel_kom, rok_ur) values
  31. ("'.$_GET['PESEL'].'","'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  32. "'.$_GET['miasto'].'","'.$_GET['kod'].'",
  33. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'")';
  34. $result=mysqli_query($mysqli,$query)
  35. or die(mysqli_error($mysqli));
  36. $pytanie1='SELECT max(id_pac) as id_pac from pacjenci';
  37. $max_pac1=mysqli_query($mysqli,$pytanie1) or die(mysqli_error($mysqli));
  38. $pacjent = mysqli_fetch_assoc($max_pac1);
  39. $pac = $pacjent['id_pac'];
  40. $query2 = 'insert into wizyta (id_pac, id_lek, id_bad, termin, new) values
  41. ("'.$pac.'","'.$_GET['id_lek'].'","'.$_GET['ID_BAD'].'", "'.$_GET['termin'].'", now())';
  42. $result1=mysqli_query($mysqli,$query2) or
  43. die(mysqli_error($mysqli));}else{
  44. break;
  45. }
  46. }
  47. ?>

No właśnie taki case nie pomógł - w ogóle się nic nie działa.
Jestem dość początkujący więc stąd moje pytania.
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.