Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyjście z pętli
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam problem z wyjściem z zakończeniem działania pętli.
  1. <?php
  2. include('connect2.php');
  3. echo "<h1><center>Znajdź pacjenta</center></h1>\n";
  4. $blok = "
  5. <center><form method=\"GET\" form action=\"".$_SERVER["PHP_SELF"]."\">
  6. <p><strong>PESEL</strong><br/>
  7. <input type=\"text\" name=\"PESEL\" size=\"30\" maxlength=\"11\"><br\>
  8. <p><strong>Nazwisko</strong><br/>
  9. <input type=\"text\" name=\"nazwisko\" size=\"30\" maxlength=\"30\"><br\>
  10. <p><strong>Imię</strong><br/>
  11. <input type=\"text\" name=\"imie\" size=\"30\" maxlength=\"30\"></p>
  12. <p><strong>Miasto</strong><br/>
  13. <input type=\"text\" name=\"miasto\" size=\"30\" maxlength=\"30\"></p>
  14. <p><input type=\"submit\" name=\"submit\" value=\"Szukaj\"></p></center>";
  15. echo $blok;
  16. $sql = 'select id_pac, PESEL, nazwisko, imie, miasto, adres, tel, tel_kom, rok_ur from pacjenci where
  17. nazwisko =\''.$_GET['nazwisko'].'\' or miasto=\''.$_GET['miasto'].
  18. '\' or imie =\''.$_GET['imie'].'\' or PESEL=\''.$_GET['PESEL'].'\'order by nazwisko limit 3';
  19. $rez= mysqli_query($mysqli, $sql);
  20. echo "<TABLE CELLPADDING=5 BORDER=1>";
  21. echo "<TR>
  22. <TD><B>NAZWISKO</B></TD>
  23. <TD><B>IMIE</B></TD>
  24. <TD><B>PESEL</B></TD>
  25. <TD><B>MIASTO</B></TD>
  26. <TD><B>adres</B></TD>
  27. <TD><B>tel</B></TD>
  28. <TD><B>tel_kom</B></TD>
  29. <TD><B>rok_ur</B></TD>
  30. <TD><B>uaktualnij</B></TD>
  31. </TR>";
  32. while ($rekord = mysqli_fetch_array($rez, MYSQLI_ASSOC)) {
  33. $id_pac = $rekord['id_pac'];
  34. $nazwisko = $rekord['nazwisko'];
  35. $imie = $rekord['imie'];
  36. $PESEL = $rekord['PESEL'];
  37. $miasto = $rekord['miasto'];
  38. $adres = $rekord['adres'];
  39. $tel=$rekord['tel'];
  40. $tel_kom = $rekord['tel_kom'];
  41. $rok_ur = $rekord['rok_ur'];
  42. echo "<TR>";
  43. echo "<TD>$nazwisko</TD><TD>$imie</TD><TD>$PESEL</TD><TD>$miasto</TD><TD>$adres</TD><TD>$tel</TD>
  44. <TD>$tel_kom</TD><TD>$rok_ur</TD>";
  45. echo "<TD><A HREF=\"3.php?action=update&id_pac=$id_pac\">aktualizacja</A></TD>";
  46. echo "</TR>";
  47. }
  48. echo "</TABLE>";
  49. if ($_GET["action"]=='popraw') { // poprawianie rekordu
  50. $query = 'UPDATE pacjenci SET nazwisko=\''.$_GET['nazwisko'].'\', Imie=\''.$_GET['imie'].'\', miasto=\''.$_GET['miasto'].'\',
  51. tel=\''.$_GET['tel'].'\', tel_kom=\''.$_GET['tel_kom'].'\' WHERE id_pac='.(int)$_GET['id_pac'];
  52. $result=mysqli_query($mysqli,$query);
  53. mysqli_close($mysqli);
  54. echo "Gratulacje zmieniłeś rekord";
  55. }
  56.  
  57. if ($_GET["action"] == 'update') { // przygotowanie do poprawek
  58. $query1 = 'SELECT id_pac, nazwisko, imie, miasto, adres, tel, tel_kom FROM pacjenci where id_pac='.(int)$_GET['id_pac'];
  59. $result1 = mysqli_query($mysqli,$query1);
  60. $rekord = mysqli_fetch_array($result1,MYSQLI_ASSOC);
  61. $id_pac = $rekord['id_pac'];
  62. $nazwisko = $rekord['nazwisko'];
  63. $imie = $rekord['imie'];
  64. $miasto = $rekord['miasto'];
  65. $adres = $rekord['adres'];
  66. $tel=$rekord['tel'];
  67. $tel_kom = $rekord['tel_kom'];
  68. echo '<FORM METHOD="GET">Poprawa rekordu:';
  69. echo '<INPUT TYPE="hidden" NAME="action" VALUE="popraw">';
  70. echo '<INPUT TYPE="hidden" NAME="id_pac" VALUE="'.$id_pac.'">
  71. <TABLE>';
  72. echo '<TR><TD>Nazwisko:</TD><TD><INPUT TYPE="text" ';
  73. echo 'NAME="nazwisko" VALUE="'.$nazwisko.'"></TD></TR><TR><TD>Imie:';
  74. echo '</TD><TD><INPUT TYPE="text" NAME="imie" VALUE="'.$imie;
  75. echo '"></TD></TR><TR><TD>Miasto:</TD><TD><INPUT TYPE="text"';
  76. echo 'NAME="miasto" VALUE="'.$miasto.'"></TD></TR>';
  77. echo '<TR><TD>Adres:</TD><TD><INPUT TYPE="text" ';
  78. echo 'NAME="adres" VALUE="'.$adres.'"></TD></TR>';
  79. echo '<TR><TD>TEL:</TD><TD><INPUT TYPE="text" ';
  80. echo 'NAME="tel" VALUE="'.$tel.'"></TD></TR>';
  81. echo '<TR><TD>TEL_kom:</TD><TD><INPUT TYPE="text" ';
  82. echo 'NAME="tel_kom" VALUE="'.$tel_kom.'"></TD></TR>';
  83. echo '</TABLE><INPUT TYPE="submit" VALUE="Popraw"></FORM>';
  84. }
  85. ?>

No właśnie. Po wykonaniu całości - czyli update'u skrypt odpytuje z bazy jeszcze raz dając nową tablę wynikową z szczerze mówiąc dość dziwnymi wynikami. Jak można - po dokonaniu update'u "zmusić" plik do przejścia do części wyjściowej - czyli w tym przypadku pliku 3.php i ponownego wyszukiwania.
Z góry dzięki za pomoc.
darko
Jak chcesz wyskoczyć z pętli to dajesz break;

Przekierowanie (headera już nie wyślesz):
echo "<script>window.location.href = '3.php';</script>"; exit;
jacusek
No właśnie troszkę mi się pokręciło gdzie tego break wstawić. Bo że tak się przerywa to wiem, a gdziekolwiek tego nie robię (przynajmniej tam gdzie wydaje się że powinienem wstawić) dostaję taki błąd:
Cannot break/continue 1 level in on line ....
Więc co dalej. Gdzie tego szukać?
darko
Wiesz co, może napisz, co chcesz zrobić, co jest celem tej rozmowy, bo może wcale nie chodzi o wyskoczenie z pętli.
jacusek
Witam. Chodzi mi o to, ze po wciśnięciu paska aktualizacja i później poprawieniu rekordu pojawiają mi się w tabelce inne nie związane rekordy. I właśnie tego ostatniego etapu chciałbym uniknąć. Chciałbym żeby po poprawieniu wracał lub wyświetlał stronę tylko z wyszukiwaniem. Szukam błędu i cały czas nie mogę go znaleźć.
darko
Nudziło mi się, więc podaję gotowca:

  1. // TU WPISZ NAZWĘ TEGO SKRYPTU:
  2. $file = "forum24.php";
  3. //include('connect2.php');
  4. $rekord = array(
  5. "id_pac"=>"test1",
  6. "nazwisko" => "test2",
  7. "imie" => "test3",
  8. "PESEL" => "test4",
  9. "miasto" => "test5",
  10. "adres" => "test6",
  11. "tel" => "test7",
  12. "tel_kom" => "test8",
  13. "rok_ur" => "test9"
  14. );
  15.  
  16. switch($_GET["action"]) {
  17.  
  18. case "popraw":
  19. // poprawianie rekordu
  20. $query = 'UPDATE pacjenci SET nazwisko=\''.$_GET['nazwisko'].'\', Imie=\''.$_GET['imie'].'\', miasto=\''.$_GET['miasto'].'\',
  21. tel=\''.$_GET['tel'].'\', tel_kom=\''.$_GET['tel_kom'].'\' WHERE id_pac='.(int)$_GET['id_pac'];
  22. //$result=mysqli_query($mysqli,$query);
  23. //mysqli_close($mysqli);
  24. echo "<script>alert('Gratulacje zmieniles rekord');</script>";
  25. echo("<script>window.location.href = '$file';</script>");
  26.  
  27. break;
  28.  
  29. case "update":
  30. // przygotowanie do poprawek
  31. $query1 = 'SELECT id_pac, nazwisko, imie, miasto, adres, tel, tel_kom FROM pacjenci where id_pac='.(int)$_GET['id_pac'];
  32. //$result1 = mysqli_query($mysqli,$query1);
  33. //$rekord = mysqli_fetch_array($result1,MYSQLI_ASSOC);
  34. $id_pac = $rekord['id_pac'];
  35. $nazwisko = $rekord['nazwisko'];
  36. $imie = $rekord['imie'];
  37. $miasto = $rekord['miasto'];
  38. $adres = $rekord['adres'];
  39. $tel=$rekord['tel'];
  40. $tel_kom = $rekord['tel_kom'];
  41. echo '<FORM METHOD="GET">Poprawa rekordu:';
  42. echo '<INPUT TYPE="hidden" NAME="action" VALUE="popraw">';
  43. echo '<INPUT TYPE="hidden" NAME="id_pac" VALUE="'.$id_pac.'">
  44. <TABLE>';
  45. echo '<TR><TD>Nazwisko:</TD><TD><INPUT TYPE="text" ';
  46. echo 'NAME="nazwisko" VALUE="'.$nazwisko.'"></TD></TR><TR><TD>Imie:';
  47. echo '</TD><TD><INPUT TYPE="text" NAME="imie" VALUE="'.$imie;
  48. echo '"></TD></TR><TR><TD>Miasto:</TD><TD><INPUT TYPE="text"';
  49. echo 'NAME="miasto" VALUE="'.$miasto.'"></TD></TR>';
  50. echo '<TR><TD>Adres:</TD><TD><INPUT TYPE="text" ';
  51. echo 'NAME="adres" VALUE="'.$adres.'"></TD></TR>';
  52. echo '<TR><TD>TEL:</TD><TD><INPUT TYPE="text" ';
  53. echo 'NAME="tel" VALUE="'.$tel.'"></TD></TR>';
  54. echo '<TR><TD>TEL_kom:</TD><TD><INPUT TYPE="text" ';
  55. echo 'NAME="tel_kom" VALUE="'.$tel_kom.'"></TD></TR>';
  56. echo '</TABLE><INPUT TYPE="submit" VALUE="Popraw"></FORM>';
  57.  
  58. break;
  59.  
  60. default:
  61. echo "<h1><center>Znajdź pacjenta</center></h1>\n";
  62. $blok = "
  63. <center><form method=\"GET\" form action=\"".$file."\">
  64. <p><strong>PESEL</strong><br/>
  65. <input type=\"text\" name=\"PESEL\" size=\"30\" maxlength=\"11\"><br\>
  66. <p><strong>Nazwisko</strong><br/>
  67. <input type=\"text\" name=\"nazwisko\" size=\"30\" maxlength=\"30\"><br\>
  68. <p><strong>Imię</strong><br/>
  69. <input type=\"text\" name=\"imie\" size=\"30\" maxlength=\"30\"></p>
  70. <p><strong>Miasto</strong><br/>
  71. <input type=\"text\" name=\"miasto\" size=\"30\" maxlength=\"30\"></p>
  72. <p><input type=\"submit\" name=\"submit\" value=\"Szukaj\"></p></center>";
  73. echo $blok;
  74. $sql = 'select id_pac, PESEL, nazwisko, imie, miasto, adres, tel, tel_kom, rok_ur from pacjenci where
  75. nazwisko =\''.$_GET['nazwisko'].'\' or miasto=\''.$_GET['miasto'].
  76. '\' or imie =\''.$_GET['imie'].'\' or PESEL=\''.$_GET['PESEL'].'\'order by nazwisko limit 3';
  77. //$rez= mysqli_query($mysqli, $sql);
  78. echo "<TABLE CELLPADDING=5 BORDER=1>";
  79. echo "<TR>
  80. <TD><B>NAZWISKO</B></TD>
  81. <TD><B>IMIE</B></TD>
  82. <TD><B>PESEL</B></TD>
  83. <TD><B>MIASTO</B></TD>
  84. <TD><B>adres</B></TD>
  85. <TD><B>tel</B></TD>
  86. <TD><B>tel_kom</B></TD>
  87. <TD><B>rok_ur</B></TD>
  88. <TD><B>uaktualnij</B></TD>
  89. </TR>";
  90. //while ($rekord = mysqli_fetch_array($rez, MYSQLI_ASSOC)) {
  91. $id_pac = $rekord['id_pac'];
  92. $nazwisko = $rekord['nazwisko'];
  93. $imie = $rekord['imie'];
  94. $PESEL = $rekord['PESEL'];
  95. $miasto = $rekord['miasto'];
  96. $adres = $rekord['adres'];
  97. $tel=$rekord['tel'];
  98. $tel_kom = $rekord['tel_kom'];
  99. $rok_ur = $rekord['rok_ur'];
  100. echo "<TR>";
  101. echo "<TD>$nazwisko</TD><TD>$imie</TD><TD>$PESEL</TD><TD>$miasto</TD><TD>$adres</TD><TD>$tel</TD>
  102. <TD>$tel_kom</TD><TD>$rok_ur</TD>";
  103. echo "<TD><A HREF=\"$file?action=update&id_pac=$id_pac\">aktualizacja</A></TD>";
  104. echo "</TR>";
  105. //}
  106. echo "</TABLE>";
  107.  
  108. break;
  109. }


Przeczytaj ten kod, odkomentuj, co trzeba, usuń tablicę $rekord z początku pliku, ustaw faktyczną nazwę zmiennej $file i rób wcięcia w kodzie!
jacusek
WIELKIE DZIĘKI yahoo.gif . Na case nie wpadłem, ale cały czas się uczę i widzę że dłuuuuuuuuuuga droga przede mną. Dołożyłem sobie jeszcze przycisk że po wyszukaniu pacjenta przenosi mnie do formularza rezerwacji.
Prawie wszystko działa, ale nie wiedzieć czemu cały czas pojawia mi się nazwisko 1 człowieka. Nawet tylko przy wywołaniu strony. Ale to już najmniejszy problem w tym wszystkim.
Pozdrawiam
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.