Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Wyszukiwarka - szykanie jednoczesnie w dwych tabelach
Forum PHP.pl > Forum > Przedszkole
fcppl
witam,

Mam taka prosta wyszukiwarke

  1. <?php
  2.  
  3. $_POST['phrase']=trim($_POST['phrase']);
  4.  
  5. if(empty($_POST['phrase']))
  6.  
  7. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  8.  
  9. else
  10. {
  11. $base=mysqli_connect('localhost','test','test','test');
  12.  
  13. $base -> query("SET NAMES 'utf8'");
  14.  
  15. $query="Select lname,fname,playerid,photo From hnpma_fastball_player Where fname Like '%{$_POST['phrase']}%' Or lname Like '%{$_POST['phrase']}%' ORDER BY lname Limit 0,1000 ";
  16.  
  17. $result=mysqli_query($base,$query);
  18.  
  19. $obAmount=mysqli_num_rows($result);
  20.  
  21. echo '<br />';
  22. echo 'Znaleziono: '.$obAmount.'<br /><br />';
  23.  
  24. for($x=0;$x<$obAmount;$x++)
  25. {
  26.  
  27. $row=mysqli_fetch_assoc($result);
  28.  
  29. echo '<table class="fbtabel_search">';
  30.  
  31. echo '<tr>';
  32.  
  33. echo '<td style="width:4%;">';
  34.  
  35. echo $x+1 ;
  36.  
  37. echo '.</td>';
  38.  
  39. echo '<td style="width:10%;"><img src="images'.$row['photo'].'"></img></td>';
  40.  
  41. echo '<td style="width:13%;">'.$row['lname'].'</td>';
  42.  
  43. echo '<td style="width:13%;">'.$row['fname'].'</td>';
  44.  
  45. echo '<td style="width:13%;"><a href="player&id='.$row['playerid'].'">zobacz</a></td>';
  46.  
  47. echo '</tr>';
  48.  
  49. }
  50. echo '</table>';
  51. }
  52. mysqli_close($base);
  53.  
  54. ?>


W tabeli "fname" są zapisane imiona, a w table "lname" nazwiska.

Moje pytanie jest nastepujace jak zrobic zeby po wpisaniu np: Jan Kowalski wyskoczyl wynik bo na ta chwile moge wyszukac tylko po imieniu lub nazwisku. Jak dam imie + nazwisko to nic nie znajduje.
RAV_8
Sam kiedyś zmagałem sie z podobnym problemem. Aby to rozwiązać , pytania musisz budować dynamicznie.

http://nospor.pl/wyszukiwarka-zapytanie-za...d-warunkow.html - Polecam zapoznać się z tym artykułem.

Pozdrawiam.
fcppl
dzieki za odpowiedz, zapoznałem sie z tym artykulem, ale przyznam ze wiele mi to nie mowi. Moze jakas mała podpowiedz na przykladzie mojej wyszukiwarki?
adamec
z tego co widzę to masz:
  1. $query="Select lname,fname,playerid,photo From hnpma_fastball_player Where fname Like '%{$_POST['phrase']}%' Or lname Like '%{$_POST['phrase']}%' ORDER BY lname Limit 0,1000 ";


czyli w $_POST[phrase] masz zapisane JAN KOWALSKI i próbujesz dopasować całość jako JAN KOWALSKI do tabeli która przechowuje imiona lub nazwiska, wg mnie musiałbyś podzielić JAN KOWALSKI na JAN i KOWALSKI i wtedy dopasować imię AND nazwisko
RAV_8
Może nie zbyt ładnie pod względem estetycznym w zapisie ale powinno działać

  1. <?php
  2.  
  3.  
  4.  
  5. if(empty($_POST['phrase']))
  6.  
  7. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  8.  
  9. else
  10.  
  11. {
  12. $phrase = trim($_POST['phrase']);
  13. $phrase_explode = explode(" ", $phrase);
  14. for($i=0;$i<count($phrase_explode);$i++)
  15. {
  16. $zapytanie[]= '(fname LIKE \'%'.$phrase_explode[$i].'%\' || lname LIKE \'%'.$phrase_explode[$i].'%\') ';
  17. }
  18. if (!empty($zapytanie))
  19. {
  20. $where = implode(' AND ', $zapytanie );
  21. }
  22. else
  23. {
  24. $where = '';
  25. }
  26.  
  27. $base=mysqli_connect('localhost','test','test','test');
  28.  
  29. $base -> query("SET NAMES 'utf8'");
  30.  
  31. $query="Select lname,fname,playerid,photo From hnpma_fastball_player WHERE $where ORDER BY lname Limit 0,1000 ";
  32.  
  33. $result=mysqli_query($base,$query);
  34.  
  35. $obAmount=mysqli_num_rows($result);
  36.  
  37. echo '<br />';
  38. echo 'Znaleziono: '.$obAmount.'<br /><br />';
  39.  
  40. for($x=0;$x<$obAmount;$x++)
  41. {
  42.  
  43. $row=mysqli_fetch_assoc($result);
  44.  
  45. echo '<table class="fbtabel_search">';
  46.  
  47. echo '<tr>';
  48.  
  49. echo '<td style="width:4%;">';
  50.  
  51. echo $x+1 ;
  52.  
  53. echo '.</td>';
  54.  
  55. echo '<td style="width:10%;"><img src="images'.$row['photo'].'"></img></td>';
  56.  
  57. echo '<td style="width:13%;">'.$row['lname'].'</td>';
  58.  
  59. echo '<td style="width:13%;">'.$row['fname'].'</td>';
  60.  
  61. echo '<td style="width:13%;"><a href="player&id='.$row['playerid'].'">zobacz</a></td>';
  62.  
  63. echo '</tr>';
  64.  
  65. }
  66. echo '</table>';
  67. }
  68. mysqli_close($base);
  69.  
  70.  
  71. ?>


Formularz:
  1. <form action = "test.php" method="post">
  2.  
  3. Szukaj:
  4. <input name ="phrase" type="input" type="text" size="20">
  5. <input type ="submit" name="submit" value="szukaj" ><br>
  6.  
  7. </form>


Pozdrawiam
fcppl
super serdecznie dziekuje DZIALA exclamation.gif!
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.