Wyszukiwarka produktów na stronie

2012-06-18 20:49
0

Witam wszystkich :)
Piszę sobie wyszukiwarkę na stronę i mam problem :)
Mam już wszystko napisane, ale z paginacją wyników, która mi nie odpowiada i staram się podpiąć nową paginacje.
Na starym skrypcie(ze starą paginacją) porcjuje wyniki, natomiast w drugiej nie(nawet jak wpiszę ręcznie w adres strony)

Stary kod na którym działa paginacja:

<?php
echo '<h2>Wyszukiwarka</h2>';
echo '<br /><br />';
if(isset($_GET['wynik'])) 
{
    $wynik_filtru = trim(zabezpiecz($_GET['wynik'])); 
    echo '<form action="http://nportfolio.pl/sklep/index.php?page=sear" method="get">
    <input type="hidden" name="page" value="sear" />
    <input type="text" name="wynik" value="'.$wynik_filtru.'"/>
    <button>Szukaj</button>
    </form>';
}
else
{
    echo '<div class="wyszukiwarkas"><form action="http://nportfolio.pl/sklep/index.php?page=sear" method="get">
    <input type="hidden" name="page" value="sear" />
    <input type="text" name="wynik" value="Szukaj w serwisie..." onclick="this.value=\'\'" />
    <button>Szukaj</button>
    </form></div>';
}
if(empty($wynik_filtru) or !preg_match('/^[a-zA-Z0-9]+$/i', $wynik_filtru))
{
    echo '<br /><br /><font color="red"><b>Formularz został wypełniony niepoprawnie!<br /> Nie można wyświetlić wyników wyszukiwania!</b></font>';
    echo '<br /><br />';
}
else
{
    $subpage = $_GET['page'];
    $perPage = 10;
    if (!empty($_GET['subpage']))
    {
        if (is_numeric($_GET['subpage']))
        {
            $subpage = (int) $_GET['subpage'];
        }
    }
    if ($subpage < 1)
    {
        $subpage = 1;
    }
    $start = ($subpage - 1) * $perPage;
    $zapytanie = "(SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `stan`, `zdjecie` FROM cms_sklep_produkty WHERE nazwa LIKE '%{$wynik_filtru}%')
    UNION ALL (SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `stan`, `zdjecie` FROM cms_sklep_produkty WHERE tresc LIKE '%{$wynik_filtru}%')
    UNION ALL (SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `stan`, `zdjecie` FROM cms_sklep_produkty WHERE kategoria LIKE '%{$wynik_filtru}%') ORDER BY `id` DESC LIMIT ".$start.", ".$perPage."";
    $idzapytania = mysql_query($zapytanie) or die (mysql_error());
    $zapytanie2 = "(SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `stan`, `zdjecie` FROM cms_sklep_produkty WHERE nazwa LIKE '%{$wynik_filtru}%')
    UNION ALL (SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `stan`, `zdjecie` FROM cms_sklep_produkty WHERE tresc LIKE '%{$wynik_filtru}%')
    UNION ALL (SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `stan`, `zdjecie` FROM cms_sklep_produkty WHERE kategoria LIKE '%{$wynik_filtru}%')";
    $idzapytania2 = mysql_query($zapytanie2);
    $ilosc_wierszy = mysql_num_rows($idzapytania2);
    $oblicz = mysql_num_rows($idzapytania2);
}
if(isset($oblicz))
{
    echo '<br /><br />Znaleziono: '.$oblicz.'<br /><br />';
    if (!isset($_GET['id']) or empty($_GET['id']))
    {
        while ($wiersz = mysql_fetch_array($idzapytania))
        {
            if($wiersz['nazwa'] != '')
            {
                $wyraz = explode(' ',substr($wiersz['nazwa'], 50)); 
                $wyrazy = substr($wiersz['nazwa'], 0, 50).$wyraz[0];
                $wyraz = $wyrazy;
                $array = array('[url]','[/url]','[b]','[/b]','[i]','[/i]','[u]','[/u]','[small]','[/small]',
                '[big]','[/big]','[p]','[/p]','[center]','[/center]','[color=(http://)?(.*?)]','[/color]',
                '[size=(http://)?(.*?)]','[/size]','[hr=([0-9]{1,2}|100)]','[/hr]');
                $wyrazek = str_replace($array,'',$wyraz);
                echo '<a style="text-decoration: none;" href="/sklep/index.php?page=kat&subkat='.$wiersz['kategoria'].'&id='.$wiersz['id'].'"><b>'.zabezpiecz($wyrazek).'</b></a>';
                echo'<br /><br />';
            }
        }
        echo '<div id="page_numbers"><ul><hr />';
        $prev = $subpage - 1;
        $next = $subpage + 1;
        $prevLink = '/sklep/index.php?page=sear&wynik='.$wynik_filtru.'&subpage='.$prev.'';
        $nextLink = '/sklep/index.php?page=sear&wynik='.$wynik_filtru.'&subpage='.$next.'';
        if($subpage > 1)
        {
            echo'<li class="page_info"><a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a></li> ';
        }
        $stron=ceil($ilosc_wierszy/$perPage);
        for($i=1; $i<=$stron; ++$i)
        {
            if($i==$subpage)
            {
                echo '<li class="page_info"><b>'.$i.' </b></li>';
            }
            else
            {
                echo '<li class="page_info"><a style="text-decoration: none;" href="/sklep/index.php?page=sear&wynik='.$wynik_filtru.'&subpage='.$i.'">'.$i.' </a></li>';
            }
        }
        if($subpage < $stron)
        {
        echo ' <li class="page_info"><a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a></li>';
        }
        echo '</ul></div>';
    }
}
?>

