Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyszukiwarka, limit i podzial na strony
Forum PHP.pl > Forum > Bazy danych > MySQL
Revan
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...
mike
Pytanie pierwsze :arrow: substr()
Pytanie drugie :arrow: http://forum.php.pl/viewtopic.php?t=17484&...t=stronicowanie albo poszukaj pod hasłem stronicowanie
Revan
ok, dzieki biggrin.gif
moge to dopiero wyprobowac jutro bo mama kaze isc spac angrysmiley.gif jak mi sie nie uda to jak wstane to napisze biggrin.gif
Revan
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 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 :/ ...
Revan
sprobowalem zrobic cos takiego i nie wychodzi :/ moglby ktos wskazac blad 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]
mike
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.
Revan
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...
mike
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. ?>
Revan
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
Revan
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 smile.gif ... dzieki za wysilek i poswiecony mi czas winksmiley.jpg +
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-2024 Invision Power Services, Inc.