www.WebTips.pl: [PHP][MySQL]Wyszukiwarka - stronicowanie wyników wyszukiwania - www.WebTips.pl

Skocz do zawartości

Strona 1 z 1

[PHP][MySQL]Wyszukiwarka - stronicowanie wyników wyszukiwania

#1 Użytkownik nie jest zalogowany   nansss 

  • Senior
  • PipPipPip
  • Grupa Użytkownik
  • Postów 314
  • Rejestracja 28 mar 09

Napisano 07 luty 2010 - 20:53

Witam wszystkich forumowiczów.
Jako, że kończę pisać swoją stronę(została do zrobienia grafika) w wyszukiwarce chciałbym ograniczyć ilość wyświetlanych rekordów na jedną stronę.
Korzystam ze skryptu, który już mam napisany i działa przy innych plikach tutaj coś jest nie tak.
Ograniczył do wyświetlania 5 rekordów, ale pokazuje tylko pierwszą stronę. Rekordów w bazie jest 36 więc podzielić na 5=7 i trochę czyli 8 stron, a on pokazuje tylko 5 ostatnich. Nie bardzo wiem co jest źle.
Z góry dziękuje za pomoc.
Pozdrawiam :)

szukaj.php

<?php
include('functions/filtr.php');
include('include/db.php');
$subpage = $_GET['page'];
$perPage = 5;
if (!empty($_GET['subpage']))
{
if (is_numeric($_GET['subpage']))
{
$subpage = (int) $_GET['subpage'];
}
}
if ($subpage < 1)
{
$subpage = 1;
}
$start = ($subpage - 1) * $perPage;
$_POST['wynik'] = trim(filtr($_POST['wynik'])); 
if(empty($_POST['wynik']))
{
echo '<font color="red"><b>Formularz został wypełniony niepoprawnie!<br /> Nie można wyświetlić wyników wyszukiwania!</b></font>';
echo '<br /><br />';
}
else
{
$zapytanie = "SELECT `id`, `tresc`, `adres`, `numer` FROM home WHERE tresc LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM kontakt WHERE tresc LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM oferta WHERE tresc LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM o_mnie WHERE tresc LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM portfolio WHERE tresc LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `nazwa`, `adres`, `numer` FROM portfolio WHERE nazwa LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `technologia`, `adres`, `numer` FROM portfolio WHERE technologia LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `adres_strony`, `adres`, `numer` FROM portfolio WHERE adres_strony LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM reklama WHERE tresc LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM skrypty WHERE tresc LIKE '%{$_POST['wynik']}%'
UNION SELECT `id`, `nazwa`, `adres`, `numer` FROM skrypty WHERE nazwa LIKE '%{$_POST['wynik']}%' ORDER BY `id` DESC LIMIT ".filtr($start).", ".filtr($perPage)."";
$idzapytania = mysql_query($zapytanie);
$oblicz = mysql_num_rows($idzapytania);
if (!isset($_GET['id']) or empty($_GET['id']))
{
echo'Znaleziono: '.$oblicz.'<br /><br />';
for($x=0;$x<$oblicz;$x++)
{
$wiersz = mysql_fetch_array($idzapytania);
echo $x+1;
echo '. ';
$wyraz = explode(' ',substr($wiersz['tresc'], 50)); 
$wyrazy = substr($wiersz['tresc'], 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]','[img]','[/img]','[hr=([0-9]{1,2}|100)]','[/hr]');
$wyrazek = str_replace($array,'',$wyraz);
echo '<a style="text-decoration: none;" href="'.$wiersz['adres'].'/'.$wiersz['numer'].'"><b>'.$wyrazek.'</b></a>';
echo'<br /><br />';
}
}
$prev = $subpage - 1;
$next = $subpage + 1;
$prevLink = '/szukaj/subpage/'.$prev.'';
$nextLink = '/szukaj/subpage/'.$next.'';
$ilosc_wierszy = mysql_num_rows($idzapytania);
echo '<div style="text-align:center;">';
if($subpage > 1)
echo'<a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a> ';
$stron=round($ilosc_wierszy/$perPage);
for($i=1; $i<=$stron; ++$i)
{
if($i==$subpage)
echo '<b>'.$i.' </b>';
else
echo '<a style="text-decoration: none;" href="/szukaj/subpage/'.$i.'">'.$i.' </a>';
}
if($subpage < $stron)
echo ' <a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a>';
echo '</div>';
}
mysql_close($connect);
?>


PS. Nie pokazuje nawet napisów Następna strona, Poprzednia strona, a wpisując w adres przeglądarki /szukaj/subpage/2 wyświetla komunikat:
Formularz został wypełniony niepoprawnie!
Nie można wyświetlić wyników wyszukiwania!

Jak na razie udało mi się pokazać Liczbę stron, napis poprzednia strona i napis następna strona, ponieważ usunąłem z zapytania
ORDER BY `id` DESC LIMIT ".filtr($start).", ".filtr($perPage)."


Teraz pytanie. Jak ustalić limit w zapytaniu z UNION?

Ok zmieniłem.
Z zapytania zupełnie usunąłem
ORDER BY `id` DESC LIMIT ".filtr($start).", ".filtr($perPage)."

I zmieniłem
for($x=0;$x<$oblicz;$x++)
na
for($x=0;$x<5;$x++)


EDIT:


Przypuśćmy, że znajdzie mi 4 rekordy. To co wtedy?

1. pierwszy rekord

2. drugi rekord

3. trzeci rekord

4. czwarty rekord

5.

A poza tym nie działa stronicowanie tj. Wyszukując np. frazę technologia znajduje 36 rekordów. Dzieli je po 5 na stronę, ale chcąc przejść do następnej podstrony tj. szukaj/subpage/2 wyświetla komunikat
Formularz został wypełniony niepoprawnie!
Nie można wyświetlić wyników wyszukiwania!

Nie bardzo wiem jak temu zaradzić.

Wyświetl postUżytkownik nansss dnia 07 luty 2010 - 18:24 napisał

Przypuśćmy, że znajdzie mi 4 rekordy. To co wtedy?

1. pierwszy rekord

2. drugi rekord

3. trzeci rekord

4. czwarty rekord

5.


To tak: ten problem rozwiązany jeszcze tylko to: chcąc przejść do następnej podstrony tj. szukaj/subpage/2 wyświetla komunikat
Formularz został wypełniony niepoprawnie!
Nie można wyświetlić wyników wyszukiwania!

Ok już sobie poradziłem. Teraz tylko mam pytanie jak zrobić z formularzem

<form action="/szukaj" method="get">
<input type="text" name="wynik" value="Szukaj w serwisie..." onclick="this.value=' '" />
<input class="przycisk_szukaj" type="submit" value="Szukaj" />
</form>


.htaccess
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^portfolio/subpage/([a-z0-9_-]+) index.php?page=portfolio&subpage=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^portfolio/([a-z0-9_-]+) index.php?page=portfolio&id=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^skrypty/subpage/([a-z0-9_-]+) index.php?page=skrypty&subpage=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^skrypty/([a-z0-9_-]+) index.php?page=skrypty&id=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^reklama/subpage/([a-z0-9_-]+) index.php?page=reklama&subpage=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^reklama/([a-z0-9_-]+) index.php?page=reklama&id=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^cpadmin_edytuj_w_portfolio/edit/([a-z0-9_-]+) index.php?page=cpadmin_edytuj_w_portfolio&edytuj=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^cpadmin_edytuj_skrypt/edit/([a-z0-9_-]+) index.php?page=cpadmin_edytuj_skrypt&edytuj=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^cpadmin_edytuj_reklame/edit/([a-z0-9_-]+) index.php?page=cpadmin_edytuj_reklame&edytuj=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^cpadmin_home/edit/([a-z0-9_-]+) index.php?page=cpadmin_home&edit=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^cpadmin_oferta/edit/([a-z0-9_-]+) index.php?page=cpadmin_oferta&edit=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^cpadmin_o_mnie/edit/([a-z0-9_-]+) index.php?page=cpadmin_o_mnie&edit=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^cpadmin_kontakt/edit/([a-z0-9_-]+) index.php?page=cpadmin_kontakt&edit=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^szukaj/wynik/([a-z0-9_-]+)/subpage/([a-z0-9_-]+) index.php?page=szukaj&wynik=$1&subpage=$2
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^szukaj/wynik/([a-z0-9_-]+) index.php?page=szukaj&wynik=$1
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z0-9_-]+) index.php?page=$1 [L]



szukaj.php
<?php
include('functions/filtr.php');
include('include/db.php');
$subpage = $_GET['page'];
$perPage = 5;
if (!empty($_GET['subpage']))
{
if (is_numeric($_GET['subpage']))
{
$subpage = (int) $_GET['subpage'];
}
}
if ($subpage < 1)
{
$subpage = 1;
}
$start = ($subpage - 1) * $perPage;
$wynik_filtru = trim($_GET['wynik']); 
if(empty($wynik_filtru))
{
echo '<font color="red"><b>Formularz został wypełniony niepoprawnie!<br /> Nie można wyświetlić wyników wyszukiwania!</b></font>';
echo '<br /><br />';
}
else
{
$zapytanie = "SELECT `id`, `tresc`, `adres`, `numer` FROM home WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM kontakt WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM oferta WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM o_mnie WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM portfolio WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `nazwa`, `adres`, `numer` FROM portfolio WHERE nazwa LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `technologia`, `adres`, `numer` FROM portfolio WHERE technologia LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `adres_strony`, `adres`, `numer` FROM portfolio WHERE adres_strony LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM reklama WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM skrypty WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `nazwa`, `adres`, `numer` FROM skrypty WHERE nazwa LIKE '%{$wynik_filtru}%'";
$idzapytania = mysql_query($zapytanie) or die (mysql_error());
$oblicz = mysql_num_rows($idzapytania);
if (!isset($_GET['id']) or empty($_GET['id']))
{
echo'Znaleziono: '.$oblicz.'<br /><br />';
for($x=0;$x<5;$x++)
{
$wiersz = mysql_fetch_array($idzapytania);
if($wiersz['tresc'] != '')
{
echo $x+1;
echo '. ';
$wyraz = explode(' ',substr($wiersz['tresc'], 50)); 
$wyrazy = substr($wiersz['tresc'], 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]','[img]','[/img]','[hr=([0-9]{1,2}|100)]','[/hr]');
$wyrazek = str_replace($array,'',$wyraz);
echo '<a style="text-decoration: none;" href="'.$wiersz['adres'].'/'.$wiersz['numer'].'"><b>'.$wyrazek.'</b></a>';
echo'<br /><br />';
}
}
}
$prev = $subpage - 1;
$next = $subpage + 1;
$prevLink = '/szukaj/wynik/'.$wynik_filtru.'/subpage/'.$prev.'';
$nextLink = '/szukaj/wynik/'.$wynik_filtru.'/subpage/'.$next.'';
$ilosc_wierszy = mysql_num_rows($idzapytania);
echo '<div style="text-align:center;">';
if($subpage > 1)
echo'<a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a> ';
$stron=round($ilosc_wierszy/$perPage);
for($i=1; $i<=$stron; ++$i)
{
if($i==$subpage)
echo '<b>'.$i.' </b>';
else
echo '<a style="text-decoration: none;" href="/szukaj/wynik/'.$wynik_filtru.'/subpage/'.$i.'">'.$i.' </a>';
}
if($subpage < $stron)
echo ' <a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a>';
echo '</div>';
}
mysql_close($connect);
?>


Formularz próbuje wyszukać tak:

szukaj/wynik?=+tutaj
a chciałbym
szukaj/wynik/tutaj
0


Strona 1 z 1

Odpowiedzi do tego tematu

#2 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 08 luty 2010 - 15:00

Może niech formularz przesyła POSTem, a odpowiedni plik php headerem przekierowuje na szukaj/wynik/...?
0

#3 Użytkownik nie jest zalogowany   nansss 

  • Senior
  • PipPipPip
  • Grupa Użytkownik
  • Postów 314
  • Rejestracja 28 mar 09

Napisano 08 luty 2010 - 17:39

Coraz to nowe poprawki wprowadzam bo nie zawsze działa jak chcę i teraz mam problem:
Otóż:
1. Dzieli na strony i wyświetla Poprzednia strona 1 2 3 4 5 6 7 Następna strona
Ale na każdej podstronie to samo i tyle samo
2. Wyświetla: jeśli jest 7 stron i 36 rekordów to wyświetla 7 razy 36 rekordów.

