← PHP

php+mysql ordenação por páginas

Lida 5141 vezes

Offline

goodsound 
Membro
Mensagens 2485 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3

Boa noite a todos, alguém me sabe dizer, por exemplo quando tenho um conjunto de 20 notícias, mas quero que 10 apareçam numa páginas e as restantes 10 noutra, como faço isso no mysql?
:obrigado:
Se não fui suficientemente exclarecedor, por favor notifiquem-me.
Offline

nram 
Membro
Mensagens 777 Gostos 0
Feedback +1

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

as 10 ultimas? as 10 primeiras? 10 quaisquers? :s
Offline

goodsound 
Membro
Mensagens 2485 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3

as 10 ultimas? as 10 primeiras? 10 quaisquers? :s
As 10 primeiras numa página, mais 10 na seguinte página, e assim sucessivamente.
;)
ps:as notícias estão todas na mesma tabela
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Código: [Seleccione]
SELECT * FROM noticias LIMIT $inicio, 10;
Onde o $inicio é o número de qual ele vai iniciar a contar... portanto vais saltar de 10 em 10...

0, 10, 20, 30, 40...

Vao ser esses os valores da variavel conforme a pagina
Offline

goodsound 
Membro
Mensagens 2485 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3

Código: [Seleccione]
SELECT * FROM noticias LIMIT $inicio, 10;
Onde o $inicio é o número de qual ele vai iniciar a contar... portanto vais saltar de 10 em 10...

0, 10, 20, 30, 40...

Vao ser esses os valores da variavel conforme a pagina
Ok, até aí eu ja´tinha relativamente chegado, quero é saber como ponho depois das notícias, a página 2, 3, 4, etc...
;)
Offline

nram 
Membro
Mensagens 777 Gostos 0
Feedback +1

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

crias uma variável... e envias por SESSOES ou por GET... se for a 1ª pagina.. envias a 1.. se for a 2ª envias 2... e multiplicas... por 10...
se nao tiver nada é a 1ª pagina! ;)
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

adicionas no fim
Código: [Seleccione]
LIMIT 0,10na próxima página já será
Código: [Seleccione]
LIMIT 10,10Podes fazer uma conta simples, por exemplo receberes o numero de pag pelo url

algo.php?page=1
Pseudo-código php
Código: [Seleccione]
if(is_numeric($_GET['page'])) $min = $_GET['page'] * 10;
$query = mysql_query(... LIMIT $min, 10);
if(!mysql_num_rows($query)) echo "Não existe resultados, volte à pagina anterior (exemplo)";
else while($res = mysql_fetch_array($query)) {
// Por aqui a mostrar cada resultado
}
$rows = mysql_num_rows(mysql_query(...)); // Sem o limite
$rows = ceil($rows / 10);
for($i = 1; $i < $rows; $i++) echo "<a href=\"algo.php?pag=$i\">$i | ";
echo "<a href=\"algo.php?pag=$i\">$i";
Offline

goodsound 
Membro
Mensagens 2485 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3

crias uma variável... e envias por SESSOES ou por GET... se for a 1ª pagina.. envias a 1.. se for a 2ª envias 2... e multiplicas... por 10...
se nao tiver nada é a 1ª pagina! ;)
Ahhh, já percebi...
;)
Offline

goodsound 
Membro
Mensagens 2485 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3

adicionas no fim
Código: [Seleccione]
LIMIT 0,10na próxima página já será
Código: [Seleccione]
LIMIT 10,10Podes fazer uma conta simples, por exemplo receberes o numero de pag pelo url

algo.php?pag=1
if(is_numeric($_GET['page'])) $min = $_GET['page'] * 10;
$query = mysql_query(... LIMIT $min, 10);
if(!mysql_num_rows($query)) echo "Não existe resultados, volte à pagina anterior (exemplo)";
else...
$rows = mysql_num_rows(mysql_query(...)); // Sem o limite
$rows = ceil($rows / 10);
for($i = 1; $i < $ceil; $i++) echo $i." | ";
echo $i;
Obrigado pelo exemplo anjo2, ajudou-me a perceber melhor.
:obrigado:
;)
Obrigado a todos.
;)
:+trafego:
Sempre a aprender!!!
Offline

