aagg 0 Denunciar post Postado Fevereiro 18, 2010 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
aagg 0 Denunciar post Postado Fevereiro 21, 2010 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
aagg 0 Denunciar post Postado Março 22, 2010 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
aagg 0 Denunciar post Postado Março 26, 2010 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
aagg 0 Denunciar post Postado Março 27, 2010 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