Annyh 4 Denunciar post Postado Maio 17, 2011 ai galera, tenho duas tabelas cb_comentarios e cw_destaque_va quero fazer uma consulta por todos os dados na tabela cw_destaque_va e apenas o campo id_post da tabela cb_comentarios, até ai tudo bem, eu consigo fazer... mas como eu exibo os dados? eu estou usando PDO, e gostaria de saber como o PHP vai diferenciar de qual tabela eu estou chamando qual campo? tipo assim, numa consulta simples eu faço assim e da certinho: foreach ($resVa as $res) { $idVa = $res[0]; $imgVa = $res[2]; $autorVa = $res[4]; $siteVa = $res[6]; $tituloVa = $res[8]; $textoVa = $res[9]; $categoria = $res[10]; $comentarios = $res[11]; $dataVa = strftime('%d %b %Y', strtotime($res[12])); $visitas = $res[15]; } se eu der um echo por exemplo na variável $idVa, ele vai me mostrar o id da tabela cw_destaque_va ou cb_comentarios? como eu vou diferenciar a chamada... e se eu quiser mostrar o comentario da tabela cb_comentarios como faço? assim? $comentario = $res['comentario']; e se existirem dois campos iguais nas duas tabelas, como diferencia-los na chamada (dando echo)? e ainda mais que chamo pelo indice do campo (número). valeu galera. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 17, 2011 C:\Users\Andrey>cd .. C:\Users>cd .. C:\>cd \dev\mysql\bin\ C:\dev\mysql\bin>mysql -u root -p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.41 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database teste; Query OK, 1 row affected (0.02 sec) mysql> use teste; Database changed mysql> create table usuario( -> id int( 11 ) not null, -> nome varchar( 10 ) not null, -> email varchar( 35 ) not null -> )Engine = MyISAM; Query OK, 0 rows affected (0.06 sec) mysql> create table fotos( -> id int( 11 ) not null, -> foto varchar( 42 ) not null, -> comentario text not null, -> data timestamp -> )Engine = MyISAM; Query OK, 0 rows affected (0.04 sec) mysql> insert into usuario values( 1, 'Andrey', 'andreykvital@gmail.com' ), ( 2, 'usuario', 'usuario@email.com' ); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> insert into fotos values( 1, 'foto.jpg', 'um comentario', null ); Query OK, 1 row affected (0.00 sec) mysql> insert into fotos values( 1, 'foto2.jpg', 'um comentario', null ); Query OK, 1 row affected (0.00 sec) mysql> insert into fotos values( 1, 'foto3.jpg', 'um comentario', null ); Query OK, 1 row affected (0.00 sec) mysql> insert into fotos values( 2, 'f.jpg', 'um comentario', null ); Query OK, 1 row affected (0.00 sec) mysql> insert into fotos values( 2, 'f1.jpg', 'um comentario', null ); Query OK, 1 row affected (0.00 sec) mysql> insert into fotos values( 2, 'f2.jpg', 'um comentario', null ); Query OK, 1 row affected (0.00 sec) mysql> select * from usuario; +----+---------+------------------------+ | id | nome | email | +----+---------+------------------------+ | 1 | Andrey | andreykvital@gmail.com | | 2 | usuario | usuario@email.com | +----+---------+------------------------+ 2 rows in set (0.00 sec) mysql> select * from fotos; +----+-----------+---------------+---------------------+ | id | foto | comentario | data | +----+-----------+---------------+---------------------+ | 1 | foto.jpg | um comentario | 2011-05-17 19:43:27 | | 1 | foto2.jpg | um comentario | 2011-05-17 19:43:35 | | 1 | foto3.jpg | um comentario | 2011-05-17 19:43:40 | | 2 | f.jpg | um comentario | 2011-05-17 19:43:51 | | 2 | f1.jpg | um comentario | 2011-05-17 19:43:55 | | 2 | f2.jpg | um comentario | 2011-05-17 19:44:00 | +----+-----------+---------------+---------------------+ 6 rows in set (0.00 sec) mysql> select * from fotos inner join usuario on fotos.id = usuario.id; +----+-----------+---------------+---------------------+----+---------+------------------------+ | id | foto | comentario | data | id | nome | email | +----+-----------+---------------+---------------------+----+---------+------------------------+ | 1 | foto.jpg | um comentario | 2011-05-17 19:43:27 | 1 | Andrey | andreykvital@gmail.com | | 1 | foto2.jpg | um comentario | 2011-05-17 19:43:35 | 1 | Andrey | andreykvital@gmail.com | | 1 | foto3.jpg | um comentario | 2011-05-17 19:43:40 | 1 | Andrey | andreykvital@gmail.com | | 2 | f.jpg | um comentario | 2011-05-17 19:43:51 | 2 | usuario | usuario@email.com | | 2 | f1.jpg | um comentario | 2011-05-17 19:43:55 | 2 | usuario | usuario@email.com | | 2 | f2.jpg | um comentario | 2011-05-17 19:44:00 | 2 | usuario | usuario@email.com | +----+-----------+---------------+---------------------+----+---------+------------------------+ 6 rows in set (0.00 sec) mysql> select usuario.*, fotos.foto from fotos inner join usuario on fotos.id = usuario.id; +----+---------+------------------------+-----------+ | id | nome | email | foto | +----+---------+------------------------+-----------+ | 1 | Andrey | andreykvital@gmail.com | foto.jpg | | 1 | Andrey | andreykvital@gmail.com | foto2.jpg | | 1 | Andrey | andreykvital@gmail.com | foto3.jpg | | 2 | usuario | usuario@email.com | f.jpg | | 2 | usuario | usuario@email.com | f1.jpg | | 2 | usuario | usuario@email.com | f2.jpg | +----+---------+------------------------+-----------+ 6 rows in set (0.02 sec) Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Maio 17, 2011 Andrey, não manjo muito de SQL, bem mais de PHP, você não poderia dar uma simplificada? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 17, 2011 <?php $PDO = new PDO( 'mysql:host=localhost;dbname=teste', 'root', '****' ); $PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $PDO->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC ); $Query = $PDO->query( "select usuario.*, fotos.foto from fotos inner join usuario on fotos.id = usuario.id" )->fetchAll(); echo '<pre>'; foreach( $Query as $Data ){ print_r( $Data ); } Saída: Array ( [id] => 1 [nome] => Andrey [email] => andreykvital@gmail.com [foto] => foto.jpg ) Array ( [id] => 1 [nome] => Andrey [email] => andreykvital@gmail.com [foto] => foto2.jpg ) Array ( [id] => 1 [nome] => Andrey [email] => andreykvital@gmail.com [foto] => foto3.jpg ) Array ( [id] => 2 [nome] => usuario [email] => usuario@email.com [foto] => f.jpg ) Array ( [id] => 2 [nome] => usuario [email] => usuario@email.com [foto] => f1.jpg ) Array ( [id] => 2 [nome] => usuario [email] => usuario@email.com [foto] => f2.jpg ) So você dar uma olhada no sql que eu fiz para localizar os usuarios, se você presisar de um where, sem problema mysql> select usuario.*, fotos.foto from fotos inner join usuario on fotos.id = usuario.id where usuario.id = 2; +----+---------+-------------------+--------+ | id | nome | email | foto | +----+---------+-------------------+--------+ | 2 | usuario | usuario@email.com | f.jpg | | 2 | usuario | usuario@email.com | f1.jpg | | 2 | usuario | usuario@email.com | f2.jpg | +----+---------+-------------------+--------+ 3 rows in set (0.00 sec) mysql> select usuario.*, fotos.foto from fotos inner join usuario on fotos.id = usuario.id where usuario.id = 1; +----+--------+------------------------+-----------+ | id | nome | email | foto | +----+--------+------------------------+-----------+ | 1 | Andrey | andreykvital@gmail.com | foto.jpg | | 1 | Andrey | andreykvital@gmail.com | foto2.jpg | | 1 | Andrey | andreykvital@gmail.com | foto3.jpg | +----+--------+------------------------+-----------+ 3 rows in set (0.00 sec) Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Maio 17, 2011 Andrey, você esta sendo um fofo, mas eu preciso por os dados em variáveis pois vou usa-las em lugares diferentes. tipo quero mostrar os dados do autor da video aula da tabela cw_destaque_va, e mostrar quantos comentarios a mesma teve puxando os dados da tabela cb_comentarios e armazenando numa variável $comentarios, entendeu... e essa lógica que não entendo. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 17, 2011 Você postando o seu SQL do banco de dados com alguns registros, da pra ajudar melhor =) Enfim, você não precisa gravar os dados em outra variável coloca em um array esses dados, e não crie uma variável pra cada Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Maio 17, 2011 esse é meu sql, ele seleciona todos os campos da tabela cw_destaque_va e tambem da tabela cb_comentarios. eu seleciono todos os dados da tabela cb_comentarios apenas para mostrar quantos comentarios tem em cada post, por isso gostaria de saber como colocar isso numa variável.. SELECT * FROM cb_comentarios , cw_destaque_va WHERE cw_destaque_va.id = 'variavel' AND cw_destaque_va.`status` = 'liberado' Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 17, 2011 Não, estou falando o SQL das tabelas, etc .. Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Maio 17, 2011 não entendi!? Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Oderdenge 42 Denunciar post Postado Maio 18, 2011 Annyh, você terá que fazer dois querys diferentes para cada consulta. Por exemplo: SELECT * FROM `tabela1` E, sucessivamente: SELECT * FROM `tabela2` E o que o Andrey pediu é a estrutura do seu banco de dados, que com certeza ajudaria bastante para lhe responder. Abraço! ;) Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Maio 18, 2011 veja a estrutura: Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Maio 18, 2011 Assim fica difícil ajudar, será que e tão difícil postar o SQL CREATE dessa estrutura aí ? :P Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Oderdenge 42 Denunciar post Postado Maio 18, 2011 Annyh, por favor, vá no seu banco de dados e exporte a estrutura dele e poste aqui no fórum entre as tags [sql][/sql]. Uma imagem não vai nos ajudar a manipular os seus dados. Mas, para todos os efeitos, você já tentou fazer duas querys diferentes para cada consulta? Faça um query selecionando a tabela X, e outra query selecionando a tabela Y. Sem mistérios. Abraço! ;) Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Maio 18, 2011 -- phpMyAdmin SQL Dump -- version 3.3.9 -- http://www.phpmyadmin.net -- -- Servidor: localhost -- Tempo de Geração: Mai 18, 2011 as 12:47 AM -- Versão do Servidor: 5.5.8 -- Versão do PHP: 5.3.5 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Banco de Dados: `sitejr` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `cb_comentarios` -- CREATE TABLE IF NOT EXISTS `cb_comentarios` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_post` int(11) NOT NULL, `data` datetime DEFAULT NULL, `status` enum('liberado','aguardando') DEFAULT NULL, `nome` varchar(50) DEFAULT NULL, `email` varchar(50) DEFAULT NULL, `site` varchar(60) DEFAULT NULL, `comentario` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; -- -- Extraindo dados da tabela `cb_comentarios` -- INSERT INTO `cb_comentarios` (`id`, `id_post`, `data`, `status`, `nome`, `email`, `site`, `comentario`) VALUES (1, 44, '2011-05-15 17:59:26', 'liberado', 'Antonio', 'tonho@tera.com.br', NULL, 'meu comentario será esta'), (2, 44, '2011-05-16 18:36:24', 'liberado', 'Annyh', 'anny@tera.com', 'site.com.br', 'asçlfj alsdjflçaskdjflçkasdj lçajflçasjf alsjf lasjflçasjlçsj lçksdj lçjasçlfj lakçsj lk sa lklj'), (3, 44, '2011-05-15 18:57:20', 'liberado', 'José', 'junior.eberhardt@gmail.com', 'www.contrabarra.com.br', 'meu comentario'), (4, 44, '2011-05-16 19:05:57', 'liberado', 'Ariclenes Martins', 'ariclenes@martins.com.br', '', 'Meu comentario da vídeo aula hehehheheh rsrsss'), (5, 44, '2011-05-16 19:07:30', 'liberado', 'Ariclenes Martins', 'ariclenes@martins.com.br', '', 'Meu comentario da vídeo aula hehehheheh rsrsss'), (6, 14, '2011-05-16 21:02:44', 'liberado', 'asdf', 'fjasd@adfa.com', '', 'asdfasdfasd fasd fasd'), (7, 14, '2011-05-16 21:03:29', 'liberado', 'asdf', 'fjasd@adfa.com', '', 'asdfasdfasd fasd fasd'); -- phpMyAdmin SQL Dump -- version 3.3.9 -- http://www.phpmyadmin.net -- -- Servidor: localhost -- Tempo de Geração: Mai 18, 2011 as 12:48 AM -- Versão do Servidor: 5.5.8 -- Versão do PHP: 5.3.5 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Banco de Dados: `sitejr` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `cb_comentarios` -- CREATE TABLE IF NOT EXISTS `cb_comentarios` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_post` int(11) NOT NULL, `data` datetime DEFAULT NULL, `status` enum('liberado','aguardando') DEFAULT NULL, `nome` varchar(50) DEFAULT NULL, `email` varchar(50) DEFAULT NULL, `site` varchar(60) DEFAULT NULL, `comentario` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; -- -- Extraindo dados da tabela `cb_comentarios` -- INSERT INTO `cb_comentarios` (`id`, `id_post`, `data`, `status`, `nome`, `email`, `site`, `comentario`) VALUES (1, 44, '2011-05-15 17:59:26', 'liberado', 'Antonio', 'tonho@tera.com.br', NULL, 'meu comentario será esta'), (2, 44, '2011-05-16 18:36:24', 'liberado', 'Annyh', 'anny@tera.com', 'site.com.br', 'asçlfj alsdjflçaskdjflçkasdj lçajflçasjf alsjf lasjflçasjlçsj lçksdj lçjasçlfj lakçsj lk sa lklj'), (3, 44, '2011-05-15 18:57:20', 'liberado', 'José', 'junior.eberhardt@gmail.com', 'www.contrabarra.com.br', 'meu comentario'), (4, 44, '2011-05-16 19:05:57', 'liberado', 'Ariclenes Martins', 'ariclenes@martins.com.br', '', 'Meu comentario da vídeo aula hehehheheh rsrsss'), (5, 44, '2011-05-16 19:07:30', 'liberado', 'Ariclenes Martins', 'ariclenes@martins.com.br', '', 'Meu comentario da vídeo aula hehehheheh rsrsss'), (6, 14, '2011-05-16 21:02:44', 'liberado', 'asdf', 'fjasd@adfa.com', '', 'asdfasdfasd fasd fasd'), (7, 14, '2011-05-16 21:03:29', 'liberado', 'asdf', 'fjasd@adfa.com', '', 'asdfasdfasd fasd fasd'); Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Oderdenge 42 Denunciar post Postado Maio 18, 2011 Olá, Annyh. Eu desde o começo entendi o que você quer fazer. Também tive dificuldades em um script meu em relação a este assunto, mas a solução é simples, acredite. Como já falei anteriormente, faça uma query selecionando cada db. No caso, use um SELECT para cb_comentarios e outro para a sua outra tabela. Depois, com o PHP, é só buscar as informações pelas variáveis respectivas a cada query. Abraços! ;) Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Maio 18, 2011 Kaminari, no meu caso não seria possível, pelo menos eu acho, pois preciso saber qual comentário pertence a qual video aula, e eu estou relacionando a tabela cw_destaque_va com a tabela cb_comentarios pelo id_post, entendeu, se for possível fazer de outra forma, por favor me de uma luz, pois minha cabeça já doeu muito por causa disso. tenho um menu normal na página que possui categorias assim: menu: video aulas->css-php-xhtml caso o usuário clique em menu ele lista todas as vídeo aulas pela data mais recente em ordem decrescente, e é aqui que quero mostrar o número de comentários, que esta na tabela cb_comentarios, caso o usuário clique em alguma categoria (css-php-xhtml), ele mostra as vídeo aulas correspondentes, aqui também vou mostrar o número de comentários. caso o usuário clicou em uma vídeo aula especifica ele mostra o vídeo com mais informações etc... entendeu... if(isset($_GET['cat'])){ $cat = $_GET['cat']; $sqlVa = "SELECT * FROM cw_destaque_va WHERE categoria = '$cat' AND status = 'liberado' ORDER BY data DESC"; } elseif(isset($_GET['va'])){ $idVa = intval($_GET['va']); $sqlVa = "SELECT * FROM cw_destaque_va WHERE id = $idVa AND status = 'liberado'"; } else { $sqlVa = "SELECT * FROM cw_destaque_va WHERE status = 'liberado' ORDER BY data DESC"; } try { $qrVa = $conecta->prepare($sqlVa); $qrVa->execute(); $resVa = $qrVa->fetchAll(PDO::FETCH_NUM); $contaVa = $qrVa->rowCount(); } catch (PDOException $erroVa){ echo 'Erro na seleção<br />' . $erroVa->getMessage(); } if($contaVa > 0) { foreach ($resVa as $res){ $idVa = $res[0]; $imgVa = $res[2]; $autorVa = $res[4]; $siteVa = $res[6]; $tituloVa = $res[8]; $textoVa = $res[9]; $categoria = $res[10]; $comentarios = $res[11]; $dataVa = strftime('%d %b %Y', strtotime($res[12])); $visitas = $res[15]; Compartilhar este post Link para o post Compartilhar em outros sites