Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] wyszukiwarka, wyswietlanie wynikow kilka razy
senor_d
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 17.02.2005
Skąd: skad

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


witam

mam skrypt malej wyszukiwarki oparty na mysql'u. dopoki podaje sie do wyszukiwania jeden wyraz wszystko jest (powiedzmy) tak jak chce. ale juz przy kilku wyrazach wyniki kaszanią sie, sa powtorzone kilkukrotnie. nie wiem jak to dokladnie wytlumaczyc wiec tutaj jest link. a to jest kod:

  1. <?php
  2.  
  3. $fraza = $_GET[p];
  4.  
  5.  
  6. $przycieta = trim($fraza);
  7. $tablica = explode(' ',$przycieta);
  8.  
  9.  
  10.  
  11.  
  12. if (isset($p) && $fraza == '') {
  13. $message = "Musisz podać wyszukiwany wyraz!";
  14. }
  15.  
  16. if (!isset($p)) {
  17. $message = "Brak prametru do wyszukania!";
  18. }
  19.  
  20.  
  21. foreach ($tablica as $ciete){
  22.  
  23. $ilosc_wynikow = mysql_num_rows(sql("select * from ksiega where wpis like \"%$ciete%\" order by id desc"));
  24.  
  25. if (empty($limit)) {
  26. $limit = 0;
  27. }
  28.  
  29.  
  30. $wynik = sql("select * from ksiega where wpis like \"%$ciete%\" order by id desc");
  31.  
  32. do{
  33. $id_array[] = $dane[id];
  34. } while ($dane = mysql_fetch_array($wynik));
  35.  
  36.  
  37. }
  38.  
  39.  
  40. if($ilosc_wynikow == 0 && !isset($message)){
  41. $message = "Nie znaleziono wyniku pasującego do szukanej frazy " . $przyciete;
  42. }
  43.  
  44. $czasowa_tab = array_unique($id_array);
  45. $i=0;
  46. foreach ($czasowa_tab as $n) {
  47. $nowa_tab[$i] = $n; 
  48. $i++;
  49. }
  50.  
  51. if(isset($message)){
  52. print $message;
  53. exit();
  54. } else {
  55. print "&nbsp;&nbsp;Wyniki wyszukiwania dla: <span style=\"font-weight:bold\">&sbquo;&sbquo;" . $fraza . "&rsquo;&rsquo;</span><br /><br />";
  56. }
  57.  
  58.  
  59.  
  60. $nr == 1;
  61. foreach($nowa_tab as $id){
  62.  
  63. $dane_found = mysql_fetch_array(sql("select * from ksiega where id = '$id'"));
  64. $head = $dane_found[wpis];
  65. $head_rev = strrev($dane_found[wpis]);
  66.  
  67.  
  68. foreach($tablica as $ciete){
  69.  
  70. $ciete_rev = strrev($ciete);
  71.  
  72.  
  73. if (substr_count($head,$ciete) >= 2) {
  74.  
  75. $sub_rev = strrev(substr($head,strpos($head,$ciete),strlen($head)));
  76. $poczatek = substr($head,0,strpos($head,$ciete));
  77. $srodek = strrev(substr($sub_rev,strpos($sub_rev,$ciete_rev),strlen($sub_rev)));
  78. $koniec = strrev(substr($sub_rev,0,strpos($sub_rev,$ciete_rev)));
  79.  
  80. if (strlen($poczatek) >= 50) {
  81. $poczatek = substr($poczatek,strlen($poczatek) - 50,strlen($poczatek));
  82. $poczatek = substr($poczatek,strpos($poczatek,' '),strlen($poczatek));
  83. }
  84.  
  85. if (strlen($koniec) >= 50) {
  86. $koniec = substr($koniec,0,50);
  87. $koniec = substr($koniec,0,strrpos($koniec,' '));
  88. }
  89.  
  90.  
  91. $text = $poczatek . $srodek . $koniec;
  92.  
  93.  
  94.  
  95. } else if (substr_count($head,$ciete) == 1) {
  96.  
  97. $przed = substr($head,0,strpos($head,$ciete));
  98. $po = strrev(substr($head_rev,0,strpos($head_rev,$ciete_rev)));
  99.  
  100. if (strlen($przed) >= 100) {
  101. $przed = substr($head,strpos($head,$ciete) - 100,100);
  102. $przed = substr($przed,strpos($przed,' '),strlen($przed));
  103. }
  104.  
  105. if (strlen($po) >= 100) {
  106. $po = substr($head_rev,strpos($head_rev,$ciete_rev) - 100,100);
  107. $po = strrev(substr($po,strpos($po,' '),strlen($po)));
  108. }
  109.  
  110. $text = $przed . $ciete . $po;
  111.  
  112. }
  113.  
  114. $text= preg_replace("'($ciete)'si", "<span style=\"font-weight:bold; color:#0000FF\">\\1</span>",$text);
  115.  
  116.  
  117.  
  118. ?>
  119. <table cellspacing="0" cellpadding="0">
  120. <tr>
  121. <td style="width:15px; text-align:left; vertical-align:top">
  122. <?php print $dane_found[id]; ?>.
  123. </td>
  124. <td style="width:375px; text-align:left; vertical-align:top">
  125. <div style="width:375px">
  126. <a class="search" href="<?php $nr; ?>">...<?php print $text; ?>...</a>
  127. </div>
  128. </td>
  129. </tr>
  130. <tr>
  131. <td style="height:10px"></td>
  132. </tr>
  133. </table>
  134. <?php
  135.  
  136. }
  137. $nr++;
  138. }
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146. ?>


wie moze ktos jak temu zaradzic? bardzo bylbym wdzieczny. dzieki
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.09.2025 - 09:08