Nowy kod na którym nie działa paginacja

<?php
echo '<h2>Wyszukiwarka</h2>';
echo '<br /><br />';
if(isset($_GET['wynik'])) 
{
    $wynik_filtru = trim(zabezpiecz($_GET['wynik'])); 
    echo '<form action="http://nportfolio.pl/sklep/index.php?page=search" method="get">
    <input type="hidden" name="page" value="search" />
    <input type="text" name="wynik" value="'.$wynik_filtru.'"/>
    <button>Szukaj</button>
    </form>';
}
else
{
    echo '<div class="wyszukiwarkas"><form action="http://nportfolio.pl/sklep/index.php?page=search" method="get">
    <input type="hidden" name="page" value="search" />
    <input type="text" name="wynik" value="Szukaj w serwisie..." onclick="this.value=\'\'" />
    <button>Szukaj</button>
    </form></div>';
}
if(empty($wynik_filtru) or !preg_match('/^[a-zA-Z0-9]+$/i', $wynik_filtru))
{
    echo '<br /><br /><font color="red"><b>Formularz został wypełniony niepoprawnie!<br /> Nie można wyświetlić wyników wyszukiwania!</b></font>';
    echo '<br /><br />';
}
else
{
    $licz = mysql_query('SELECT COUNT(id) FROM `cms_sklep_produkty`');
    $ile = mysql_fetch_array($licz);
    $na_stronie = 10;
    if(!empty($_GET['subpage']))
    {
        if($_GET['subpage']>0 and $_GET['subpage']%$na_stronie==0 and $_GET['subpage']<$ile[0])
        {
            $aktualnie = $_GET['subpage'];
        }
    }
    else
    {
        $aktualnie = 0;
    }
    echo '<br /><br />Znaleziono: '.$ile[0].'<br /><br />';
    $porcjowanie = porcjowanie($aktualnie, $ile[0], $na_stronie, '/sklep/index.php?page=download&subpage=', '');
    $pobierz = mysql_query("(SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `stan`, `zdjecie` FROM cms_sklep_produkty WHERE nazwa LIKE '%{$wynik_filtru}%')
    UNION ALL (SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `stan`, `zdjecie` FROM cms_sklep_produkty WHERE tresc LIKE '%{$wynik_filtru}%')
    UNION ALL (SELECT `id`, `nazwa`, `tresc`, `kategoria`, `cena`, `stan`, `zdjecie` FROM cms_sklep_produkty WHERE kategoria LIKE '%{$wynik_filtru}%') ORDER BY `id` DESC LIMIT $aktualnie, $na_stronie");
    if (!isset($_GET['id']) or empty($_GET['id']))
    {
        while ($wiersz = mysql_fetch_array($pobierz))
        {
            if($wiersz['nazwa'] != '')
            {
                $wyraz = explode(' ',substr($wiersz['nazwa'], 50)); 
                $wyrazy = substr($wiersz['nazwa'], 0, 50).$wyraz[0];
                $wyraz = $wyrazy;
                $array = array('[url]','[/url]','[b]','[/b]','[i]','[/i]','[u]','[/u]','[small]','[/small]',
                '[big]','[/big]','[p]','[/p]','[center]','[/center]','[color=(http://)?(.*?)]','[/color]',
                '[size=(http://)?(.*?)]','[/size]','[hr=([0-9]{1,2}|100)]','[/hr]');
                $wyrazek = str_replace($array,'',$wyraz);
                echo '<a style="text-decoration: none;" href="/sklep/index.php?page=kat&subkat='.$wiersz['kategoria'].'&id='.$wiersz['id'].'"><b>'.zabezpiecz($wyrazek).'</b></a>';
                echo'<br /><br />';
            }
        }
    }
    echo '<br />'.$porcjowanie.'';
}
?>

Nie mam pojęcia dlaczego nowy kod nie dzieli wyników na strony

Proszę o pomoc :)

Pozostało 580 znaków

2012-06-19 13:26
0

Właśnie zobaczyłem, że problemem jest zapytanie bazy danych. Jeśli robię tylko jedno tj. bez UNION ALL to pokazuje porcjowanie, a ja potrzebuje z UNION ALL(przynajmniej tak mi się wydaje)

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0