Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

aagg

[Resolvido] PHP-MySQL: navegar entre páginas de detalhe

Recommended Posts

Olá a todos.

 

Sou iniciante em programação.

 

Tenho um BD com uma tabela com uma lista de projetos de arquitetura. Nesta lista alguns projetos têm página de detalhes e outros não. Ao clicar em algum deles que tenha página de detalles vou à página de detalhes dele passando a ID correspondente via GET. Mas como ha 9 formas diferentes de ver os detalhes segundo o projeto (cada projeto tem um campo na tabela onde isto é definido), depois de lida a ID do projeto, leio a indicacão do tipo de página para a ID passada, para poder fazer o "include" correspondente e mostrar a página com seu desenho específico.

 

Isto está funcionando ...

 

Mas preciso navegar entre as páginas de detalhes dos projetos sem voltar à lista de projetos.

 

Como vou à página de detalhes aleatoriamente, e ésta muda dependendo do projeto, devería não apenas ir ao seguinte registro dum "select" mas a uma nova página (o à mesma voltando a ler o "include" correspondente a cada ID).

 

Precisaria fazer um novo "select", saber em qué registro deste "select" estou e navegar para outra página (não registro) enviando talvez via GET o valor do registro seguinte?

 

Não sei como o fazer. Não sei como comparar a ID que recebo via GET quando o projeto é escolhido com o registro correspondente dum novo "select" para poder navegar.

 

Qualquer ajuda será muito bem-vinda.

 

Obrigado

 

Desculpem o sacrilegio... uso Dreamweaver

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com :

 

$sql_anterior = "SELECT MAX(id) FROM projetos WHERE id < '{$id_corrente}' AND possui_detalhes = TRUE";

$sql_proximo = "SELECT MIN(id) FROM projetos WHERE id > '{$id_corrente}' AND possui_detalhes = TRUE";

 

obteria as ID para navegar, porem...

 

... Precisaria primeiro ordenar os projetos segundo um criterio (tipo, anho, ... que estão na tabela BD) para navegar ordenadamente e só aí ver quais seriam as IDs anterior e seguinte, segundo o critério usado para ordenar.

 

Como faço isso?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me foi sugerido:

 

"

$offset_anterior = $offset - 1;

$sql_anterior = "SELECT id AS id_anterior FROM projetos WHERE possui_detalhes = TRUE ORDER BY {$ordem} DESC LIMIT 1 OFFSET {$offset_anterior}";

 

...

 

A variável $offset indica a posição (do projeto exibido) na lista resultante pela filtragem (o primeiro da lista é o "1")...

"

 

Deve ser pelo meu desconhecimento, mas justamente aqui (o valor da variavel "$offset") é onde fico sem poder avançar. Porque venho com um valor de ID trazido via GET para mostrar os detalhes do projeto, mas não sei qual é a posição dele no novo query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei uma solução parcial facil.

Porem apenas serviria se os projetos tiverem todos ano diferente :

 

 

$tipo_next = "-1";
if (isset( $row_proj['tipo'])) {
$tipo_next = (get_magic_quotes_gpc()) ? $row_proj['tipo'] : addslashes( $row_proj['tipo']);
}
$ano_next = "-1";
if (isset( $row_proj['ano'])) {
$ano_next = (get_magic_quotes_gpc()) ? $row_proj['ano'] : addslashes( $row_proj['ano']);
}
mysql_select_db($database_conn_XXX, $conn_XXX);
$query_next = sprintf("SELECT projetos.* FROM projetos WHERE projetos.desenho !='0' AND projetos.tipo = %s AND projetos.ano < %s ORDER BY projetos.ano DESC, projetos.projID DESC LIMIT 1", GetSQLValueString($tipo_next, "text"),GetSQLValueString($ano_next, "text"));
$next = mysql_query($query_next, $conn_XXX) or die(mysql_error());
$row_next = mysql_fetch_assoc($next);
$totalRows_next = mysql_num_rows($next);

 

Pergunta de leigo:

 

Teria como pôr um condicional na query? P.E.:

 

no lugar de

 

... WHERE... AND projetos.ano < %s ...

usar

 

... WHERE ...AND projetos.ano <= %s ...

e, só no caso de acontecer "... projetos.ano = %s..." ter:

 

... WHERE projetos.projID < '{$prID_proj}' ...

É posivel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

SOLUCIONADO :

------------------------

 

foi só substituir :

 

... WHERE ...AND projetos.ano < %s ...

por

 

... WHERE ...AND ( projetos.ano < %s OR ( projetos.ano = %s AND projetos.projID < '{$prID_rs_proj}' )) ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.