Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie jak w google!
Forum PHP.pl > Forum > PHP
nszablin
Witam wszystkich!!
Mam problemik bo nie wiem jak zrobic w wyszukiwarce pogrubienie czesci szukanego tekstu mam na mysli cos takiego jak w google. Prosze o pomoc. Z gory dziekuje
SongoQ
Wykorzystaj preg_replace
mike
Przenoszę na php.
nszablin
Dzieki za odpowiedz ale prosze o podpowiedz na przykladzie bo nie wiem jak zastosowac preg_replace, zmienna szukana chcialbym pogrubic. Prosze o pomoc
  1. <?
  2. include ("szukanie.php");
  3. ?>
  4. <?
  5.  
  6. $db_name = "ksiazka_tel";
  7. $table_name = "osoby";
  8.  
  9. $szuk = "%".$szukaj."%";
  10.  
  11. $connection = @mysql_connect ("localhost", "ksiazka", "12345") or
  12. die ("Proba polaczenia nie powiodla sie.");
  13. $db = @mysql_select_db ($db_name, $connection) or die ("Wybor bazy danych nie powiodl sie.");
  14. if ($szukaj) {
  15. $sql = "SELECT * FROM $table_name WHERE Imie LIKE '$szuk' OR Nazwisko LIKE '$szuk' OR stanowisko LIKE '$szuk' OR jednostka LIKE '$szuk' ORDER BY Nazwisko";
  16. } else {
  17. $sql = "SELECT * FROM $table_name ORDER BY Nazwisko";
  18. }
  19. $search_result = @mysql_query($sql, $connection) or die ("Wykonanie zapytania nie powiodlo sie.");
  20. $results_number = mysql_numrows($search_result);
  21. include ("liczba_rek.php");
  22.  
  23. while ($row = mysql_fetch_array($search_result)) {
  24.  
  25. $id = $row['id'];
  26. $Imie = $row['Imie'];
  27. $Nazwisko = $row['Nazwisko'];
  28. $telefon = $row['telefon'];
  29. $telefon_2 = $row['telefon_2'];
  30. $ip = $row['ip'];
  31. $email = $row['email'];
  32. $stanowisko = $row['stanowisko'];
  33. $wydzial = $row['wydzial'];
  34. $jednostka = $row['jednostka'];
  35.  
  36. include ("szuk_form.php");
  37.  
  38. }
  39. ?>


poprawiam
---
nospor


zmienna szukana chcialbym pogrubic. Prosze o pomoc
dtb
zalozmy ze slowa kluczowe masz w tablicy $array:
  1. <?php
  2. foreach ($array as as $value)
  3. {
  4. $array2[] = '<b>'.$value.'</b>';
  5. }
  6. ?>

i teraz pozamieniaj:
  1. <?php
  2. $id = str_replace ($array, $array2, $row['id']);
  3. $Imie = str_replace ($array, $array2, $row['imie']);
  4. ...
  5. ?>


EDIT: btw. nigdy w życiu nieużył bym twojego kodu. po kiego te zmienne pomocnicze,
nszablin
jesli nie uzylbys takiego kodu to jak Ty bys to rozwiazal. z gory dzieki za info.
dopiero zaczynam wiec nie wszystko wiem
dtb
  1. <?php
  2. $szuk = "%".$szukaj."%"; // zle
  3. $szukaj = "%".$szukaj."%"; // dobrze (po co tworzyc nowe zmienne)
  4. ?>


  1. <?php
  2. $search_result = @mysql_query($sql, $connection) //zle
  3. $sql = mysql_query($sql, $connection) // dobrze (to co wyżej)
  4. ?>


  1. <?php
  2. $id = $row['id']; // to samo co wyzej
  3. $Imie = $row['Imie'];
  4. $Nazwisko = $row['Nazwisko'];
  5. $telefon = $row['telefon'];
  6. $telefon_2 = $row['telefon_2'];
  7. $ip = $row['ip'];
  8. $email = $row['email'];
  9. $stanowisko = $row['stanowisko'];
  10. $wydzial = $row['wydzial'];
  11. $jednostka = $row['jednostka'];
  12. ?>


Kod
?> // jaki to ma sens?
<?


pozamieniaj " na '

po co te 'małpy'. wylacz raportowanie bledow (nie beda konieczne @ i bezp. sie zwiekszy)

