Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Powielona tabela
Forum PHP.pl > Forum > Przedszkole
wujekk13
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.  
b4rt3kk
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ć.
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.