Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Powielona tabela
wujekk13
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 4.10.2012

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


Mam dwa pliki

dane.txt

  1. firma.html | f zobacz co proponujemy | hasło nowe inne 0
  2. inne.html | i Mapa dojazdu - zobacz jak do nas dojechać | słowa kluczowe
  3. rura.html | r Witam Witam Witam Witam | bla bla
  4. kontakt.html | kontakt - jeżeli masz jakieś pytania - pisz śmiało! | coś tam innego
  5. firma1.html | f zobacz co proponujemy | hasło nowe inne 0
  6. inne1.html | i Mapa dojazdu - zobacz jak do nas dojechać | słowa kluczowe
  7. rura1.html | r Witam Witam Witam Witam | bla bla
  8. kontakt1.html | kontakt - jeżeli masz jakieś pytania - pisz śmiało! | coś tam innego
  9. firma2.html | f zobacz co proponujemy | hasło nowe inne 0
  10. inne2.html | i Mapa dojazdu - zobacz jak do nas dojechać | słowa kluczowe
  11. rura2.html | r Witam Witam Witam Witam | bla bla
  12. kontakt2.html | kontakt - jeżeli masz jakieś pytania - pisz śmiało! | coś tam innego
  13. firma3.html | f zobacz co proponujemy | hasło nowe inne 0
  14. inne3.html | i Mapa dojazdu - zobacz jak do nas dojechać | słowa kluczowe
  15. rura3.html | r Witam Witam Witam Witam | bla bla
  16. kontakt3.html | kontakt - jeżeli masz jakieś pytania - pisz śmiało! | coś tam innego



oraz plik php:

  1.  
  2. <?php header('Content-Type: text/html; charset=utf-8'); ?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  8. <title>Wyniki wyszukiwania</title>
  9. </head>
  10. <body>
  11.  
  12. <form action="" method="post">
  13. <input type="text" name="wyszukiwarka"/>
  14. <input type="submit" name="oursubmit" value="Szukaj" />
  15. </form>
  16.  
  17. <?php
  18.  
  19. /* definicja funkcji do przekształcania liter alfabetu narodowego do liter alfabetu łacińskiego */
  20. function str2url( $str, $replace = "-" ){
  21.  
  22. /* konwersja znaków utf do znaków podstawowych */
  23. $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
  24.  
  25. /* Niektóre francuskie i niemieckie litery pozostawiają po takiej konwersji (jak powyżej)
  26.   dodatkowe znaki. Poniższe dwie linijki te znaki wycinają */
  27.  
  28. $charsArr = array( '^', "'", '"', '`', '~');
  29. $str = str_replace( $charsArr, '', $str );
  30.  
  31. $return = trim(preg_replace('# +#',' ',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($str))));
  32. return str_replace(' ', $replace, $return);
  33.  
  34. } /* koniec definicji funkcji przekształcającej alfabety */
  35. ?>
  36.  
  37. <?php
  38.  
  39. /* warunek początkowy, niezbędny do wyświetlania odpowiedniego komentarza */
  40. $bl=false;
  41.  
  42. /* sprawdzenie, czy w okieno wyszukiwarki nie jest puste */
  43. if(isset($_POST['wyszukiwarka']) && $_POST['wyszukiwarka']!=''){
  44. $wyszukiwarka = $_POST['wyszukiwarka'];
  45.  
  46. /* pobieranie danych z pliku *.txt */
  47. $dane = file('dane.txt');
  48. echo "<ul>\n";
  49.  
  50. /* analiza tablicy dane, aktualnie przetwarzany element $..* ma być zapisany jako zmienna $...* */
  51. foreach($dane as $key){
  52.  
  53. /* podzieł (explode) zmiennych względem konkretynych zaków. Wyliczenie ilości szukanych słów (conut) */
  54. $g = explode(' | ', chop($key));
  55. $gie = explode(' ', $wyszukiwarka);
  56. $ile = count($gie);
  57.  
  58. /* pętla porównująca kolejne poszukiwane słowa z dostęną bazą */
  59. for($fi=0; $fi <$ile; $fi++){
  60.  
  61. if(stripos(str2url($key), str2url($gie[$fi]))){
  62.  
  63. /* tworzenie tabeli z wynikami wyszukiwania */
  64. $wejscie[] = '<a href="'.$g[0].'" title="'.$g[2].'">'.$g[1]."</a>\n<br>";
  65. $tab = array_unique(array_merge ($wejscie));
  66. $bl = true;
  67.  
  68. } /* koniec funkcji if */
  69.  
  70. } /* koniec pętli for */
  71.  
  72. } /* koniec analizy przy pomocy funkcji foreach */
  73.  
  74. /* gdy szukana fraza nie została odnaleziona zostajemy o tym powiadomieni */
  75. if(!$bl){
  76.  
  77. echo 'nie znaleziono podanej frazy: ' .$wyszukiwarka;
  78.  
  79. } /* koniec warunku spełniającego założenia funkcji if */
  80.  
  81. else{
  82.  
  83. $nowe = array_unique(array_merge ($tab));
  84. $n1 = count($nowe);
  85. for ($i=0;$i<$n1; $i++){
  86. $global_matches[]= ''.$nowe[$i].'';
  87. $koniec = array_unique(array_merge ((Array)$global_matches));
  88. echo '<pre>';
  89. print_r($koniec); // jeszcze należałoby się pozbyć powtórzeń, ale to już wiesz jak
  90. echo '</pre>';
  91.  
  92.  
  93. } /* koniec pętli for wyświetlającej wyniki nie spełniające założeń funkcji if */
  94.  
  95. } /* koniec warunku else nie spełniającego założenia funkcji if */
  96.  
  97. } /* koniec funkcji if odpowiedzialnej za okieno wyszukiwarki */
  98.  
  99. ?>
  100.  
  101. </body>
  102. </html>
  103.  



W wyniku szukania otrzymuję powielone tabele, jakiej funkcji użyć by się tego pozbyć?
Wiem jak wyświetlić pojedynczo przez echo. Niestety jeśli chcę użyć skryptu php do podziału na strony generuje się błąd. Proszę o pomoc.


udało mi się rozwiązać ten problem, otrzymałem taki kod:

  1.  
  2. <?php header('Content-Type: text/html; charset=utf-8'); ?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  8. <title>Wyniki wyszukiwania</title>
  9. </head>
  10. <body>
  11.  
  12. <form action="" method="post">
  13. <input type="text" name="wyszukiwarka"/>
  14. <input type="submit" name="oursubmit" value="Szukaj" />
  15. </form>
  16.  
  17. <?php
  18.  
  19. /* definicja funkcji do przekształcania liter alfabetu narodowego do liter alfabetu łacińskiego */
  20. function str2url( $str, $replace = "-" ){
  21.  
  22. /* konwersja znaków utf do znaków podstawowych */
  23. $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
  24.  
  25. /* Niektóre francuskie i niemieckie litery pozostawiają po takiej konwersji (jak powyżej)
  26.   dodatkowe znaki. Poniższe dwie linijki te znaki wycinają */
  27.  
  28. $charsArr = array( '^', "'", '"', '`', '~');
  29. $str = str_replace( $charsArr, '', $str );
  30.  
  31. $return = trim(preg_replace('# +#',' ',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($str))));
  32. return str_replace(' ', $replace, $return);
  33.  
  34. } /* koniec definicji funkcji przekształcającej alfabety */
  35. ?>
  36.  
  37. <?php
  38. /* warunek początkowy, niezbędny do wyświetlania odpowiedniego komentarza */
  39. $bl=false;
  40.  
  41. /* sprawdzenie, czy w okieno wyszukiwarki nie jest puste */
  42. if(isset($_POST['wyszukiwarka']) && $_POST['wyszukiwarka']!=''){
  43. $wyszukiwarka = $_POST['wyszukiwarka'];
  44.  
  45. /* pobieranie danych z pliku *.txt */
  46. $dane = array_map('trim', file('dane.txt'));//file('dane.txt');
  47. echo "<ul>\n";
  48.  
  49. /* analiza tablicy dane, aktualnie przetwarzany element $..* ma być zapisany jako zmienna $...* */
  50. foreach($dane as $key){
  51.  
  52. /* podzieł (explode) zmiennych względem konkretynych zaków. Wyliczenie ilości szukanych słów (conut) */
  53. $g = explode(' | ', chop($key));
  54. $gie = explode(' ', $wyszukiwarka);
  55. $ile = count($gie);
  56. // $wejscie=array();
  57.  
  58. /* pętla porównująca kolejne poszukiwane słowa z dostęną bazą */
  59. for($fi=0; $fi <$ile; $fi++){
  60.  
  61. if(stripos(str2url($key), str2url($gie[$fi]))){
  62.  
  63. /* tworzenie tabeli z wynikami wyszukiwania */
  64. $wejscie[] = array( '<a href="'.$g[0].'" title="'.$g[2].'">'.$g[1]."</a>\n<br>");
  65. // $tab = array_unique(array_merge ($wejscie));
  66. $bl = true;
  67.  
  68. } /* koniec funkcji if */
  69.  
  70. } /* koniec pętli for */
  71.  
  72. } /* koniec analizy przy pomocy funkcji foreach */
  73.  
  74. /* gdy szukana fraza nie została odnaleziona zostajemy o tym powiadomieni */
  75. if(!$bl){
  76.  
  77. echo 'nie znaleziono podanej frazy: ' .$wyszukiwarka;
  78.  
  79. } /* koniec warunku spełniającego założenia funkcji if */
  80.  
  81. else{
  82. $wejscie;
  83. $n1 = count($wejscie);
  84.  
  85. // $nowe = array_unique(array_merge ($wejscie));
  86. // $n1 = count($nowe);
  87. for ($i=0;$i<$n1; $i++){
  88. $global_matches[]= ''.$wejscie[$i][0].'';
  89. $koniec =(array_unique((Array)$global_matches));
  90. // $n2 = count($koniec);
  91. } /* koniec pętli for wyświetlającej wyniki nie spełniające założeń funkcji if */
  92. $koncowka=array_unique(array_merge ($koniec));
  93. $n2 = count($koncowka);
  94.  
  95. echo '<pre>';
  96. print_r($koncowka); // jeszcze należałoby się pozbyć powtórzeń, ale to już wiesz jak
  97. echo '</pre>';
  98. // echo $n2;
  99. } /* koniec warunku else nie spełniającego założenia funkcji if */
  100.  
  101. } /* koniec funkcji if odpowiedzialnej za okieno wyszukiwarki */
  102.  
  103.  
  104. ?>
  105.  
  106. </body>
  107. </html>
  108.  
  109.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Pamiętam ten kod, chyba ja go pisałem nie? Tzn. tylko fragment wyszukujący wyrażenia. Cały ten kod dałoby się znacząco skrócić i uprościć.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 20:38