Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]elseif - czemu nie działa
jacusek
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
jasin
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 32
Dołączył: 21.08.2008
Skąd: Toruń

Ostrzeżenie: (0%)
-----


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ę.

Ten post edytował jasin 15.12.2009, 19:10:01


--------------------
Go to the top of the page
+Quote Post
jacusek
post
Post #3





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Pilsener
post
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




tak to jest najlepszy sposób, później wszystko wynika jedno z drugiego.


--------------------
Go to the top of the page
+Quote Post
jacusek
post
Post #6





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 22:30