szukaj.php
<h2>Wyniki wyszukiwania</h2>
<form action="/szukaj" method="post">
<input type="text" name="wynik" value="Szukaj w serwisie..." onclick="this.value=' '" />
<input class="przycisk_szukaj" type="submit" value="Szukaj" />
</form><br />
<?php
include('functions/filtr.php');
include('include/db.php');
$subpage = $_GET['page'];
$perPage = 5;
if (!empty($_GET['subpage']))
{
if (is_numeric($_GET['subpage']))
{
$subpage = (int) $_GET['subpage'];
}
}
if ($subpage < 1)
{
$subpage = 1;
}
$start = ($subpage - 1) * $perPage;
$wynik_filtru = trim($_GET['wynik']); 
if(empty($wynik_filtru))
{
echo '<font color="red"><b>Formularz został wypełniony niepoprawnie!<br /> Nie można wyświetlić wyników wyszukiwania!</b></font>';
echo '<br /><br />';
}
else
{
$zapytanie = "SELECT `id`, `tresc`, `adres`, `numer` FROM home WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM kontakt WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM oferta WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM o_mnie WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM portfolio WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `nazwa`, `adres`, `numer` FROM portfolio WHERE nazwa LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `technologia`, `adres`, `numer` FROM portfolio WHERE technologia LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `adres_strony`, `adres`, `numer` FROM portfolio WHERE adres_strony LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM reklama WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM skrypty WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `nazwa`, `adres`, `numer` FROM skrypty WHERE nazwa LIKE '%{$wynik_filtru}%'";
$idzapytania = mysql_query($zapytanie) or die (mysql_error());
$ile = mysql_num_rows($idzapytania);
}
if (!isset($_GET['id']) or empty($_GET['id']))
{
echo 'Znaleziono: '.$ile.'<br /><br />';
while ($wiersz = mysql_fetch_array($idzapytania))
{
if($wiersz['tresc'] != '')
{
for($x=0;$x<$ile;$x++)
{
echo $x+1;
echo '. ';
$wyraz = explode(' ',substr($wiersz['tresc'], 50)); 
$wyrazy = substr($wiersz['tresc'], 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]','[img]','[/img]','[hr=([0-9]{1,2}|100)]','[/hr]');
$wyrazek = str_replace($array,'',$wyraz);
echo '<a style="text-decoration: none;" href="'.$wiersz['adres'].'/'.$wiersz['numer'].'"><b>'.$wyrazek.'</b></a>';
echo'<br /><br />';
}
}
}
$prev = $subpage - 1;
$next = $subpage + 1;
$prevLink = '/szukaj/wynik/'.$wynik_filtru.'/subpage/'.$prev.'';
$nextLink = '/szukaj/wynik/'.$wynik_filtru.'/subpage/'.$next.'';
echo '<div style="text-align:center;">';
if($subpage > 1)
echo'<a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a> ';
$stron=round($ile/$perPage);
for($i=1; $i<=$stron; ++$i)
{
if($i==$subpage)
echo '<b>'.$i.' </b>';
else
echo '<a style="text-decoration: none;" href="/szukaj/wynik/'.$wynik_filtru.'/subpage/'.$i.'">'.$i.' </a>';
}
if($subpage < $stron)
echo ' <a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a>';
echo '</div>';
}
mysql_close($connect);
?>

0

#4 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 08 luty 2010 - 18:25

Poszukaj sobie tutorialu Ewelinki o porcjowaniu danych i zamiast UNION SELECT używaj OR w warunkach :P
0

#5 Użytkownik nie jest zalogowany   nansss 

  • Senior
  • PipPipPip
  • Grupa Użytkownik
  • Postów 314
  • Rejestracja 28 mar 09

Napisano 08 luty 2010 - 19:07

