Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Wyszukiwanie rekordów z bazy danych
Forum PHP.pl > Forum > Przedszkole
Stypula
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ą
atomp3
  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. ?>
Stypula
@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)
Stypula
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.
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.