nram 
Membro
Mensagens 777 Gostos 0
Feedback +1

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

adicionas no fim
Código: [Seleccione]
LIMIT 0,10na próxima página já será
Código: [Seleccione]
LIMIT 10,10Podes fazer uma conta simples, por exemplo receberes o numero de pag pelo url

algo.php?pag=1
if(is_numeric($_GET['page'])) $min = $_GET['page'] * 10;
$query = mysql_query(... LIMIT $min, 10);
if(!mysql_num_rows($query)) echo "Não existe resultados, volte à pagina anterior (exemplo)";
else...
$rows = mysql_num_rows(mysql_query(...)); // Sem o limite
$rows = ceil($rows / 10);
for($i = 1; $i < $ceil; $i++) echo $i." | ";
echo $i;

Um pequeno reparo:

algo.php?pag=1   =/= page

Logo isso não iria dar nada... ou daria sempre o mesmo resultado... dava se fosse: algo.php?page=1   <-- exemplo :)

Cumprimentos
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

adicionas no fim
Código: [Seleccione]
LIMIT 0,10na próxima página já será
Código: [Seleccione]
LIMIT 10,10Podes fazer uma conta simples, por exemplo receberes o numero de pag pelo url

algo.php?pag=1
if(is_numeric($_GET['page'])) $min = $_GET['page'] * 10;
$query = mysql_query(... LIMIT $min, 10);
if(!mysql_num_rows($query)) echo "Não existe resultados, volte à pagina anterior (exemplo)";
else...
$rows = mysql_num_rows(mysql_query(...)); // Sem o limite
$rows = ceil($rows / 10);
for($i = 1; $i < $ceil; $i++) echo $i." | ";
echo $i;

Um pequeno reparo:

algo.php?pag=1   =/= page

Logo isso não iria dar nada... ou daria sempre o mesmo resultado... dava se fosse: algo.php?page=1   <-- exemplo :)

Cumprimentos
Tens razão, mas foi só um exemplo, vou corrigir, tem outras coisas mal, mas todos os erros fáceis de detectar

Mas já editei
Offline

goodsound 
Membro
Mensagens 2485 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3

adicionas no fim
Código: [Seleccione]
LIMIT 0,10na próxima página já será
Código: [Seleccione]
LIMIT 10,10Podes fazer uma conta simples, por exemplo receberes o numero de pag pelo url

algo.php?pag=1
if(is_numeric($_GET['page'])) $min = $_GET['page'] * 10;
$query = mysql_query(... LIMIT $min, 10);
if(!mysql_num_rows($query)) echo "Não existe resultados, volte à pagina anterior (exemplo)";
else...
$rows = mysql_num_rows(mysql_query(...)); // Sem o limite
$rows = ceil($rows / 10);
for($i = 1; $i < $ceil; $i++) echo $i." | ";
echo $i;

Um pequeno reparo:

algo.php?pag=1   =/= page

Logo isso não iria dar nada... ou daria sempre o mesmo resultado... dava se fosse: algo.php?page=1   <-- exemplo :)

Cumprimentos
Tens razão, mas foi só um exemplo, vou corrigir, tem outras coisas mal, mas todos os erros fáceis de detectar

Mas já editei
Sim tem alguns erros realmente, mas felizmente eu já os tinha detectado, porque são relativamente básicos.
;)
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

completei mais um pouco o código, acho que já está muito fácil para implementares
Offline

goodsound 
Membro
Mensagens 2485 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3

Mais uma vez obrigado, facilitaste-me o trabalho todo...
;)
:obrigado: