Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) MYSQL - exibir resultado de duas tabelas em uma, ordenadas


RonaFreitas

Pergunta

Contexto: site simples com página de NOTÍCIAS. Porém, na pagina HOME, deve constar as duas noticias mais recentes.

Ainda em HOME, na parte final de cada noticia teria um Leia mais... direcionando para pagina de NOTICIAS.

Até aí é agua com açúca.

Vamos lá:

Solução 1: criei duas tabelas e a inserção se dá de forma individual. Até aí fica fácil de exibir na pagina HOME as duas noticias mais recentes, sendo uma de cada tabela.

Problema 1: não consegui fazer com que, ao clicar no Leia mais... fosse exibido as duas tabelas juntas ordenadas pela data de publicação de cada uma, ou seja, exibindo as noticias todas juntas mas ordenando pela data.

Solução 2: utilizar somente uma tabela

Problema 2: sendo uma tabela, não consegui fazer com que as duas noticias mais recentes fosse exibidas em HOME, só consegui exibir apenas a mais recente.

QUESTÃO: em ambas as soluções, só consegui resolver 50%.

Gostaria que me ajudassem nessa, seja em qualquer uma das soluções.

Tabela 1

tb_news

- id (pk, AI)

- titulo (varchar)

- noticia (varchar)

- data (DATE)

Tabela 2

rb_news2

- id_2 (pk, AI)

- titulo_2 (varchar)

- noticia_2 (varchar)

- data (DATE)

Espero ter sido claro, aguardo, obrigado.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Bom cara se você quer fazer em uma tabela é simples, basta fazer com que o select traga o ultimo id inserido da tabela e coloca o LIMIT como 2 assim ele vai trazer os 2 ultimos registros inserido ou seja as duas ultimas noticias

Já se quiser fazer em duas tabelas, vai ter q usar um INNER JOIN mas para utilizar algum campo das tabelas devem ser iguais, para as tabelas poderem conversarem

Eu optaria por fazer numa tabela apenas, seria mais simples e sem a necessidade de criar duas tabelas e criar um processamento de dados maior q o necessario

Valeu

Link para o comentário
Compartilhar em outros sites

  • 0

marcosfj1, fiz da seguinte forma:

$maxRows_rsNews1b = 1;

$pageNum_rsNews1b = 0;

if (isset($_GET['pageNum_rsNews1b'])) {

$pageNum_rsNews1b = $_GET['pageNum_rsNews1b'];

}

$startRow_rsNews1b = $pageNum_rsNews1b * $maxRows_rsNews1b;

mysql_select_db($database_conNews, $conNews);

$query_rsNews1b = "SELECT * FROM tb_news ORDER BY id DESC LIMIT 1,2";

$query_limit_rsNews1b = sprintf("%s LIMIT %d, %d", $query_rsNews1b, $startRow_rsNews1b, $maxRows_rsNews1b);

$rsNews1b = mysql_query($query_limit_rsNews1b, $conNews) or die(mysql_error());

$row_rsNews1b = mysql_fetch_assoc($rsNews1b);

if (isset($_GET['totalRows_rsNews1b])) {

$totalRows_rsNews1b = $_GET['totalRows_rsNews1b'];

} else {

$all_rsNews1b = mysql_query($query_rsNews1b);

$totalRows_rsNews1b = mysql_num_rows($all_rsNews1b);

}

$totalPages_rsNews1b = ceil($totalRows_rsNews1b/$maxRows_rsNews1b)-1;

?>

e retornou um erro: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 2' at line 1

Seria algum problema com a forma como utilizei a sintaxe nessa versão? No caso uso MYSQL 5.0.45, através do WAMP5 2.0

Ou foi outro erro?

Link para o comentário
Compartilhar em outros sites

  • 0

Bom a um tempo atras eu fiz um sisteminha de noticias tb que mostrava a ultima inserida na tabela....ai fiz da seguinte forma:

<?php
    //BUSCA NO BANCO A ULTIMA NOTICIA INSERIDA
    $sql = mysql_query ("SELECT id, corpo, titulo FROM noticias WHERE id IS NOT NULL ORDER BY id DESC LIMIT 1");
   
    // FAÇO UM ARRAY PARA EXIBIR TODOS OS DADOS
    while($noticias = mysql_fetch_array($sql)) {   

?>

<table width="900" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
                 // EFEITO HTML PARA O TEXTO DESLIZAR NA TELA
    <marquee behavior='scroll' direction='center' scrolldelay="100" scrollamount="4"> 
    
    
    <font size ='2' color= '#1e4594'><b>
    <?php echo $noticias['corpo']; }?></b></font>
    </marquee>
    
    </td>
  </tr>
</table>

Bom no caso eu to pegando uma ai se você quisesse pegar 2 era mudar o LIMIT para LIMIT 2 e ai em :

<?php echo $noticias['corpo']; }?>

Eu to mostrando apenas o corpo da noticia, ai se eu colocasse 2 noticias, para elas não ficarem juntas eu colocaria um <br> no final para q a proxima aparecesse na outra linha

Eu tentaria desse jeito

Falou

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui sim, acabei de resolver!!! Através de SQL mesmo.

simples:

"SELECT * FROM tb_news ORDER BY id DESC LIMIT 1,1";

onde o pimeiro '1' determina quantos registros serão “pulados”, e o segundo '1' representa quantos registros serão mostrados.

só pra lembrar que tentei via PHP e não consegui

vlww cara, obrigado.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...