![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Witam jestem nowy na forum
i mam pewien problem. Mam baze danych mysql i napisalem wyszukiwarke wszystko ladnie dziala podaje mi odpowiedzi ale: czasem tych odpowiedzi na zadane zapytanie jest np. 5 a czasem 55 (calkiem spora baza). Chcialem zrobic dzielenie odpowiedzi, jesli np. odpowiedzi jest 55 to zeby byl podzial na strony np. po 10 odpowiedzi na stronce. Jest jakies proset rozwiazanie? Pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Może zadziała Ci coś takiego. To jest chyba jedno z prostszych rozwiązań. Można je łączyć w jakiś ciąg w wyszukiwarce zobacz np. http://www.krakcenbud.com.pl/modules.php?n...y=bud&type=wsio. Napewno nie jest doskonałe ale może ktoś na forum przy okazji coś podrzuci do tematu.
Kod <?
$offset=30; // po ile wyników if (!isset($min)) $min=0; if (!isset($max)) $max=$min+$offset; $q = "select jakies_pole from jakas_tabela ORDER BY jakas_nazwa LIMIT $min,$offset"; // dodaj sobie jakieś warunki $result = mysql_query($q); $nrows = mysql_num_rows($result); $x=0; if ($nrows>0) { while($lista = mysql_fetch_array($result)) { echo "$lista[jakies_pole]<br>"; $x++; } } else { // np. nic o nie znaleziono } $prev=$min-$offset; if ($prev>=0) { print "<a href="$PHP_SELF?min=$prev">"; print "< poprzednie</a> "; } $next=$min+$offset; if ($x>=29) { print "<a href="$PHP_SELF?min=$max">"; print "następne ></a>"; } ?> Powodzenia. Piotrek |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
a co to za zmienna $PHP_SELF
wledle tego kodu pokazuje pierwsze 3 znalezione odpowiedzi zmienilem $offset=30 na =3 i if ($x>=29) { na =2 ale jak dam nastepne to Warning: Supplied argument is not a valid MySQL result resource in /katlog/szukaj.php on line 145 w lini 145 jest $nrows = mysql_num_rows($result); |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
$PHP_SELF - to plik skryptu (on sam), ale zanim umieścisz na swojej go na swojej stronie spróbuj wypróbować sam kawałek kodu bo działa http://www.krakcenbud.com.pl/test6.php tylko zaraz po <? umieść mysql_connect(host, uzytk, haslo); oraz mysql_select_db(bazka); itp.
Piotrek |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Witam Piotrze
kod niby dziala log z mysql -a gdy zadaje pierwsze zapytanie 020628 11:44:08 44 Connect www@localhost on 44 Init DB bkt 44 Query SELECT * FROM bazabkt WHERE branza LIKE 'kina%' ORDER BY 'kina%' LIMIT 0, 6 020628 11:44:09 44 Quit gdy zadaje zapytanie z linka nastepne to nieprzesyla wartosi WHERE i LIKE 020628 11:44:15 45 Connect www@localhost on 45 Init DB bkt 45 Query SELECT * FROM bazabkt WHERE LIKE '%' ORDER BY '%' LIMIT 6, 6 45 Quit Jak popisac zeby dodawal te wartosi ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Tu już chyba będziesz musiał poczekać na lepszego fachurę
![]() Piotrek |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
register_globals = On
bo przecia za pierwszym zapytaniem parametry sa przekazywane SELECT * FROM bazabkt WHERE branza LIKE 'kina%' ORDER BY 'kina%' LIMIT 0, 6 dopiero gdy odwolam sie do linka generoanego przez: print "<a href="$PHP_SELF?min=$max">"; parametyr nie sa przekazywane SELECT * FROM bazabkt WHERE LIKE '%' ORDER BY '%' LIMIT 6, 6 moze jakies parametry do $PHP_SELF ![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Uczepiłeś się tego $PHP_SELF
![]() Ja więcej nie wiem i przyznaję się uczciwie. Musisz poczekać na wypowiedzi innych. Jeśli mogę Ci jeszcze tylko poradzić - próbuj na początek odpalić ten kawałek kodu luzem tak jak w moim test6.php a później wstawić dopiero go do strony. Tak dokładnie wygląda plik test6.php - zaznaczyłem Ci miejsca które musisz sam uzupełnić. Zapisz to dokładnie tak samo i przetestuj. <? mysql_connect([b]nazwa_hosta, nazwa_uzytkown, haslo_uzytkown); mysql_select_db([b]nazwa_bazy_danych); $offset=3; if (!isset($min)) $min=0; if (!isset($max)) $max=$min+$offset; $q = "select * from [b]kategorie LIMIT $min,$offset"; $result = mysql_query($q); $nrows = mysql_num_rows($result); $x=0; if ($nrows>0) { while($lista = mysql_fetch_array($result)) { echo "$lista[[b]nazwa<br>"; // treść wywyołana z bazy $x++; } } else { // np. nic o nie znaleziono } $prev=$min-$offset; if ($prev>=0) { print "<a href="test6.php?min=$prev">"; print "< poprzednie</a> "; } $next=$min+$offset; if ($x>=2) { print "<a href="test6.php?min=$max">"; print "następne ></a>"; } ?> Najczęściej u mnie taki błąd Warning: Supplied argument is not a valid MySQL result resource in /costam on line .... występuje kiedy mylę nazwy tabel, nazwy pól tabel itp w zapytaniu mysql_query. Pozdrawiam Piotrek |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Dziekuje Piotrze za wyrozumialesc
Wszystko sie zgadza kod dziala jesli ma nastale przypisane parametry wyszukiwania ale jesli parametry pochodza z innego formularza <form action="szukaj.php" method="POST"> to niestety parametry wyszukiwania nie sa zachowane ma ktos jakis pomysl jak to zrobic |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Może będę miał więcej czasu w weekend żeby Ci pomóc, ale już dziś możesz przegrzebać kawałki kodów które udostępniam na mojej stronie: http://www.krakcenbud.com.pl/modules.php?n...me=okienka_wysz. Masz tam też linki gdzie takie okienka już poprawnie działają.
Pozdrawiam Piotrek |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 456 Pomógł: 0 Dołączył: -- Ostrzeżenie: (0%) ![]() ![]() |
jesli nie odbiera parametrow przeslanych w POST to zamiast
Kod $zmienna daj Kod $HTTP_POST_VARS['zmienna'] ;
-------------------- pozdrawiam
CASTOR |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Witam
mam takie zapytanie do bazy: $query = "SELECT * FROM bazabkt WHERE $select11 LIKE '$value%' ORDER BY firma LIMIT $min, $offset"; $select11 i $value pochodza z POST ja te zmienne zapisac chyba nie tak $query = "SELECT * FROM bazabkt WHERE $HTTP_POST_VARS['select11'] LIKE $HTTP_POST_VARS['value%'] ORDER BY firma LIMIT $min, $offset"; Prosze o pomoc bo juz calkiem sie zkrecilem Pozdrawiam |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A co nie działa?
![]() $query = "SELECT * FROM bazabkt WHERE $HTTP_POST_VARS['select11'] LIKE $HTTP_POST_VARS['value%'] ORDER BY firma LIMIT $min, $offset"; otrzymasz: Kod $value = $HTTP_POST_VARS['value'];
$query = "SELECT * FROM bazabkt WHERE $HTTP_POST_VARS['select11'] LIKE '$value%' ORDER BY firma LIMIT $min, $offset"; nie jestem pewien ale napewno będzie wyglądało ładniej Piotrek |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
To nic niepomaga
$query = "SELECT * FROM bazabkt WHERE $HTTP_POST_VARS['select11'] LIKE '$value%' ORDER BY firma LIMIT $min, $offset"; = Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' nic z tego chyba niebedzie chyba zeby moze zakeszowac jakos te wartosci przekazane z POST |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
No zaraz... bo też tak bezmyślnie przepisałem - skupiając się na $value - przecież po WHERE musisz napisać nazwę pola tabeli a nie $HTTP_POST_VARS['select11'] ?!?!?!
Próbuj dalej! Piotrek |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Ale co ta kurde da?
jak drugie wywolanie przez print "<a href="$PHP_SELF?min=$max">"; niebedzie mialo danych z POST bo niby jak? z nieba? |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie zrażaj się coś wspólnie namotaliśmy - ale może należy rozpatrzyć to od nowa. W tym momencie pod adresem www.webwweb.pl/test6.php jest dokładnie taki kod:
Kod <?
mysql_connect(serwer, uzytkownik, haslo); mysql_select_db(baza_danych); $min = $_GET['min']; // to dodałem w najnowszej wersji $offset=5; if (!isset($min)) $min=0; if (!isset($max)) $max=$min+$offset; $q = "select * from tabela ORDER BY nazwa_pola LIMIT $min,$offset"; $result = mysql_query($q); $nrows = mysql_num_rows($result); $x=0; if ($nrows > 0) { while($lista = mysql_fetch_array($result)) { echo "$lista[nazwa_pola]<br>"; // treść wywyołana z bazy $x++; } } else { // np. nic o nie znaleziono } $prev = $min - $offset; if ($prev>=0) { print "<a href="test6.php?min=$prev">"; print "< poprzednie</a> "; } $next = $min + $offset; if ($x>=4) { print "<a href="test6.php?min=$max">"; print "następne ></a>"; } ?> i rozumiem że chcesz do tego zrobić wyszukiwarkę - ja też ! W dodatku zrobiłem register_globals = OFF więc żeby zadziałało trzeba będzie wykombinować jeszcze przeniesienie zawartości pola z formularza, który umieścimy w innym pliku. Piotrek |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Witam
ja mam identyczny kod jak ty jest na www.ll.pl/baza dorobilem formularz i teraz tak gdy zadam zapytanie np. a w polu nazwa szukana (polem w miescie prosze sie niesugerowac nie jest narazie przypisane) to jest odp. i wszystko dziala log z mysqla: 8 Query SELECT * FROM bazabkt WHERE firma LIKE 'a%' ORDER BY firma LIMIT 0,3 wszystkie parametry z formularza zostaly prawidlowo przekazane do: $q = "SELECT * FROM bazabkt WHERE $selekcja LIKE '$szukamy%' ORDER BY firma LIMIT $min,$offset"; teraz przechodze do linka "nastepne" kod: print "<a href="test.php?min=$max">"; print "nastpne ></a>"; i juz nieznajduje nic bo nie ma parametrow z formularza dla $selekcja i $szukamy log z mysql: 9 Query SELECT * FROM bazabkt WHERE LIKE '%' ORDER BY firma LIMIT 3,3 Wiec jakie pomysly? Pozdrawiam Robert |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 02:25 |