Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
riquelme
Mam tabele w MySQL'u muzyka ,zawierająca:autor ,tytuł ,produkt (lista wyboru:kaseta,płyta CD,DVD).Jaki skrypt należy napisać,żeby powstała wyszukiwarka,tzn po wypełnieniu formularza i kliknięciu Szukaj wypisało znalezione pozycje??
raf_gc
Należy przestudiować formułowanie zapytań do bazy SQL, bo bez tego ani rusz (notabene nie ma w nich nic trudnego), poza tym nie wiem, czy ktoś będzie chciał napisać Ci cały skrypt nie mając żadnych wskazówek, w jaki sposób ma działać i jak wygląda formularz z zapytaniem.
Michasko
Przestudiuj jakiś kurs MySQL, chociażby ten, wystarczy Ci on do zrozumienia MySQL'a na wystarczającym poziomie, aby dać sobie rade z wyszukiwarką.

A tutaj porady ode mnie:

1. Robisz formularz z polem tekstowym oraz polem wyboru (do wyboru: autor i tytuł), zmienne wpisane w nim przekazujesz do pliku szukaj.php.

2. W szukaj.php umieszczasz zapytanie SELECT:

  1. <?php
  2. $query = "SELECT * FROM tabela WHERE autor = '$autor' OR tytul = '$tytul' ORDER BY autor DESC LIMIT 30";
  3. ?>


Zapytanie wykonujesz za pomocą mysql_query" title="Zobacz w manualu php" target="_manual.

3. Za pomocą pętli while" title="Zobacz w manualu php" target="_manual 'wyrzucasz' wyszukane dane do przeglądarki.

Pętla może wyglądać mniej więcej tak:

  1. <?php
  2. while ($muzyka = mysql_fetch_assoc($wynik)) {
  3. echo "Autor: ".$muzyka['autor']."<br />";
  4. echo "Tytuł: ".$muzyka['tytul']."<br />";
  5. echo "Produkt: ".$muzyka['produkt']."<br />"; // wyswietlasz wyniki
  6. }
  7. ?>


mysql_fetch_assoc" title="Zobacz w manualu php" target="_manual
riquelme
Dzięki za odpowiedź,ponieważ jestem początkujący w php i mysql'u mam pare pytań do tego.Mam już formularz i tabele w mysql.W formularzu mam pola autor,tytuł i produkt(może przjmować wartości CD,kaseta,DVD).Żeby formularz poprawnie działał muszę wpisać kilka zapytań?Chodzi mi o to ,czy np jedno zapytanie ma dotyczyć wyszukiwaniu konketnego autora,drugie wszystkie pozycje zawierające CD,trzecie liste autorów zaczynających sie na a itp.czy da sie uprościć to bardziej??
Michasko
Formularz wg mnie mógłby wyglądać tak:

  1. <form method="POST" action="szukaj.php">
  2.  <input type="text" name="szukane" size="20"><select size="1" name="wedlug">
  3.  <option selected>Szukaj wg:</option>
  4.  <option value="autor">Autor</option>
  5.  <option value="produkt">Produkt</option>
  6.  <option value="tytul">Tytuł</option>
  7.  </select><input type="submit" value="Szukaj" name="submit"></p>
  8. </form>


i teraz jak tworzysz zapytanie, to dobrze by było zadeklarować zmienne na prostsze niż $_POST['cos tam'], prawda?

a wiec piszesz:

  1. <?php
  2. $wedlug = $_POST['wedlug'];
  3. $szukane = $_POST['szukane'];
  4.  
  5. $zapytanie = "SELECT * FROM tabela WHERE '$wedlug' = '$szukane'";
  6. ?>


potem wykonujesz to zapytanie funkcją mysql_query, a wyniki wyswietlasz przy pomocy pętli while z warunkiem ($szukaj = mysql_fetch_assoc($wynik)) smile.gif
Z tym już sobie chyba rade dasz smile.gif
riquelme
Zrobiłem zgodnie ze wskazówkami,tylko że nic mi nie wyświetla.Oto cały skrypt,jeżeli nie sprawi to trudności,prosze o wskazanie miejsca,które nie pokazuje danych i czy można dopisać tekst :"Nic nie znaleziono",gdy danego słowa wpisanego nie ma w bazie??

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  5.  
  6. <title>Wyszukiwarka</title>
  7. </head>
  8. <BODY>
  9. <table border=1>
  10. <?
  11. $polaczenie = mysql_connect("localhost", "xxx", "xxx");
  12. $baza = mysql_select_db("xxx", $polaczenie);
  13. $wedlug = $_POST['wedlug'];
  14. $szukane = $_POST['szukane'];
  15. $zapytanie = "SELECT * FROM muzyka WHERE '$wedlug' = '$szukane'";
  16.  
  17. $wynik = mysql_query($zapytanie, $polaczenie);
  18. while ($muzyka = mysql_fetch_assoc($wynik)) {
  19. echo ("Autor: ".$muzyka['autor']."<br />");
  20. echo ("Tytuł: ".$muzyka['tytul']."<br />");
  21. echo ("Produkt: ".$muzyka['produkt']."<br />"); 
  22. }
  23. mysql_close($polaczenie);
  24. ?>
  25. </TABLE>
  26. </BODY>
  27. </html>
Michasko
1. Czy umieściłes jakies dane w tabeli?
2. Czy nazwy pól tabeli mają takie nazwy jakie są podane w skrypcie?
3. Tak, da się. mysql_num_rows" title="Zobacz w manualu php" target="_manual.
riquelme
Dzięki za odpowiedzi,troche posiedziałem i zmieniłem nieco i teraz wyświetla się tylko że cokolwiek bym nie wpisał i wcisnął szukaj to wyświetla mi sie cała baza.Nawet jak nic nie wpisze to tak samo sie dzieje
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.