|
Тема
|
Kak stava tova?
|
|
Автор | bob4o (Нерегистриран) |
Публикувано | 18.03.02 09:24 |
|
Zdraveite:-)
Imam slednia vapros. Imam tablica v, koyato imam 20 zapisa.Iskam da gi izvleka ot bazata danni po 5 broq. Sled izvlichaneto na parvite 5 zapisa da mi se poyavyva vazmojnost za izbor i na sledvastite zapisi(Nesto podobno na tova v tozi forum).
Predvaritelno blagodarya za pomosta.
| |
Тема
|
Re: Kak stava tova?
[re: bob4o]
|
|
Автор | newbie (Нерегистриран) |
Публикувано | 18.03.02 09:30 |
|
mi tva si zavisi ot bozata danni.
naprimer ako si s mysql moje d apolzvash LIMIT
select * from tablename limit 5
| |
Тема
|
Re: Kak stava tova?
[re: newbie]
|
|
Автор |
dune2 (познат) |
Публикувано | 18.03.02 09:51 |
|
select * from tblname limit 0,5;
select * from tblname limit 5,5;
select * from tblname limit 10,5;
select * from tblname limit 15,5;
kydeto 0,5,10,15 sa ti start positions.
t.e. ot koj zapis natatyka da ti izkara rezultatite
a 5 ti e broq rezultati, koito da ti pokaje ot tozi zapis natatyka.
| |
Тема
|
Re: Kak stava tova?
[re: newbie]
|
|
Автор | bob4o (Нерегистриран) |
Публикувано | 18.03.02 09:56 |
|
Tova e yasno, che stava taka.Problema e v tova, che kato tragna da vikam sledvastite 5 zapisa, otmestvaneto koeto sam zadal me vrasta pak na parvite 5 zapisa, a ne na sledvastite 5, t.e select * from tablename limit $offset,$limit , kadeto za $offset=0 ,a $limit=5
Sled kato tragna da izvlicham sledvastite 5 zapisa se vrastam otnovo na parvite 5, kato opitite mi da uvelicha $offset s 5 edinica za momenta se okazvat neuspeshni:-(
| |
Тема
|
Re: Kak stava tova?
[re: bob4o]
|
|
Автор |
dune2 (познат) |
Публикувано | 18.03.02 10:02 |
|
ami.. ne znam kak go pravish
no $offset+5;
bi trqbvalo da ti svyrshi rabota..
vij da ne bi da go pravish vyv funkciq.. i $offset ne ti e global..
ili vij dali izobshto go predavash ot predishnata stranica.
ako paste-nesh malko ot koda moje bi shte uspeem da ti pomognem.. na sliapo e trudno.. priznavam :)
| |
Тема
|
Eto go koda:-)
[re: dune2]
|
|
Автор |
An1lD (anyone) |
Публикувано | 18.03.02 19:12 |
|
Eto go koda s malki oryazvania.
<?php
$limit=5;
$offset=0;
$query = "SELECT * from table_name LIMIT $offset,$limit" ;
$count_row="SELECT count(*) FROM table_name";
if(!($result=mysql_db_query($DB, $count_row)))
{
DisplayErrMsg(sprintf("internal error %d : %s\n", mysql_errno(), mysql_error()));
exit();
}
list($total_rows) = mysql_fetch_array($result);
if ($offset > 0)
{
print "<a href=\"proba.php?offset=".($offset-$limit)."\">Previous Entries</a> ";
}
if ($offset+$limit < $total_rows)
{
print "<a href=\"proba.php?offset=".($offset+$limit)."&limit=".($limit+5)."\">Next Entries</a>";
}
?>
Приятелчета сте вие...
| |
Тема
|
Re: Eto go koda:-)
[re: An1lD]
|
|
Автор |
bofh (°) (_) (°) |
Публикувано | 18.03.02 19:29 |
|
if((int)$limit="") $limit=0;
ili oshte po dobre
function is_valid_limit($limit) { return ($limit>=0 && $limit<=5); }
if(is_valid_limit($limit)) $limit=0;
zashtoto ti taka na vsqko izvikvane na fail-a slagash tvyrdi stoinosti na limit i offset
bofh
| |
Тема
|
Re: Kak stava tova - спомени от бъдещето?
[re: bob4o]
|
|
Автор |
salle (Един такъв) |
Публикувано | 18.03.02 20:18 |
|
Или как се прави "това" с MySQL 4.x
SELECT SQL_CALC_FOUND_ROWS <нещо си> FROM <и така нататък> LIMIT 0, $rows;
SELECT FOUND_ROWS();
Взимаш резултата и го използваш по-нататък. Съдържа общия брой т.е. без LIMIT
Правиш го само "първия път", по-нататък както и във всички други примери използваш
SELECT .... LIMIT $offset, $rows;
Нещо в стил:
<?
...
if (!isset($found_rows))
{
/* Първо изпълнение на заявката. */
/* Предполагайки, че искаш първия път да започнеш от 0*/
$offset = 0;
$res = mysql_query("SELECT SQL_CALC_FOUND_ROWS .... LIMIT $offset, $rows");
$res2 = mysql_query("SELECT FOUND_ROWS()");
$found_rows = ....;
...
}
else
{
/* Всяко следващо изпълнение.
Вкл. ако е от <<Prev N и стигнеш до 0,N !!!
*/
$res = mysql_query("SELECT .... LIMIT $offset, $rows");
...
}
?>
MySQL 4.0.1 официално е alpha версия, т.е. в процес на разработка. Иначе работи доста стабилно, а и има някои друге нещица дето ускоряват значително работата на моменти но -alpha така или иначе означава - пробвай на своя отговорност
Linux is like a wigwam - No Windows, No Gates, Apache insideРедактирано от salle на 18.03.02 20:19.
| |
Тема
|
10x:-)
[re: bofh]
|
|
Автор | bob4o (Нерегистриран) |
Публикувано | 20.03.02 16:03 |
|
Blagodarya za pomosta:-))
| |
|
|
|
|