Consulta e Exibição de Dados

1. Consulta e Exibição de Dados

Maiko Souza
maikothadeu

(usa Ubuntu)

Enviado em 21/10/2014 - 15:16h

Olá, pessoal.

Eu tenho duas tabelas no meu phpmyadmin, uma chamada fotos e outra chamada album. "Fotos" possui a coluna "nome_foto" e "id_titulo(forenkey)" e "Album" possui "id_titulo" e "nome_titulo". Será que algum sabe alguma forma em que eu consiga fazer uma consulta no banco que mostre primeiro o titulo e depois todas as fotos relacionadas a ele sem repetir o titulo?

Ex (Queria algo assim usando o foreach do php):

Titulo1
Foto1
Foto2
Foto3
Foto4

Titulo2
Foto12
Foto13
Foto14
Foto15

E não assim:

Titulo1
Foto1
Titulo1
Foto2
Titulo1
Foto3
Titulo1
Foto4

Titulo2
Foto12
Titulo2
Foto13
...



  


2. Re: Consulta e Exibição de Dados

Luiz Verissimo
luizverissimoDb

(usa Debian)

Enviado em 21/10/2014 - 16:19h

Cara tu prentende ver isso na aplicação ou só no DBMS mesmo?


3. Re: Consulta e Exibição de Dados

Maiko Souza
maikothadeu

(usa Ubuntu)

Enviado em 21/10/2014 - 16:47h

Pretendo ver na aplicação


4. Re: Consulta e Exibição de Dados

Juarez Silva
jslimma

(usa Debian)

Enviado em 21/10/2014 - 18:49h

Testa a sintaxe abaixo,

<?php
## Sixtaxe SQL - Fará o relacionamento entre as tabelas usando INNER JOIN e Agrupará pelo titulo (tenta com e sem o GROUP BY)
$sql = mysql_query("SELECT Album.nome, Fotos.nome_foto from Fotos INNER JOIN Album ON Album.id_titulo=Fotos.id_titulo GROUP BY Album.nome_titulo");
while ($dados = mysql_fetch_array($sql)){
?>
<!-- Titulo do Album -->
<h3><?php echo $dados['nome']?></h3>
<!-- Nome da Foto -->
<p><?php echo $dados['nome_foto']?></p>
<?php
}
?>

Boa sorte!


5. Re: Consulta e Exibição de Dados

Maiko Souza
maikothadeu

(usa Ubuntu)

Enviado em 21/10/2014 - 21:19h

Não deu certo. Com o group by retorna apenas uma linha, perdendo assim o nome do restante das fotos e sem o group by o nome do album se repete várias vezes.


6. Re: Consulta e Exibição de Dados

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 21/10/2014 - 23:35h

Faz dois faços um varre a tabela de Album coletando titulo e id, dentro desse laço vc faz uma consulta na tabela de Fotos enquanto id_titulo = ao id coletado e pronto, no primeiro laço vc exibe o nome do titulo, no segundos os nomes das fotos.


...
echo $rs['titulo'];
...
sql = "select from nome_foto form Fotos where id_titulo = $rs['id']";
...

echo $rs_foto['nome_foto']
...




7. Re: Consulta e Exibição de Dados

Juarez Silva
jslimma

(usa Debian)

Enviado em 22/10/2014 - 10:08h

Fiz uns testes aqui e da forma que esta abaixo deu certo.

Criei um Banco chamado Imagens com as tabelas Album e Fotos.

$sqlAlbum = mysql_query("SELECT Album.nome_album, Album.id as id_album from Album");
while ($album = mysql_fetch_array($sqlAlbum)){
?>

<!-- Titulo do Album -->
<h3><?php echo $album['nome_album']?></h3>
<!-- Nome da Foto -->
<p><?php
$sqlFoto = mysql_query("SELECT Fotos.nome_foto from Fotos where id_album=".$album['id_album']." ");
while ($fotos = mysql_fetch_array($sqlFoto)){
echo $fotos['nome_foto']?></p>
<?php
}
}
?>

######## ESTRUTURA DAS TABELAS UTILIZADAS

-- phpMyAdmin SQL Dump
-- version 4.1.12
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: 22-Out-2014 às 14:04
-- Versão do servidor: 5.6.16
-- PHP Version: 5.5.11

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `Imagens`
--

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

--
-- Estrutura da tabela `Album`
--

CREATE TABLE IF NOT EXISTS `Album` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome_album` varchar(100) NOT NULL,
`data_album` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Extraindo dados da tabela `Album`
--

INSERT INTO `Album` (`id`, `nome_album`, `data_album`) VALUES
(1, 'Album 1', '2014-10-22 11:42:45'),
(2, 'Album 2', '2014-10-22 11:42:45');

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

--
-- Estrutura da tabela `Fotos`
--

CREATE TABLE IF NOT EXISTS `Fotos` (
`id_foto` int(11) NOT NULL AUTO_INCREMENT,
`id_album` int(11) NOT NULL,
`nome_foto` varchar(100) NOT NULL,
`data_foto` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id_foto`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Extraindo dados da tabela `Fotos`
--

INSERT INTO `Fotos` (`id_foto`, `id_album`, `nome_foto`, `data_foto`) VALUES
(1, 1, 'Foto 1', '2014-10-22 11:43:39'),
(2, 1, 'Foto 2', '2014-10-22 11:56:36'),
(3, 2, 'Foto 1', '2014-10-22 11:43:53'),
(4, 2, 'Foto 2', '2014-10-22 11:43:53'),
(5, 1, 'Foto 3', '2014-10-22 11:56:51');

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts