Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Wyszukiwanie rekordów z bazy danych
-Stypula-
post 11.11.2008, 13:03:22
Post #1





Goście







Witam. Mam kod mojej "wyszukiwarki" która ma wybierać rekordy z bazy danych "utwory" gdzie tagi są podobne do tagów które wpisaliśmy do formularza. Problem polega na tym że gdy np. wpiszę "rock, cure" to mi to rozbija na rock i cure co chcę jednak wybiera mi z bazy rekordy które mają albo rock albo cure w polu tagi. A mi chodzi o to żeby wybierało rekordy które mają i rock i cure. Wiem że zaraz mnie tu ochrzanicie za to że nie używam foreach tylko że z tym foreach to w ogóle nie wiedziałem jak to zrobić. Wpadłem teraz na pomysł żeby porównywać to co pobraliśmy z pola "adres" z pierwszego obrotu pętli z tym co pobraliśmy z następnych i jeżeli są takie same to ma to być wyświetlane. Problem w tym że nie wiem jak napisać to tak by pobierało mi wartość do tablicy a potem mi tego nie nadpistwało kolejnym obrotem.
  1. <?
  2. include("db");
  3. if($_POST){
  4. if($_POST['kat']=='muz'){
  5.  $pizza  = $_POST['tagi'];
  6. if($pizza!=''){
  7.  $arr = explode(", ", $pizza);
  8.      $tab=count( $arr );
  9.  for($i=0; $i<$tab; $i++){
  10.    $tag=$arr[$i];
  11.        echo "<ol>";
  12.  $wynik=mysql_query("select nazwa, adres from utwory where `tagi` like '%$tag%'");
  13.  if(@mysql_num_rows($wynik) > 0) {
  14.    while($r = mysql_fetch_assoc($wynik)) {
  15.  
  16. echo "<li><a href=\"odtworz.php?id=".$r['adres']."\">".$r['nazwa']."</a></li>";
  17. }
  18.  }
  19.  echo "</ol>";
  20.  }
  21.  }else{
  22. }
  23. }else{
  24. echo "Co chcesz wyszukać?";
  25. echo "<table><tr><td colspan=\"2\"><FORM ACTION=\"".$PHP_SELF."\" METHOD=\"POST\">Kategoria: </td><td>Muzyka<INPUT type=\"radio\" name=\"kat\" value=\"muz\"></td><td colspan=\"2\">Zdjęcia<INPUT type=\"radio\" name=\"kat\" value=\"zdj\"</td><td>Film<INPUT type=\"radio\" name=\"kat\" value=\"film\"</td></tr><tr><td>Tytuł: </td><td><INPUT type=\"text\" name=\"tytul\"></td><td>Wykonawca: </td><td><INPUT type=\"text\" name=\"wykonawca\"></td><td>Tagi*: </td><td><INPUT type=\"text\" name=\"tagi\"></td></tr><tr><td><input type=\"submit\" name=\"ok\" value=\"Szukaj!\"/></FORM></td></tr></table>";
  26. echo "Tagi oddziel przecinkami.";
  27. }
  28. include("ostatnio.php");
  29. ?>

Tak więc jeszcze raz. Chcę aby wyświetlało mi linki do tylko wtedy gdy pole: tagi zawiera wszystkie z tagów podanych w formularzu. Jeśli moja wyszukiwarka jest kompletnie do dupy to napiszcie mi proszę (ew. nakierujcie mnie na to jak to napisać) coś co można nazwać wyszukiwarką
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
atomp3
post 11.11.2008, 13:48:20
Post #2





Grupa: Zarejestrowani
Postów: 126
Pomógł: 1
Dołączył: 31.03.2006

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


  1. <?php
  2. $filter  = $_POST;
  3.    
  4.        $sqlwhere = "WHERE published = '1'";
  5.        
  6.        if($filter['marka'] && $filter['marka'] != 'all')
  7.        {
  8.            $sqlwhere .= " AND marka = '".$filter['marka']."' ";
  9.        }
  10.        if($filter['wojewodztwo'] && $filter['wojewodztwo'] != 'all')
  11.        {
  12.            $sqlwhere .= " AND wojewodztwo = '".$filter['wojewodztwo']."' ";
  13.        }
  14.        if(!empty($filter['szukaj']))
  15.        {
  16.            $sqlwhere .= "     AND nazwa like '%".$filter['szukaj']."%'
  17.                            OR adres like '%".$filter['szukaj']."%'
  18.                        ";
  19.        }
  20.  
  21.        $query = "SELECT * FROM some_table ".$sqlwhere." ";
  22.        $this->_db->setQuery($query);
  23. ?>
Go to the top of the page
+Quote Post
-Stypula-
post 11.11.2008, 13:55:04
Post #3





Goście







@up Niestety w ogóle tego kodu nie rozumiem O.o. Mógłbyś tam jakieś komentarze powstawiać? (żebym wiedział co co robi haha.gif)
Go to the top of the page
+Quote Post
-Stypula-
post 11.11.2008, 15:12:26
Post #4





Goście







Ok już nieważne. Poradziłem sobie z tym za pomocą tego:
  1. <?
  2. include("db");
  3. if($_POST){
  4. if($_POST['kat']=='muz'){
  5. echo "Co chcesz wyszukać?";
  6. echo "<table><tr><td colspan=\"2\"><FORM ACTION=\"".$PHP_SELF."\" METHOD=\"POST\">Kategoria: </td><td>Muzyka<INPUT type=\"radio\" checked=\"1\" name=\"kat\" value=\"muzyka\"></td></tr><tr><td>Tytuł: </td><td><INPUT type=\"text\" name=\"tytul\"></td><td>Wykonawca: </td><td><INPUT type=\"text\" name=\"wykonawca\"></td><td>Tagi*: </td><td><INPUT type=\"text\" name=\"tagi\"></td></tr><tr><td><input type=\"submit\" name=\"oka\" value=\"Szukaj!\"/></FORM></td></tr></table>";
  7. echo "Tagi oddziel przecinkami.";}
  8. if(($_POST['kat']=='muzyka' and $_POST['tagi']!='' and $_POST['tytul']=='' and $_POST['wykonawca']=='') or ($_POST['kat']=='muzyka' and $_POST['tytul']!='' and $_POST['wykonawca']=='' and $_POST['tagi']=='') or ($_POST['kat']=='muzyka' and $_POST['wykonawca']!='' and $_POST['tytul']=='' and $_POST['tagi']=='')){
  9. if($_POST['kat']=='muzyka' and $_POST['tagi']!=''){
  10. $pizza  = $_POST['tagi'];
  11. if($pizza!=''){
  12. $arr = explode(", ", $pizza);
  13.     $tab=count( $arr );
  14. for($i=0; $i<$tab; $i++){
  15.   $tag=$arr[$i];
  16.       echo "<ol>";
  17. $wynikt[$i]=mysql_query("select tytul, wykonawca, nazwa, adres from utwory where `tagi` like '%$tag%'");
  18. if(@mysql_num_rows($wynikt[$i]) > 0) {
  19.   while($rtag = mysql_fetch_assoc($wynikt[$i])) {
  20. if($rtag['tytul']=='1' and $rtag['wykonawca']=='1'){
  21. echo "<li><a href=\"odtworz.php?id=".$rtag['adres']."\">".$rtag['nazwa']."</a></li>";
  22. }else{
  23. echo "<li><a href=\"odtworz.php?id=".$rtag['adres']."\">".$rtag['wykonawca']."-".$rtag['tytul']."</a></li>";
  24. }
  25. }
  26. echo "</ol>";
  27. }
  28. }
  29. }else{
  30. echo "tag ", mysql_error();}
  31. }
  32. if($_POST['kat']=='muzyka' and $_POST['tytul']!=''){
  33. $pizza  = $_POST['tytul'];
  34. if($pizza!=''){
  35. $arr = explode(", ", $pizza);
  36.     $tabt=count( $arr );
  37. for($i=0; $i<$tabt; $i++){
  38.   $tag=$arr[$i];
  39.       echo "<ol>";
  40. $wynik[$i]=mysql_query("select tytul, wykonawca, nazwa, adres from utwory where (`tytul` like '%$tag%') or (`nazwa` like '%$tag%')");
  41. if(@mysql_num_rows($wynik[$i]) > 0) {
  42.   while($rtyt = mysql_fetch_assoc($wynik[$i])) {
  43. if($rtyt['tytul']=='1' and $rtyt['wykonawca']=='1'){
  44. echo "<li><a href=\"odtworz.php?id=".$rtyt['adres']."\">".$rtyt['nazwa']."</a></li>";
  45. }else{
  46. echo "<li><a href=\"odtworz.php?id=".$rtyt['adres']."\">".$rtyt['wykonawca']."-".$rtyt['tytul']."</a></li>";
  47. }
  48. }
  49. echo "</ol>";
  50. }
  51. }
  52. }else{
  53. echo "tyt ", mysql_error();}
  54. }
  55. if($_POST['kat']=='muzyka' and $_POST['wykonawca']!=''){
  56. $pizza  = $_POST['wykonawca'];
  57. if($pizza!=''){
  58. $arr = explode(", ", $pizza);
  59.     $tabw=count( $arr );
  60. for($i=0; $i<$tabw; $i++){
  61.   $tag=$arr[$i];
  62.       echo "<ol>";
  63. $wynikw[$i]=mysql_query("select tytul, wykonawca, nazwa, adres from utwory where (`wykonawca` like '%$tag%') or (`nazwa` like '%$tag%')");
  64. if(@mysql_num_rows($wynikw[$i]) > 0) {
  65.   while($rwyk = mysql_fetch_assoc($wynikw[$i])) {
  66. if($rwyk['tytul']=='1' and $rwyk['wykonawca']=='1'){
  67. echo "<li><a href=\"odtworz.php?id=".$rwyk['adres']."\">".$rwyk['nazwa']."</a></li>";
  68. }else{
  69. echo "<li><a href=\"odtworz.php?id=".$rwyk['adres']."\">".$rwyk['wykonawca']."-".$rwyk['tytul']."</a></li>";
  70. }
  71. }
  72. echo "</ol>";
  73. }
  74. }
  75. }else{
  76. echo "wyk ", mysql_error();}
  77. }
  78. }elseif($_POST['kat']='muzyka' and $_POST['tagi'] and $_POST['tytul']){
  79. $pizza  = $_POST['tagi'];
  80. if($pizza!=''){
  81. $arr = explode(", ", $pizza);
  82.     $tab=count( $arr );
  83. for($i=0; $i<$tab; $i++){
  84.   $tag=$arr[$i];
  85.    $tyt=$_POST['tytul'];
  86.       echo "<ol>";
  87. $wyniktt=mysql_query("select * from utwory WHERE (`tagi` like '%$tag%' AND `tytul` like '%$tyt%') or (`tagi` like '%$tag%' AND `nazwa` like '%$tyt%')");
  88. if(@mysql_num_rows($wyniktt) > 0) {
  89.   while($rtt = mysql_fetch_assoc($wyniktt)) {
  90. if($rtt['tytul']=='1' and $rtt['wykonawca']=='1'){
  91. echo "<li><a href=\"odtworz.php?id=".$rtt['adres']."\">".$rtt['nazwa']."</a></li>";
  92. }else{
  93. echo "<li><a href=\"odtworz.php?id=".$rtt['adres']."\">".$rtt['wykonawca']."-".$rtt['tytul']."</a></li>";
  94. }
  95. }
  96. }
  97.  echo "</ol>";
  98. }
  99. }else{
  100. echo "tag ", mysql_error();}
  101. }elseif($_POST['kat']='muzyka' and $_POST['tagi'] and $_POST['wykonawca']){
  102. $pizza  = $_POST['tagi'];
  103. if($pizza!=''){
  104. $arr = explode(", ", $pizza);
  105.     $tab=count( $arr );
  106. for($i=0; $i<$tab; $i++){
  107.   $tag=$arr[$i];
  108.    $wyk=$_POST['wykonawca'];
  109.       echo "<ol>";
  110. $wyniktw=mysql_query("select * from utwory WHERE (`tagi` like '%$tag%' AND `wykonawca` like '%$wyk%') or (`tagi` like '%$tag%' AND `nazwa` like '%$wyk%')");
  111. if(@mysql_num_rows($wyniktw) > 0) {
  112.   while($rtw = mysql_fetch_assoc($wyniktw)) {
  113. if($rtw['tytul']=='1' and $rtw['wykonawca']=='1'){
  114. echo "<li><a href=\"odtworz.php?id=".$rtw['adres']."\">".$rtw['nazwa']."</a></li>";
  115. }else{
  116. echo "<li><a href=\"odtworz.php?id=".$rtw['adres']."\">".$rtw['wykonawca']."-".$rtw['tytul']."</a></li>";
  117. }
  118. }
  119. }
  120.  echo "</ol>";
  121. }
  122. }else{
  123. echo "tag ", mysql_error();}
  124. }elseif($_POST['kat']='muzyka' and $_POST['wykonawca'] and $_POST['tytul']){
  125.    $wyk=$_POST['wykonawca'];
  126.    $tyt=$_POST['tytul'];
  127.       echo "<ol>";
  128. $wyniktt=mysql_query("select * from utwory WHERE (`wykonawca` like '%$wyk%' AND `tytul` like '%$tyt%') or (`nazwa` like '%$wyk%' AND `nazwa` like '%$tyt%')");
  129. if(@mysql_num_rows($wyniktt) > 0) {
  130.   while($rtt = mysql_fetch_assoc($wyniktt)) {
  131. if($rtt['tytul']=='1' and $rtt['wykonawca']=='1'){
  132. echo "<li><a href=\"odtworz.php?id=".$rtt['adres']."\">".$rtt['nazwa']."</a></li>";
  133. }else{
  134. echo "<li><a href=\"odtworz.php?id=".$rtt['adres']."\">".$rtt['wykonawca']."-".$rtt['tytul']."</a></li>";
  135. }
  136. }
  137. }
  138.  echo "</ol>";
  139. }elseif($_POST['kat']='muzyka' and $_POST['tagi'] and $_POST['tytul'] and $_POST['wykonawca']){
  140. $pizza  = $_POST['tagi'];
  141. if($pizza!=''){
  142. $arr = explode(", ", $pizza);
  143.     $tab=count( $arr );
  144. for($i=0; $i<$tab; $i++){
  145.   $tag=$arr[$i];
  146.    $tyt=$_POST['tytul'];
  147.    $wyk=$_POST['wykonawca'];
  148.       echo "<ol>";
  149. $wyniktt=mysql_query("select * from utwory WHERE (`tagi` like '%$tag%' AND `tytul` like '%$tyt%' and `wykonawca` like '$wyk') or (`tagi` like '%$tag%' AND `nazwa` like '%$tyt%' and `nazwa` like '%$wyk%')");
  150. if(@mysql_num_rows($wyniktt) > 0) {
  151.   while($rtt = mysql_fetch_assoc($wyniktt)) {
  152. if($rtt['tytul']=='1' and $rtt['wykonawca']=='1'){
  153. echo "<li><a href=\"odtworz.php?id=".$rtt['adres']."\">".$rtt['nazwa']."</a></li>";
  154. }else{
  155. echo "<li><a href=\"odtworz.php?id=".$rtt['adres']."\">".$rtt['wykonawca']."-".$rtt['tytul']."</a></li>";
  156. }
  157. }
  158. }
  159.  echo "</ol>";
  160. }
  161. }else{
  162. echo "tag ", mysql_error();}
  163. }
  164. }else{
  165. echo "Co chcesz wyszukać?";
  166. echo "<table><tr><td colspan=\"2\"><FORM ACTION=\"".$PHP_SELF."\" METHOD=\"POST\"></td><td>Muzykę<INPUT type=\"radio\" checked=\"1\" name=\"kat\" value=\"muz\"></td><td colspan=\"2\">Zdjęcia<INPUT type=\"radio\" name=\"kat\" value=\"zdj\"</td><td>Filmy<INPUT type=\"radio\" name=\"kat\" value=\"film\"</td></tr><tr><td><input type=\"submit\" name=\"ok\" value=\"Dalej!\"/></FORM></td></tr></table>";
  167. }
  168. include("ostatnio.php");
  169. ?>

Wiem że mogło być krótsze mogło być bardziej czytelne wcięcia mogły być takie że coś jednak dałoby się z tego odczytać ale narazie jest dobrze wg. mnie ; D.
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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 13:56