Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP]Wyszukiwarka - szykanie jednoczesnie w dwych tabelach
fcppl
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


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.

Ten post edytował fcppl 19.04.2012, 12:53:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
RAV_8
post
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 19.04.2012
Skąd: Olsztyn

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


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.

Ten post edytował RAV_8 19.04.2012, 14:11:35
Go to the top of the page
+Quote Post
fcppl
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


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?
Go to the top of the page
+Quote Post
adamec
post
Post #4





Grupa: Zarejestrowani
Postów: 30
Pomógł: 3
Dołączył: 18.04.2012
Skąd: Rybnik

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


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
Go to the top of the page
+Quote Post
RAV_8
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 19.04.2012
Skąd: Olsztyn

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


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

Ten post edytował RAV_8 19.04.2012, 16:14:18
Go to the top of the page
+Quote Post
fcppl
post
Post #6





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


super serdecznie dziekuje DZIALA (IMG:style_emoticons/default/exclamation.gif) !
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.09.2025 - 19:30