Ja już się w tym wszystkim pogubiłem :(

<h2>Wyniki wyszukiwania</h2>
<form action="/szukaj" method="post">
<input type="text" name="wynik" value="Szukaj w serwisie..." onclick="this.value=' '" />
<input class="przycisk_szukaj" type="submit" value="Szukaj" />
</form><br />
<?php
include('functions/filtr.php');
include('include/db.php');
$subpage = $_GET['page'];
$perPage = 5;
if (!empty($_GET['subpage']))
{
if (is_numeric($_GET['subpage']))
{
$subpage = (int) $_GET['subpage'];
}
}
if ($subpage < 1)
{
$subpage = 1;
}
$start = ($subpage - 1) * $perPage;
$wynik_filtru = trim($_GET['wynik']); 
if(empty($wynik_filtru))
{
echo '<font color="red"><b>Formularz został wypełniony niepoprawnie!<br /> Nie można wyświetlić wyników wyszukiwania!</b></font>';
echo '<br /><br />';
}
else
{
$zapytanie = "SELECT `id`, `tresc`, `adres`, `numer` FROM home WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM kontakt WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM oferta WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM o_mnie WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM portfolio WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `nazwa`, `adres`, `numer` FROM portfolio WHERE nazwa LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `technologia`, `adres`, `numer` FROM portfolio WHERE technologia LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `adres_strony`, `adres`, `numer` FROM portfolio WHERE adres_strony LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM reklama WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM skrypty WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `nazwa`, `adres`, `numer` FROM skrypty WHERE nazwa LIKE '%{$wynik_filtru}%'";
$idzapytania = mysql_query($zapytanie) or die (mysql_error());
$ile = mysql_num_rows($idzapytania);
}
if (!isset($_GET['id']) or empty($_GET['id']))
{
echo 'Znaleziono: '.$ile.'<br /><br />';
while ($wiersz = mysql_fetch_array($idzapytania))
{
if($wiersz['tresc'] != '')
{
$wyraz = explode(' ',substr($wiersz['tresc'], 50)); 
$wyrazy = substr($wiersz['tresc'], 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]','[img]','[/img]','[hr=([0-9]{1,2}|100)]','[/hr]');
$wyrazek = str_replace($array,'',$wyraz);
echo '<a style="text-decoration: none;" href="'.$wiersz['adres'].'/'.$wiersz['numer'].'"><b>'.$wyrazek.'</b></a>';
echo'<br /><br />';
}
}
$prev = $subpage - 1;
$next = $subpage + 1;
$prevLink = '/szukaj/wynik/'.$wynik_filtru.'/subpage/'.$prev.'';
$nextLink = '/szukaj/wynik/'.$wynik_filtru.'/subpage/'.$next.'';
echo '<div style="text-align:center;">';
if($subpage > 1)
echo'<a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a> ';
$stron=round($ile/$perPage);
for($i=1; $i<=$stron; ++$i)
{
if($i==$subpage)
echo '<b>'.$i.' </b>';
else
echo '<a style="text-decoration: none;" href="/szukaj/wynik/'.$wynik_filtru.'/subpage/'.$i.'">'.$i.' </a>';
}
if($subpage < $stron)
echo ' <a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a>';
echo '</div>';
}
mysql_close($connect);
?>


To tak:
1. pokazuje Znaleziono: 36 i 1 2 3 4 5 6 7 Następna strona
Tylko, że na każdej stronie pokazuje to samo i jeszcze zamiast 5 wyników na każdej to wszystkie 36 na każdej
0

#6 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 08 luty 2010 - 21:29

Przeczytałeś to co napisałem w poprzednim poście? Jeśli tak, to czemu dajesz ten sam kod? Jeśli nie, to czemu spamujesz dając ten sam kod?
0

#7 Użytkownik nie jest zalogowany   nansss 

  • Senior
  • PipPipPip
  • Grupa Użytkownik
  • Postów 314
  • Rejestracja 28 mar 09

Napisano 10 luty 2010 - 15:19

Jest tam mała zmiana
0

#8 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 10 luty 2010 - 16:47

Zmień to SELECT to zerknę w to, bo inaczej muszę uznać że mnie nie słuchasz...
0

#9 Użytkownik nie jest zalogowany   nansss 

  • Senior
  • PipPipPip
  • Grupa Użytkownik
  • Postów 314
  • Rejestracja 28 mar 09

Napisano 10 luty 2010 - 19:52

To jak ma ten SELECT wyglądać. Chyba nie mogę go zmienić ponieważ jest to łączenie tabel.
Słyszałem coś o wirtualnej tabeli może to pomoże?
0

#10 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 10 luty 2010 - 20:31

$zapytanie = "SELECT `id`, `tresc`, `adres`, `numer` FROM home WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM kontakt WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM oferta WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM o_mnie WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM portfolio WHERE tresc LIKE '%{$wynik_filtru}%' OR nazwa LIKE '%{$wynik_filtru}%' OR technologia LIKE '%{$wynik_filtru}%' OR adres_strony LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM reklama WHERE tresc LIKE '%{$wynik_filtru}%'
UNION SELECT `id`, `tresc`, `adres`, `numer` FROM skrypty WHERE tresc LIKE '%{$wynik_filtru}%' OR nazwa LIKE '%{$wynik_filtru}%'";
Ładniej? Chodziło mi o elementy pobierane z jednej tabeli, o ich połączenie.


Tak jak to robisz to pobierasz i wyświetlasz wszystko (while z mysql array). Weź użyj LIMIT w jakiś sposób bądź wyświetlaj tylko odpowiednie rekordy (tj. strona pierwsza: indeksy z tablicy o nr 0-9, druga 10-19 itd.), najpierw pobierając wszystkie wyniki do tablicy czymś takim:
while ($wynik = mysql_fetch_array($query))
{
    $tablica[] = $wynik;
}
(dopiero po tym wybór indeksów).
0

#11 Użytkownik nie jest zalogowany   nansss 

  • Senior
  • PipPipPip
  • Grupa Użytkownik
  • Postów 314
  • Rejestracja 28 mar 09

Napisano 12 luty 2010 - 18:03

Nie mogę połączyć tak zapytań bo nie w każdej tabeli jest kolumna adres_strony lub technologia lub nazwa
0

#12 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 12 luty 2010 - 20:21

WTF...?

Przecież to jest de facto twoje zapytanie, ale krótsze i chyba szybsze... przeczytaj to uważnie i jeśli dalej się upierasz, że nie możesz tak zrobić, idź poczytaj o UNION i OR.
0

#13 Użytkownik nie jest zalogowany   nansss 

  • Senior
  • PipPipPip
  • Grupa Użytkownik
  • Postów 314
  • Rejestracja 28 mar 09

Napisano 13 luty 2010 - 22:17

Mam problem z formularzem.

<?php
$wynik_filtru = trim($_GET['wynik']); 
echo '<h2>Wyniki wyszukiwania</h2>';
echo '<form action="/szukaj/wynik/'.$wynik_filtru.'" method="post">';
?>
<input type="text" name="wynik" value="Szukaj w serwisie..." onclick="this.value=' '" />
<input class="przycisk_szukaj" type="submit" value="Szukaj" />
</form><br />


i robi tylko takie coś:

adres.pl/szukaj/wynik/

a powinien

adres.pl/szukaj/wynik/to_co_wpisze_w type="text"
nie wiem jak to zrobić.
Proszę o pomoc :)
0

#14 Użytkownik nie jest zalogowany   Qba_23 

  • Senior
  • PipPipPip
  • Grupa Użytkownik
  • Postów 487
  • Rejestracja 31 mar 08
  • MiejscowośćHaczów

Napisano 14 luty 2010 - 10:40

w ten sposób tego nie osiągniesz :P Możesz użyć metody get, ale wtedy otrzymasz adres adres.pl/szukaj/wynik/wynik=to_co_wpiszesz :P ew. możesz do tego wykorzystać JS ;)
Nie pomagam na GG!
Masz do mnie sprawę, napisz na forum!
Na GG pisz tylko wtedy, gdy sam Cię o to poproszę!
0

#15 Użytkownik nie jest zalogowany   nansss 

  • Senior
  • PipPipPip
  • Grupa Użytkownik
  • Postów 314
  • Rejestracja 28 mar 09

Napisano 14 luty 2010 - 10:56

Na JS się nie znam.. :)
0

#16 Użytkownik nie jest zalogowany   Sebool 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 9
  • Rejestracja 02 lis 08

Napisano wczoraj, 23:34

Zarżniesz baze używając LIKE :)
0

Strona 1 z 1


Szybka odpowiedź

  

Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych