Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] include i wyszukiwarka- problem
Forum PHP.pl > Forum > Przedszkole
zum
Witam.
Mam następujący problem. Stworzyłem projekt przychodnia, gidzie mam wyszukiwarkę do tabeli, w której szukana treść jest przekazywana przez formularz
  1. print "<FORM><INPUT TYPE=\"text\" NAME=\"tresc\" VALUE=\"".$_GET['tresc']."\">";
  2. print "<INPUT TYPE=\"submit\" VALUE=\"Znajdz osobe\"></FORM>";
  3. ...


Na początku skrypt wyszukiwarka jak restza stron była w osobnym pliku wraz z 'obudową' html-em, później odkryłem jednak winksmiley.jpg funkcję include no i zrobiłem tak:
  1. <?php
  2. ...
  3. <a href=&#092;"main.php?go=2\">wyswietl pacjentów</a href=\"main.php?go=2\">
  4. <li><a href=&#092;"main.php?go=3\">usuń pacjenta</a href=\"main.php?go=3\">
  5. <li><a href=&#092;"main.php?go=4\">dodaj pacjenta</a href=\"main.php?go=4\">
  6. <li><a href=&#092;"main.php?go=5\">znajdz pacjenta</a href=\"main.php?go=5\">
  7. ...
  8.  
  9. switch ($_GET['go'])
  10. {
  11. case 2:
  12. include(&#092;"show_patients.php\");
  13. break;
  14. case 3:
  15. include(&#092;"remove_patient.php\");
  16. break;
  17.  case 4:
  18. include("add_patient.php");
  19. break;
  20. case 5:
  21. include("find_patient.php");
  22. break;
  23. ...
  24. ?>


I tutaj mam problem bo o ile w tej pierwswzej wersji po wpisaniu tresci do formularza dostawałem stronę przykładowo
  1. localhost/przychodnia/find_patient.php?tresc=nowak

o tyle teraz dostaję
  1. localhost/przychodnia2/main.php?tresc=nowak

co przenosi mnie na stronę główną. Jako że moja wiedza o formularzach (o php zresztą jeszce bardziej) kuleje, nie moge wymyśleć w jaki sposób po kliknięciu na 'Znajdz osobe' wyswietlic
  1. localhost/przychodnia2/main.php?go=5&tresc=nowak
czyli to, co poprawnie wyświetla stronę z wynikiem. Za sugestie dziękuję z góry smile.gif
piotrooo89
moim zdaniem kompletnie źle to robisz... tak za przeproszeniem od dupy strony. a powiedz czy dane przechowujesz w bazie? pewnie tak. ja bym całkowicie inaczej skonstruował ten skrypt.

tu wywołujesz tablice $_GET tylko po to zeby przekierować na inna strone.
  1. <a href="main.php?go=5\">znajdz pacjenta</a href=\"main.php?go=5\">

może zrób tak:

  1. <a href="main.php?go=5\">znajdz pacjenta</a href=\"main.php?go=5\">


i po kliknieciu:

  1. <?php
  2. if ($_GET['go'] == 5)
  3. {
  4. print "<FORM action=\"find_patient.php\" method=\"get\"><INPUT TYPE=\"text\" NAME=\"tresc\" />";
  5. print "<INPUT TYPE=\"submit\" VALUE=\"Znajdz osobe\"></FORM>";
  6. }
  7. ?>


i teraz w find_patient.php:

  1. <?php
  2. echo 'osoba: '. $_GET['tresc'];
  3. ?>


to jest tylko wypisywanie tego co podałeś w formularzu... musisz jeszcze sobie obsługę w bazie zrobić...
zum
Kurcze chyba pominąłem ważną rzecz:). Te include'y są dlatego, że plik find_patient.php dodaję tylko do środkowego diva, natomiast to
  1. <li><a href="main.php?go=2">wyswietl pacjentów</a></li>
  2. <li><a href="main.php?go=3">usuń pacjenta</a></li>
  3. <li><a href="main.php?go=4">dodaj pacjenta</a></li>
  4. <li><a href="main.php?go=5">znajdz pacjenta</a></li>

jest w divie po lewej stronie, robiącym za menu. Przy Twoim pomyśle działało by ok, z tym że chciałem mieć cały ten 'layout' z divami w pliku main.php i czyste skrypty php w reszcie plików, a tak musiałbym znów w find_patient.php i pozostałych wkleić html z divami.

Dodam jescze całą treść find_patient.php bo może zapomniam jeszcze o czymś co miałoby znaczenie
  1. <?php
  2.  
  3. mysql_connect ("localhost", "root", "") or die ("Nie można połączyć się z MySQL");
  4. mysql_select_db ("przychodnia") or die ("Nie można połączyć się z bazą");
  5.  
  6.  
  7. print"<BR />";
  8. print "<FORM><INPUT TYPE=\"text\" NAME=\"tresc\" VALUE=\"".$_GET['tresc']."\">";
  9. print "<INPUT TYPE=\"submit\" VALUE=\"Znajdz osobe\"></FORM>";
  10. print "<BR />";
  11. print "<BR />";
  12. print "<BR />";
  13.  
  14. if ($_GET['tresc']) {  
  15. $query = "SELECT * FROM pacjenci WHERE ((nazwisko LIKE '%".$_GET['tresc']."%') OR (pesel LIKE '%".$_GET['tresc']."%') OR ";
  16. $query .= "(adres LIKE '%".$_GET['tresc']."%') OR (nr_tel LIKE '%".$_GET['tresc']."%')); ";
  17. $wynik = mysql_query ($query);
  18.  
  19. print "<BR />";
  20. //---WYSWIETLENIE WYNIKOW WYSZUKIWANIA-------------------------------------------
  21. print ("Znalezieni pacjenci:");
  22. print "<TABLE class = sample><TR><TH>Nazwisko</TH><TH>Imie</TH>";
  23. print "<TH>Pesel</TH><TH>Adres</TH><TH>Telefon</TH></TR>";
  24. while ($rekord = mysql_fetch_assoc ($wynik)) {
  25.  $id_pacjenta = $rekord['id_pacjenta'];
  26. $imie = $rekord['imie'];
  27. $nazwisko = $rekord['nazwisko'];
  28. $pesel = $rekord['pesel'];
  29. $adres = $rekord['adres'];
  30. $nr_tel = $rekord['nr_tel'];
  31. print "<TR><TD>$imie</TD><TD>$nazwisko</TD><TD>$pesel</TD><TD>$adres</TD><TD>$nr_tel</TD></TR>\n";
  32.  }
  33. print "</TABLE>"; 
  34. print "<BR />";
  35. print "<BR />";
  36. print "<BR />";
  37.  
  38. print ("Znalezione wizyty:");
  39. $query = "SELECT id_wizyty,nazwisko,imie,nazwa_choroby,zalecany_lek,data_wiz ";
  40. $query .= "FROM pacjenci INNER JOIN wizyty ON pacjenci.pesel = wizyty.pacjent ";
  41. $query .= "INNER JOIN choroby ON wizyty.choroba = choroby.nazwa_choroby WHERE ((nazwisko LIKE '%".$_GET['tresc']."%') OR (pesel LIKE '%".$_GET['tresc']."%') OR ";
  42. $query .= "(adres LIKE '%".$_GET['tresc']."%') OR (nr_tel LIKE '%".$_GET['tresc']."%')) "; 
  43. $query .= "GROUP BY id_wizyty; ";
  44. $wynik = mysql_query ($query);
  45.  
  46. print "<TABLE class = sample>";
  47. print "<TR><TH>Nazwisko</TH><TH>Imie</TH>";
  48. print "<TH>Choroba</TH><TH>Lek</TH><TH>Data wizyty</TH></TR>";
  49. while ($rekord = mysql_fetch_assoc ($wynik)) {
  50. $id_wizyty = $rekord['id_wizyty'];
  51. $nazwisko = $rekord['nazwisko'];
  52. $imie = $rekord['imie'];
  53. $nazwa_choroby = $rekord['nazwa_choroby'];
  54. $zalecany_lek = $rekord['zalecany_lek'];
  55. $data_wiz = $rekord['data_wiz'];
  56. print "<TR><TD>$nazwisko</TD><TD>$imie</TD><TD>$nazwa_choroby</TD><TD>$zalecany_lek</TD><TD>$data_wiz</TD></TR>\n";
  57. }
  58. print "</TABLE>";
  59.  
  60. }
  61. ?>


dla jasności wrzucę też większy kawałek main.php
  1. <div class = "wrap">
  2. <div class="leftcontent">
  3. <h1>menu</h1>
  4. <br />
  5. <ul class="menu">
  6. <li><a href="main.php?go=1">strona główna</a>
  7. </li>
  8. <li><a href="#">pacjenci</a>
  9. <ul>
  10. <li><a href="main.php?go=2">wyswietl pacjentów</a></li>
  11. <li><a href="main.php?go=3">usuń pacjenta</a></li>
  12. <li><a href="main.php?go=4">dodaj pacjenta</a></li>
  13. <li><a href="main.php?go=5">znajdz pacjenta</a></li>
  14. </ul>
  15. </li>
  16. <li><a href="#">wizyty</a>
  17. <ul>
  18. <li><a href="main.php?go=6">wyswietl wizyty</a></li>
  19. <li><a href="main.php?go=7">usuń wizytę</a></li>
  20. <li><a href="main.php?go=8">dodaj wizytę</a></li>
  21. </ul>
  22. </li>
  23. <li><a href="#">opcje</a>
  24. <ul>
  25. <li><a href="xml_generate.php">wygeneruj plik xml</a></li>
  26. <li><a href="main.php?go=10">wyloguj się</a></li>
  27. </ul>
  28. </li>
  29. </ul>
  30. </div>
  31. <div class="centercontent">
  32. <?php
  33. switch ($_GET['go'])
  34. {
  35. case 2:
  36. include("show_patients.php");
  37. break;
  38. case 3:
  39. include("remove_patient.php");
  40. break;
  41. case 4:
  42. include("add_patient.php");
  43. break;
  44. case 5:
  45. include("find_patient.php");
  46. break;
  47. case 6:
  48. include("show_visits.php");
  49. break;
  50. case 7:
  51. include("remove_visit.php");
  52. break;
  53. case 8:
  54. include("add_visit.php");
  55. break;
  56. case 9:
  57. include("xml_generate.php");
  58. break;
  59. case 10:
  60. include("logout.php");
  61. break;
  62. case 1:
  63. default:
  64. include("costam.php");
  65. }
  66. ?>
  67. </div>
  68. </div>
piotrooo89
to może zrób tak:

  1. <div class = "wrap">
  2. <div class="leftcontent">
  3. <h1>menu</h1>
  4. <br />
  5. <ul class="menu">
  6. <li><a href="main.php?go=1">strona główna</a></li>
  7. <li><a href="#">pacjenci</a>
  8. <ul>
  9. <li><a href="main.php?go=2">wyswietl pacjentów</a></li>
  10. <li><a href="main.php?go=3">usuń pacjenta</a></li>
  11. <li><a href="main.php?go=4">dodaj pacjenta</a></li>
  12. <li><a href="main.php?go=5">znajdz pacjenta</a></li>
  13. </ul>
  14. <li><a href="#">wizyty</a></li>
  15. <ul>
  16. <li><a href="main.php?go=6">wyswietl wizyty</a></li>
  17. <li><a href="main.php?go=7">usuń wizytę</a></li>
  18. <li><a href="main.php?go=8">dodaj wizytę</a></li>
  19. </ul>
  20. </li>
  21. <li><a href="#">opcje</a>
  22. <ul>
  23. <li><a href="xml_generate.php">wygeneruj plik xml</a></li>
  24. <li><a href="main.php?go=10">wyloguj się</a></li>
  25. </ul>
  26. </li>
  27. </ul>
  28. </div>
  29. <div class="centercontent">
  30. <?php
  31. if ($_GET['go']==1)
  32. {
  33. incluce('main.php');
  34. }
  35. elseif ($_GET['go']==2)
  36. {
  37. //cos
  38. }
  39. elseif ($_GET['go']==5) //szukanie pacjetów
  40. {
  41. mysql_connect ("localhost", "root", "") or die ("Nie można połączyć się z MySQL");
  42. mysql_select_db ("przychodnia") or die ("Nie można połączyć się z bazą");
  43.  
  44.  
  45. print"<BR />";
  46. print "<FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
  47. <INPUT TYPE=\"text\" NAME=\"tresc\" VALUE=\"".$_GET['tresc']."\">";
  48. print "<INPUT TYPE=\"submit\" VALUE=\"Znajdz osobe\"></FORM>";
  49. print "<BR />";
  50. print "<BR />";
  51. print "<BR />";
  52.  
  53. if ($_GET['tresc']) {  
  54. $query = "SELECT * FROM pacjenci WHERE ((nazwisko LIKE '%".$_GET['tresc']."%') OR (pesel LIKE '%".$_GET['tresc']."%') OR ";
  55. $query .= "(adres LIKE '%".$_GET['tresc']."%') OR (nr_tel LIKE '%".$_GET['tresc']."%')); ";
  56. $wynik = mysql_query ($query);
  57.  
  58. print "<BR />";
  59. //---WYSWIETLENIE WYNIKOW WYSZUKIWANIA-------------------------------------------
  60. print ("Znalezieni pacjenci:");
  61. print "<TABLE class = sample><TR><TH>Nazwisko</TH><TH>Imie</TH>";
  62. print "<TH>Pesel</TH><TH>Adres</TH><TH>Telefon</TH></TR>";
  63. while ($rekord = mysql_fetch_assoc ($wynik)) {
  64.  $id_pacjenta = $rekord['id_pacjenta'];
  65. $imie = $rekord['imie'];
  66. $nazwisko = $rekord['nazwisko'];
  67. $pesel = $rekord['pesel'];
  68. $adres = $rekord['adres'];
  69. $nr_tel = $rekord['nr_tel'];
  70. print "<TR><TD>$imie</TD><TD>$nazwisko</TD><TD>$pesel</TD><TD>$adres</TD><TD>$nr_tel</TD></TR>\n";
  71.  }
  72. print "</TABLE>"; 
  73.  
  74. }
  75.  
  76. }
zum
No tak z tym że to raczej mija się z celem bo main.php z założenia ma tylko 'includować' skrypty a nie zawierać tyle kodu w sobie.
W innych includowanych skryptach mając ten problem robilem tak (tu przykładowo mam przy tabeli z pacjentami liniki typu
  1. <A HREF=\"remove_patient.php?co=skasuj&id=$id_pacjenta\">skasuj</A>
do kasowania pacjenta z tabeli)

  1. <?php
  2. if ($_GET['co'] == 'skasuj') {
  3. $wynik = mysql_query 
  4.  ("DELETE FROM pacjenci WHERE id_pacjenta = '".$_GET['id']."';");
  5.  header("location:main.php?go=3.php");
  6. }
  7. ?>

i dzięki temu zostawało się na tej samej stronie, natomiast tutaj takie cos nie chce zadziałać.
Shili
A zapytania Ci zazwyczaj działały ze średnikiem na końcu?
Usuń ten średnik, sprawdź czy wtedy zadziała.
zum
Z zapytaniami nie ma problemu, wszytskie skrypty które je wrzucają do tabelek itp działają również, problem cały czas jest z tym jak przy tak skonstruowanym includowaniu po wciśnięciu w przeglądarce 'znajdz' dostać
  1. localhost/przychodnia2/main.php?go=5&tresc=to_czego_szukam

zamiast
  1. localhost/przychodnia2/main.php?tresc=to_czego_szukam
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.