zmierz czas (microtime" title="Zobacz w manualu php" target="_manual) przed i po zamianie i powiedz o efektach
nszablin
Zrobilem tak jak mowiles ale nie wiem jak zastosowac to co napisales wczesniej "foreach ...."
  1. <?
  2. include ('szukanie.php');
  3.  
  4. $db_name = 'ksiazka_tel';
  5. $table_name = 'osoby';
  6.  
  7. $szukaj = '%'.$szukaj.'%';
  8.  
  9.  
  10. $connection = mysql_connect ('localhost', 'ksiazka', '12345');
  11. $db = mysql_select_db ($db_name, $connection);
  12.  
  13. if ($szukaj) {
  14. $sql = "SELECT * FROM $table_name WHERE Imie LIKE '$szukaj' OR Nazwisko LIKE '$szukaj' OR stanowisko LIKE '$szukaj' OR jednostka LIKE '$szukaj' ORDER BY Nazwisko";
  15. }
  16. else {
  17. $sql = "SELECT * FROM $table_name ORDER BY Nazwisko";
  18. }
  19.  
  20. $sql = mysql_query($sql, $connection);
  21.  
  22. $results_number = mysql_numrows($sql);
  23.  
  24. include ('liczba_rek.php');
  25.  
  26. while ($row = mysql_fetch_array($sql)) {
  27.  
  28. $id = $row['id'];
  29. $Imie = $row['Imie'];
  30. $Nazwisko = $row['Nazwisko'];
  31. $telefon = $row['telefon'];
  32. $telefon_2 = $row['telefon_2'];
  33. $ip = $row['ip'];
  34. $email = $row['email'];
  35. $stanowisko = $row['stanowisko'];
  36. $wydzial = $row['wydzial'];
  37. $jednostka = $row['jednostka'];
  38.  
  39. include ('szuk_form.php');
  40.  
  41. }
  42. ?>
dtb
pozmieniaj w while $row['X'] na str_replace ($szukaj, '<b>'.$szukaj.'</b>', $row['X']);
nszablin
Zrobiłem tak jak powiedziales ale niestety to nie dziala i naprawde nie wiem dlaczego

zmienilem

  1. <?php
  2. $Nazwisko = $row['Nazwisko'];
  3. ?>


na

  1. <?php
  2. $Nazwisko = str_replace ($szukaj, '<b>'.$szukaj.'</b>', $row['Nazwisko']);
  3. ?>


ale w wyniku $Nazwisko wyświetla sie bez zmian moze masz jakis inny pomysl. Z gory wielkie dzieki za pomoc.
dtb
wiem co jest zle:
  1. <?php
  2. $Nazwisko = str_replace (substr($szukaj,1,strlen($szukaj)-1), '<b>'.substr($szukaj,1,strlen($szukaj)-1).'</b>', $row['Nazwisko']);
  3. ?>


jeżeli nie zadziala to daj zamiast -1 -2 (ale chyba tak jest dobrze)
nszablin
Zrobilem tak jak powiedziales

  1. <?php
  2. $Nazwisko = str_replace (substr($szukaj,1,strlen($szukaj)-2), '<b>'.substr($szukaj,1,strlen($szukaj)-2).'</b>', $row['Nazwisko']);
  3. ?>


nie zadzialalo wiec zmianilem -1 na -2 ale to tez nic nie dalo.
qbuz
1. a co masz dokladnie w zmiennej $szukaj ?
2. beda problemy, przy roznej wielkosci znakow (np. wyszukiwany tekst to "samolot" a ty w bazie masz "Samolot" (z duzej litery)), wiec zamiast str_replace bedzie trzeba uzyc np. eregi_replace lub str_ireplace (ale to dopiero od php 5)
nszablin
Na poczatku jest jest pole w ktorym wpisuje szukana wartosc

  1. <td height="56"></td>
  2. <td colspan="6" valign="top"><form method="get" action="szukanie.php">
  3. <table width="311" border="0" align="center">
  4. <!--DWLayoutTable-->
  5. <tr>
  6. <td>
  7. <div align="center">
  8. <input name="szukaj" type="text" class="style1" size="50">
  9. </div></td>
  10. </tr>
  11. <tr>
  12. <td><div align="center">
  13. <input name="Submit" type="submit" class="linki" value="Szukaj">
  14. </div></td>
  15. </tr>
  16. </table>
  17. </form></td>


szukanie.php jest tym co podalem wczesniej.
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.