Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z wyszukiwaniem:(
Moniamo
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 4.02.2007

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


Witam

Mam problem z wyszukiwaniem filmow z bazy...tzn potrafie zrobic wyszukiwanie po tytule filmu, natomiast nie moge sobie poradzic z wyszukiwaniem po np: gatunku filmu, aktorze, rezyserze...itp...
Moj plik w php tak wyglada:
  1. <?
  2. mysql_connect ("localhost","root","krasnal");
  3.  
  4. if($_POST['stan']=='Szukaj') {
  5.  
  6. if ($_POST['wybor']=="tytul" && !empty($znajdz))
  7. {
  8. $zapytanie = "SELECT film.id, tytul, nazwisko, nazwa_gatunku, czas, data_2, nazwa_kraju, 
    opis FROM film, produkcja, gatunek, rezyser WHERE film.id=produkcja.id AND film.i
    d=gatunek.id AND tytul like "
    %$znajdz%" GROUP BY tytul order by tytul";
  9. $wykonaj = mysql_query ($zapytanie);
  10. }
  11. elseif ($_POST['wybor']=="produkcja" && !empty($znajdz))
  12. {
  13. $zapytanie = "SELECT film.id, tytul, nazwisko, nazwa_gatunku, czas, data_2, nazwa_kraju, 
    opis FROM film, produkcja, gatunek, rezyser WHERE film.id=produkcja.id AND film.i
    d=gatunek.id AND nazwa_kraju like "
    %$znajdz%" GROUP BY tytul order by nazwa_kraju";
  14. $wykonaj = mysql_query ($zapytanie);
  15. }
  16. elseif ($_POST['wybor']=="rezyser" && !empty($znajdz))
  17. {
  18. $zapytanie = "SELECT film.id, tytul, nazwisko, nazwa_gatunku, czas, data_2, nazwa_kraju, 
    opis FROM film, produkcja, gatunek, rezyser WHERE film.id=produkcja.id AND film.i
    d=gatunek.id and nazwisko like "
    %$znajdz%" GROUP BY nazwisko";
  19. $wykonaj = mysql_query ($zapytanie);
  20. }
  21. elseif ($_POST['wybor']=="aktor" && !empty($znajdz))
  22. {
  23. $zapytanie = "SELECT film.id, tytul, nazwisko_aktora, nazwisko, nazwa_gatunku, czas, data
    _2, nazwa_kraju, opis FROM film, produkcja, gatunek, rezyser, aktor_has_film, akt
    or WHERE (film.id=produkcja.id AND film.id=gatunek.id and film.id=aktor_has_film.akto
    r_id and aktor_has_film.aktor_id=aktor.id_aktor) and nazwisko_aktora like "
    %$znajdz%" GROUP BY tytul";
  24. $wykonaj = mysql_query ($zapytanie);
  25. }
  26. elseif ($_POST['wybor']=="gatunek" && !empty($znajdz))
  27. {
  28. $zapytanie = "SELECT film.id, tytul, nazwisko, nazwa_gatunku, czas, data_2, nazwa_kraju, 
    opis FROM film, produkcja, gatunek, rezyser WHERE (film.id=produkcja.id AND film.id=gatunek.id and gatunek.id=gatunek.id) and nazwa_gatunku like "
    %$znajdz%" GROUP BY nazwa_gatunku";
  29. $wykonaj = mysql_query ($zapytanie);
  30. }
  31.  
  32.  
  33. if (@mysql_num_rows($wykonaj)==0)
  34. {
  35. echo '<h2><body bgcolor=#E9967A><font color=#660000>Przykro mi, ale nie znaleziono rekordów o zadanych kryteriach</font></b></h2>';
  36.  
  37.  
  38. echo "<STYLE TYPE="text/css">
  39. .nounderline A {text-decoration:none;}
  40. </STYLE>
  41.  
  42. <br><br>
  43. <DIV CLASS="nounderline">
  44. <center>
  45. <a href="szukaj.php" target="mainFrame"><BUTTON TYPE=SUBMIT>OK</BUTTON></a>
  46. </center>
  47. <br>";
  48.  
  49. }
  50. else
  51. {
  52.  
  53. echo "
  54. <body bgcolor="#E9967A">
  55. <table bgcolor="#E9967A" border="1" width="720" cellspacing="3" cellpadding="">
  56. <tr>
  57. <td width="720" colspan="10" bgcolor="#E9967A">
  58. <p align="center"><b><font color="660000" size="2">WYNIKI WYSZUKIWANIA</font></b></td>
  59. </tr>
  60. <tr>
  61. <td width="130" align="center" bgcolor="#A52A2A"><font color="#E9967A" size="2">Tytul</font></td>
  62. <td width="110" align="center" bgcolor="#A52A2A"><font color="#E9967A" size="2">Aktor</font></td>
  63. <td width="110" align="center" bgcolor="#A52A2A"><font color="#E9967A" size="2">Rezyser</font></td>
  64. <td width="110" align="center" bgcolor="#A52A2A"><font color="#E9967A" size="2">Gatunek</font></td>
  65. <td width="50" align="center" bgcolor="#A52A2A"><font color="#E9967A" size="2">Czas</font></td>
  66. <td width="80" align="center" bgcolor="#A52A2A"><font color="#E9967A" size="2">Rok</font></td>
  67. <td width="70" align="center" bgcolor="#A52A2A"><font color="#E9967A" size="2">Produkcja</font></td>
  68. <td width="300" align="center" bgcolor="#A52A2A"><font color="#E9967A" size="2">Opis</font></td>
  69. </tr>
  70. </b>
  71. ";
  72.  
  73. while($wiersz=mysql_fetch_array ($wykonaj)) {
  74.  
  75. echo " <tr>
  76. ";if(isset($HTTP_SESSION_VARS['prawid_uzyt']))
  77. {
  78. echo"<td width="130"><a href=komentarz.php?id=".$wiersz['id']." target=mainFrame>".$wiersz['tytul']."</a></td>";
  79. }else{
  80. echo"<td width="130">".$wiersz['tytul']."</td>";
  81. }
  82. echo"<td width="110">".$wiersz['nazwisko_aktora']."</td>
  83. <td width="110">".$wiersz['nazwisko']."</td>
  84. <td width="110">".$wiersz['nazwa_gatunku']."</td>
  85. <td width="50">".$wiersz['czas']."</td>
  86. <td width="80">".$wiersz['data_2']."</td>
  87. <td width="70">".$wiersz['nazwa_kraju']."</td>
  88. <td width="300">".$wiersz['opis']."</td>
  89. </tr>";
  90. }
  91. }
  92. }
  93. ?>


W bazie danych mam takie tabele:
aktor (id_aktor, imie, nazwisko_aktora)
aktor_has_film(AKTOR_id, FILM_id)
film(id, PRODUKCJA_id, GATUNEK_id, tytul, czas, data_2, opis, id_aktor, id_rezyser)
gatunek(id, nazwa_gatunku)
komentarz(id, UZYTKOWNIK_login, FILM_id, tresc, data)
produkcja(id, nazwa_kraju)
rezyser(id, imie, nazwisko)
rezyser_has_film(REZYSER_id, FILM_id)
uzytkownik(login, nr_pesel, imie, nazwisko, haslo, czy_admin)

Nie wiem juz sama co jest nie tak z tymi zapytaniami sql, ze wyszukuje tylko po tytule:(
Jesli to mozliwe bardzo prosze o pomoc.

Z gory wielkie dzieki
Monika.
Go to the top of the page
+Quote Post
Norbas
post
Post #2





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 6.02.2006

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


Cytat
Nie wiem juz sama co jest nie tak z tymi zapytaniami sql, ze wyszukuje tylko po tytule:(

To że wyszukuje po tytule to tylko przypadek. Przy innych danych nie powinno być prawidłowych wyników

Źle łączysz ze sobą tabele. Powinny być połączone za pomocą identyfikatora, ale takiego, który oznacza to samo w obu tabelach, czyli:
  1. film.produkcja_id=produkcja.id
  2. film.gatunek_id=gatunek.id
  3. itd.


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





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 4.02.2007

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


Dzieki za radę, zrobilam tak jak napisales, ale teraz problem jest w tym, że z tabeli np. gatunek gdzie mam kilka komedii, wyswietla tylko pierwsza komedie:(
Nie wiem dlaczego?

Monika.
Go to the top of the page
+Quote Post
Norbas
post
Post #4





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 6.02.2006

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


  1. ... GROUP BY nazwa_gatunku

Grupujesz wg nazwy gatunku. Prawdopodobnie chcesz posortować, czyli powinno się wykorzystać ORDER BY. Podobnie przy innych zapytaniach smile.gif


--------------------
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: 21.08.2025 - 11:47