Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyszukiwarka, limit i podzial na strony
Revan
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

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


witam... napisałem sobie encyklopedie... tresc pliku enc.php wyswietlajaca wyniki wyglada tak :
  1. <?php
  2. $db = mysql_connect (&#092;"localhost\", \"revan\", \"******\");
  3. mysql_select_db (&#092;"klan\");
  4.  
  5. $zapytanie = &#092;"SELECT * FROM hasla WHERE temat LIKE \"$litera%\" ORDER BY temat DESC \";
  6. $wykonaj = mysql_query($zapytanie);
  7. while($wiersz = mysql_fetch_array($wykonaj))
  8. {
  9. print &#092;"\".$wiersz['autor'].\"<br>\";
  10. print &#092;"<b>\".$wiersz['temat'].\"</b><br>\";
  11. print &#092;"\".$wiersz['data'].\"<br>\";
  12. print &#092;"\".$wiersz['tresc'].\"<br><br>\";
  13. }
  14. mysql_close($db); 
  15. ?>

to dziala i jestem z tego bardzo zadowolony... ^^ ale nie wiem jak zrobic 2 rzeczy : otoz. ograniczyć $wiersz['tresc'] do 100 znakow i druga rzecz to podzielic wyniki na strony jezeli jest np. 40 takowych na dana litere... zeby na 1 strone miescilo sie 10 wynikow... i tworzyl sie link do nastepnej strony jezeli ilosc_wynikow > 10 ... moglby ktos pomoc ? z gory dziekuje, cya...
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Pytanie pierwsze :arrow: substr()
Pytanie drugie :arrow: http://forum.php.pl/viewtopic.php?t=17484&...t=stronicowanie albo poszukaj pod hasłem stronicowanie
Go to the top of the page
+Quote Post
Revan
post
Post #3





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

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


ok, dzieki (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
moge to dopiero wyprobowac jutro bo mama kaze isc spac (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif) jak mi sie nie uda to jak wstane to napisze (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Revan
post
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

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


z limitem na znaki udalo sie bez problemu ale ze stronicowaniem juz tak nie jest ... probowalem 2 skrypty i nic... bardziej mi sie spodobal ten do ktorego podales link (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ... jednak juz 2 godzinki sie mecze z jego uruchomieniem ;] ... zcy moglby ktos go "zmontowac" ? tyle co moge podac :

[php:1:abe41ec95c]<?php
$db = mysql_connect ("localhost", "revan", "******");
mysql_select_db('klan');
$zapytanie = "SELECT * FROM hasla WHERE temat LIKE "$litera%" ORDER BY temat DESC";
$wykonaj = mysql_query($zapytanie);
while($wiersz = mysql_fetch_array($wykonaj))
{
print "".$wiersz['autor']."<br>";
print "<b>".$wiersz['temat']."</b><br>";
print "".$wiersz['data']."<br>";
$rest = substr($wiersz['tresc'], 0, 100);
print "".$rest."...<br><br>";
}
?>[/php:1:abe41ec95c]
to jest moja czesc
a to skrypt :
[php:1:abe41ec95c]<?php
<?php
require ("gry.inc");
mysql_connect($bb_gry_hostname,$bb_gry_mysqluser,$bb_gry_mysqlpassword)
or die("Unable to connect to SQL server");

if (!isset($first)) { $first = 0; }

$ltmp = 3; // wielkosc "porcji", tu: 10 rekordow
$query = ("select select nr, cos_tam from gry from gry LIMIT $first,$ltmp;");
$gry = mysql_db_query($bb_gry_db, $query) or die("Select Failed!");
while ($row = mysql_fetch_assoc($gry))
{

?>
//tutaj wyswietlamy dane i wpisujemy co tylko chcemy
<?

}
$count = mysql_num_rows(mysql_query("select nr, cos_tam from gry"));
$count = $count/$ltmp;

$ile = ceil($count);
if ($first!=0) print ("<a href="strona.php?first=" . ($first-$ltmp) . ""
title="Poprzednie"><big>&laquo;</big></a> ");

for ($i=1;$i<=$ile;$i++)
{
print ("<a href="strona.php?first=" . ($i*$ltmp-$ltmp) . "" title="" .
($i*$ltmp-($ltmp-1)) . "-" . ($i*$ltmp) ."">");

if ($first==($i*$ltmp-$ltmp))
{
print ("<b>[" . $i . "]</b></a> "); $akt=$i; } else { print ("[" . $i .
"]</a> ");
}
}

if ($akt<$ile) print ("<a href="strona.php?first=" . ($first+$ltmp) . ""
title="Następne"><big>&raquo;</big></a>");
?>[/php:1:abe41ec95c]
aha, jeszcze powiem ze to znajduje sie w index.php?jutsu=enc (to po to zeby to wstawic zamiast strona.php...
mnie juz glowa boli od tego :/ ...
Go to the top of the page
+Quote Post
Revan
post
Post #5





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

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


sprobowalem zrobic cos takiego i nie wychodzi :/ moglby ktos wskazac blad (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
[php:1:1ac758e8e8]<?php
$db = mysql_connect ("localhost", "revan", "bionwn");
mysql_select_db('klan');
$zapytanie = "SELECT * FROM hasla WHERE temat LIKE "$litera%" ORDER BY temat DESC LIMIT ".($page*$ile).",$ile";
$wykonaj = mysql_query($zapytanie);
while($wiersz = mysql_fetch_array($wykonaj))
{
print "".$wiersz['autor']."<br>";
print "<b>".$wiersz['temat']."</b><br>";
print "".$wiersz['data']."<br>";
$rest = substr($wiersz['tresc'], 0, 100);
print "".$rest."...<br><br>";
}

list($wszystkich)=mysql_fetch_row(mysql_db_query("klan","SELECT count(*) FROM hasla LIKE "$litera%"));
$podstron=ceil($wszystkich/$ile);

if ($page>0) echo "<a href=skrypt.php?page=".($page-1).">Poprzednia</a>"; else
echo "Poprzednia";
for ($i=1; $i<=$podstron; $i++) {
if ($i==$page-1) echo "$i"; else echo "<a href=skrypt.php?page=$i> $i
</a>";
}
if ($page<$podstron) echo "<a href=skrypt.php?page=".($page+1).">Następna</a>";
else echo "Następna";
mysql_close($db);
?>[/php:1:1ac758e8e8]
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Zamiast odsyłać cię do innych linków opstanowiłem sam napisac krótki przykład.
Mamy taką tabelę w bazie danych:
  1. CREATE TABLE `stronicowanie` (
  2. `id` int(4) NOT NULL AUTO_INCREMENT,
  3. `text` varchar(10) NOT NULL DEFAULT 'bla',
  4. UNIQUE KEY `id` (`id`)
  5. ) TYPE=MyISAM AUTO_INCREMENT=12 ;

i taki kod:
  1. <?php
  2.  
  3. $intLimit = 3; //ilość rekordów na stronie;
  4.  
  5. if( empty( $_GET['id'] ) )
  6. {
  7. $intCurrentPage = 0;
  8. }
  9. else
  10. {
  11. $intCurrentPage = $_GET['id'];
  12. }
  13.  
  14. $resBaseHandle = mysql_connect(&#092;"localhost\", \"user\", \"pass\");
  15. mysql_select_db(&#092;"test\", $resBaseHandle);
  16.  
  17. $resResult = mysql_query(&#092;"SELECT id FROM stronicowanie\");
  18. $intCount = mysql_num_rows($resResult);
  19. echo $intCount.'<br>';
  20.  
  21. $resResult = mysql_query(&#092;"SELECT * FROM stronicowanie LIMIT \".($intCurrentPage*$intLimit).\",\".$intLimit);
  22. while( $arrRow = mysql_fetch_array( $resResult ) )
  23. {
  24. echo $arrRow[ 'id' ].' - '.$arrRow[ 'text' ].'<br>';
  25. } 
  26. echo '<br>';
  27. for($i = 0; $i<ceil($intCount/$intLimit); $i++)
  28. {
  29. echo ' <a href=\"index?id='.$i.'\">['.($i+1).']</a> ';
  30. }
  31.  
  32.  
  33. mysql_close($resBaseHandle);
  34.  
  35. ?>

Bo w zasadze sam miałem ochote sobie coś skrobnąć, ale nie mam czasu na nic więcej. :wink:
Pozdrawiam. Mike.
Go to the top of the page
+Quote Post
Revan
post
Post #7





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

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


cze
po przerobieniu otrzymalem taki kod :
[php:1:89d1bedef5]<?php
$intLimit = 3; //ilość rekordów na stronie;

if( empty( $_GET['id'] ) )
{
$intCurrentPage = 0;
}
else
{
$intCurrentPage = $_GET['id'];
}

$resBaseHandle = mysql_connect("localhost", "revan", "bionwn");
mysql_select_db("klan", $resBaseHandle);

$resResult = mysql_query("SELECT temat FROM hasla");
$intCount = mysql_num_rows($resResult);
echo $intCount.'<br>';

$resResult = mysql_query("SELECT * FROM hasla LIMIT
".($intCurrentPage*$intLimit).",".$intLimit);
while( $arrRow = mysql_fetch_array( $resResult ) )
{
echo $arrRow[ 'autor' ].' - '.$arrRow[ 'tresc' ].'<br>';
}
echo '<br>';
for($i = 0; $i<ceil($intCount/$intLimit); $i++)
{
echo ' <a href="index.php?jutsu=enc&?id='.$i.'">['.($i+1).']</a> ';
}


mysql_close($resBaseHandle);
?>[/php:1:89d1bedef5]
i tak po 1sze. jak dodac WHERE temat LIKE "$litera%" do wyswietlania i liczenia wierszy w tej tabeli i
2. to nie dziala ^^ ... tzn. nie ma zadnego bledu ale jak kliknie sie na dana cyfre to nie wzrasta limit tj. zawsze sa te same 3 poczatkowe wiersze z bazy...
Go to the top of the page
+Quote Post
mike
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Niemożliwe, że nie działa. Skrypt wypróbowany na 100%. Zresztą napisany tylko i wyłącznie na potrzeby tego topicu. :wink: Nawet tabele sobie specjalnie zrobiłem żebym mieć pewność. :wink:
Ale to nic, spróbujmy jeszcze raz :

1. Zrobiłeś lekki błąd:
masz tak:
Cytat
echo ' <a href="index.php?jutsu=enc&? ';

2. W skrypcie jest tak:
  1. <?php
  2. // ...
  3. if( empty( $_GET['id'] ) )
  4. // ...
  5. ?>

Może masz włączone [b]register_globals</b>. Jeżeli tak to wyłącz, albo zrób tak:
  1. <?php
  2. // ...
  3. if( empty( $id ) )
  4. // ...
  5. ?>
Go to the top of the page
+Quote Post
Revan
post
Post #9





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

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


ehh... nic nie dalo :/ ... na pw podalem Ci adres stronki abys zobaczyl, a tutaj skrypt jaki mam w enc.php (w czesci)
[php:1:606b79424a]<?php

$intLimit = 5; //ilość rekordów na stronie;

if( empty( $id ) )
{
$intCurrentPage = 0;
}
else
{
$intCurrentPage = $_GET['id'];
}

$resBaseHandle = mysql_connect("localhost", "revan", "bionwn");
mysql_select_db("klan", $resBaseHandle);

$resResult = mysql_query("SELECT temat FROM hasla");
$intCount = mysql_num_rows($resResult);
echo $intCount.'<br>';

$resResult = mysql_query("SELECT * FROM hasla LIMIT
".($intCurrentPage*$intLimit).",".$intLimit);
while( $arrRow = mysql_fetch_array( $resResult ) )
{
echo $arrRow[ 'autor' ].' - '.$arrRow[ 'tresc' ].'<br>';
}
echo '<br>';
for($i = 0; $i<ceil($intCount/$intLimit); $i++)
{
echo ' <a href="index?jutsu=enc&?id='.$i.'">['.($i+1).']</a> ';
}


mysql_close($resBaseHandle);

?>[/php:1:606b79424a]
jakbys mogl napisac caly skrypt tym razem dostosowany do mojego serwera to bylbym niezmiernie wdzieczny... hehe siedze nad tym od 8:00
Go to the top of the page
+Quote Post
Revan
post
Post #10





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

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


ekhem... ale ze mnie lama ;] usunalem ? i dziala... no ale pozostaje jeszcze ten problem z WHERE temat LIKE "$litera%" jak wstawiam to wyskakuje blad :/

heh... udalo mi sie dodac ta litere (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ... dzieki za wysilek i poswiecony mi czas (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) +
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 19:00