Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Wyszukiwanie i jego warunki
Forum PHP.pl > Forum > Przedszkole
mac1us
Witam
Chce napisac modul wyszukiwania danych w bazie mysql. Baza posiada pola: nazwa, adres, miasto i liczba pracownikow. Pierwsze 3 pola bede wyszukiwane po prostu metoda porownania z zapytaniem zadanym przez usera, jesli natomiast wybierze on wyszukiwanie po liczbie pracownikow to wtedy powinny pojawic sie opcje "wiecej niz" oraz "mniej niz" + mozliwosc wpisania liczby ograniczajacej przedzial. Wynik powinien sie wyswietlac na ekranie i powinna byc mozliwosc zapisu wyniku do pliku. Ma ktos pomysl jak to dorzucic do tego kodu:
  1. <?php
  2. include "auth_admin.inc.php";
  3. include "conn.inc.php";
  4. ?>
  5. <html>
  6. <head>
  7. <title>Panel administracyjny</title>
  8. <style type="text/css">
  9. body {
  10.  background-color: #87CEFA;
  11. }  a img{
  12. border: none;}
  13. td { color:navy; font-weight: bold;}
  14. p {color:navy; font-weight: bold;}
  15. a
  16. {
  17. color: navy;
  18. }
  19.  
  20. a:hover
  21. {
  22. color: red;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <h2>Wyszukiwarka</h2>
  28. <form name="search" method="post" action="<?=$PHP_SELF?>">
  29. Szukaj <input type="text" name="find" /> w rekordzie
  30. <Select NAME="field">
  31. <Option VALUE="nazwa">nazwa</option>
  32. <Option VALUE="adres">adres</option>
  33. <Option VALUE="miasto">miasto</option>
  34. </Select>
  35. <input type="hidden" name="searching" value="yes" />
  36. <input type="submit" name="search" value="Search" />
  37. </form>
  38. <?
  39. $find=$_POST['find'];
  40. $field=$_POST['field'];
  41. if ($searching =="yes")
  42. {
  43. echo "<h2>Wyniki</h2><p>";
  44.  
  45. if ($find == "")
  46. {
  47. echo "<p>Nie wpisales nic w pole zapytania";
  48. }
  49.  
  50. mysql_connect("xxxx", "xxxxx", "xxxxx") or die(mysql_error());
  51. mysql_select_db("xxxxxx") or die(mysql_error());
  52.  
  53. $find = strtoupper($find);
  54. $find = strip_tags($find);
  55. $find = trim ($find);
  56.  
  57.  
  58.  
  59. $data = mysql_query("SELECT * FROM laboratoria WHERE upper(".$_POST['field'].") LIKE '%".strtoupper($_POST['find'])."%'");
  60.  
  61. while($result = mysql_fetch_array( $data ))
  62. {
  63. echo $result['nazwa];
  64. echo "<br>";
  65. echo $result['adres'];
  66. echo "<br>";
  67. echo $result['miasto'];
  68. echo "<br>";
  69. echo "<br>";
  70. }
  71.  
  72. $anymatches=mysql_num_rows($data);
  73. if ($anymatches == 0)
  74. {
  75. echo "Nic nie znaleziono<br><br>";
  76. }
  77.  
  78. echo "<b>Szukano:</b> " .$find;
  79. }
  80.  
  81. echo $field;
  82. echo $find;
  83. echo "SELECT * FROM laboratoria WHERE lower($field) LIKE'%$find%";
  84.  
  85. ?>
  86. </body>
  87. </html>


P.S. z tym skryptem jest cos nie tak - niestety nie wiem co. Pisalem juz o tym problemie ale moze teraz komus uda sie znalezc rozwiazanie? - jesli zostawie puste pole zapytania to skrypt i tak nie wyswietla "<p>Nie wpisales nic w pole zapytania" a do tego nie wyswietla wynikow.
Z gory dziekuje za pomoc
pianta_d
Znalazłem błąd

  1. <?php
  2. echo $result[nazwa];
  3. echo "<br>";
  4. ?>


zapomniałeś o jednym małym znaczku - '
  1. <?php
  2. echo $result['nazwa'];
  3. echo "<br>";
  4. ?>


Pozdrawiam
mac1us
nie wiem dlaczego ale po prostu ten apostrof sie nie skopiowal. nie w tym tkwi blad
gilbo
Nie wniosę chyba nic do tematu, ale może sobie obcenzuruj dostęp do bazy?
pianta_d
Po poprawieniu apostrofu u mnie jest tak, że jeśli nie wpiszę nic w pole formularza "szukaj" wychodzi mi komunikta:
"Wyniki

Nie wpisales nic w pole zapytania
"

przy wyłączonym include
MacPain
Jeżeli chcesz sprawdzić czy coś zostalo wpisane w pole formularza to używaj isset($_POST['nazwa_pola']);, a nie wyswietla ci nic bo masz exit; wpakowany i podczas wyswietlania struny warunek jest spełniony.
mac1us
ok juz dziala - wrzucilem kolejno:
  1. <?php
  2. extract($_POST);
  3. ?>


  1. <?php
  2. $data = mysql_query("SELECT * FROM laboratoria WHERE upper($field) LIKE'%$find%'")
  3. ?>



a do zapytania dorzucilem
  1. <?php
  2. ?>


smiga jak marzenie biggrin.gif

teraz pozostaje tylko kwestia zapytania o liczbe pracownikow.
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.