Ir para conteúdo

POWERED BY:

Arquivado

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

vitinho.vitor

[Resolvido] Número de Colunas

Recommended Posts

Olá, tenho um sistema de comentarios que busca em duas tabelas, porém quando eu coloco esse código abaixo, ele acusa esse erro: The used SELECT statements have a different number of columns

 

Segue o código:

<?php$db = mysql_select_db("w18kilatemvet11");$query = "SELECT * FROM comentarios UNION SELECT id , nome FROM user WHERE `id` LIKE '%id_user%'";$resultado = mysql_query($query, $conexao) or die(mysql_error());$cont = mysql_num_rows($resultado);if($cont==0){  echo '<font face="arial" color="forestGreen"><center><h4><br><br><br>Não há comentários<br></h4></center>';}else{ $cont = 1;  echo '<font color="forestGreen"><TABLE align="center" width="55%" border="0">';     while ($row = mysql_fetch_array($resultado)) {if ($cont % 2 == 0){$cor = "#999999";}else{$cor = "#666666";}           echo '<tr style="background: url('.$cor.')"><td>Nome:'.$row['nome'].'<br>';echo 'Nota:<font size="5">'.$row['nota'].'</font><br>';echo 'Título:<b>'.$row['titulo'].'</b><br>';echo 'Comentário:'.$row['comment'].'</td></tr>';$cont = $cont + 1;  }   echo '</table>';}?>
O sistema tem que buscar os comentarios com o valor ID da página que estão na coluna id_est da tabela colunas e o nome da pessoa que fez o comentario na tabela user com a coluna id_user . MAS POR ENQUANTO ESTOU SÓ FAZENDO A PARTE DO NOME DO USER , o id da página eu faço depois!

 

Segue a estrutura das tabelas:

 

COMENTARIOS :

id

id_est

id_user

nota

titulo

comment

erro

 

 

USER :

id

nome

email

login

senha

 

 

 

O que eu faço??

 

Desde já agradeço,

Vitor

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

para usar o union os campos especificados nas duas tabelas tem q ser da mesma quantidade

 

aki

$query = "SELECT * FROM comentarios UNION SELECT id , nome FROM user WHERE `id` LIKE '%id_user%'";
você selecionou todas as colunas da tabela comentarios e duas colunas da tabela user

 

me parece que você está usando o union, mas deveria usar join

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu poderia usar JOIN nesse caso? nunca usei JOIN !

 

Eu alterei o código para:

<?php$db = mysql_select_db("w18kilatemvet11");$query = "SELECT * FROM comentarios";$query = "SELECT id , nome FROM user WHERE `id` LIKE '%id_user%'";$resultado = mysql_query($query, $conexao) or die(mysql_error());$cont = mysql_num_rows($resultado);if($cont==0){  echo '<font face="arial" color="forestGreen"><center><h4><br><br><br>Não há comentários<br></h4></center>';}else{ $cont = 1;  echo '<font color="forestGreen"><TABLE align="center" width="55%" border="0">';     while ($row = mysql_fetch_array($resultado)) {if ($cont % 2 == 0){$cor = "#999999";}else{$cor = "#666666";}           echo '<tr style="background: url('.$cor.')"><td>Nome:'.$row['nome'].'<br>';echo 'Nota:<font size="5">'.$row['nota'].'</font><br>';echo 'Título:<b>'.$row['titulo'].'</b><br>';echo 'Comentário:'.$row['comment'].'</td></tr>';$cont = $cont + 1;  }   echo '</table>';}?>
E não acusou nenhum erro, porém não retornou a busca

 

 

Obrigado

Vitor

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte pessoal, consegui fazer a busca do nome desta forma:

$query = "Select comentarios.id, comentarios.id_est, comentarios.id_user, comentarios.nota, comentarios.titulo, comentarios.comment, user.nome
From comentarios
Inner join user
ON user.id = comentarios.id_user";

Porém eu ainda queria que só aparecessem os comentarios que tem na coluna id_est o numero do id da página de onde estão. Como eu poderia implementar essa parte no código??

 

Obrigado

Vitor

Compartilhar este post


Link para o post
Compartilhar em outros sites

o inner join só busca linhas q possuam relacionamento, tenta o left join que busca por todas independente do relacionamento

 

Select c.id, c.id_est, c.id_user, c.nota, c.titulo, c.comment, u.nome From comentarios c left join user u ON u.id = c.id_user

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, mas eu já consegui buscar o nome do user que fez o comentario mas ele aparece em todos os estabelecimentos (id_est). Eu queria filtrar também por estabelecimento (id_est).

 

 

Obrigado

Vitor

Compartilhar este post


Link para o post
Compartilhar em outros sites

a query anterior busca tudo, essa vai filtrar por nome e id_est, espero q seja isso

Select c.id, c.id_est, c.id_user, c.nota, c.titulo, c.comment, u.nome From comentarios c 
left join user u ON u.id = c.id_user where u.nome = 'xxxx' and c.id_est = 'xxx'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite...

 

Não entendi muito bem essa parte do código, eu gostaria que buscasse todos os comentarios que tem na coluna id_est o valor correspondente ao da página que está agora.

Essa parte do código funciona direitinho:

$query = "Select comentarios.id, comentarios.id_est, comentarios.id_user, comentarios.nota, comentarios.titulo, comentarios.comment, user.nomeFrom comentariosInner join userON user.id = comentarios.id_user
Porém eu acrescentei o código que você me enviou e nao deu certo, apareceu esse erro: Unknown column 'pesqueiro.id' in 'where clause'

 

Segue o código:

WHERE comentarios.id_est = pesqueiro.id";
Ele teria que ver os valores da coluna id_est de comentarios e procurar os idênticos na tabela pesqueiro na coluna id

 

Muito obrigado, acho que estamos quase lá!!!!

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

dessa forma você vai conseguir extrair os campois da tabela pesqueiro referentes a tabela comentarios, e ainda você pode incluir um where no final com uma condição

Select c.id, c.id_est, c.id_user, c.nota, c.titulo, c.comment, u.nome From comentarios c Inner join user u ON u.id = c.id_user inner join pesqueiro p on c.id_est = p.id 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, eu acrescentei isso no código porém ele está mostrando em todos, e eu queria que mostrasse somente os comentários da página em que ele está. segue o código:

$query = "Select c.id, c.id_est, c.id_user, c.nota, c.titulo, c.comment, u.nome From comentarios c Inner join user u ON u.id = c.id_user inner join pesqueiro p on c.id_est = p.id";

ele precisa pegar o valor da busca anterior da mesma página (que são as informações do estabeleciento) e acredito que teríamos que criar uma variável com o valor do id da página para colocar nessa busca. Obrigado, Vitor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, esse é o código que está pegando as informações do banco de dados, inclusive o id que eu preciso:

<?php$db = mysql_select_db("w18kilatemvet11");$sql = mysql_query("SELECT * FROM  `pesqueiro` WHERE  `nome` = CONVERT( _utf8 '$nome'USING latin1 ) COLLATE latin1_general_ci");$cont = mysql_num_rows($sql);while ($row = mysql_fetch_array($sql)) {echo "<table align='center' border='0' width='349'><th><img src='images/pesqueiros_page.jpg'></th><br>";echo "<tr><td bgcolor='#EEE9E9'><b><center><font face='arial' color='forestGreen' size='5'>".$row['nome']."</td></tr><br><br></b></font>";echo "<tr><td bgcolor='#F8F8FF'><font face='arial' color='forestGreen' size='3'><b>Descrição:</b> ".$row['descricao']."</td></tr>";echo "<tr><td bgcolor='#EEE9E9'><font face='arial' color='forestGreen' size='3'><b>Localidade:</b> ".$row['endereço']." - ".$row['cidade']."</td></tr>";echo "<tr><td bgcolor='#F8F8FF'><font face='arial' color='forestGreen' size='3'><b>Site:</b><a href='".$row['site']."' target='_blank'> ".$row['site']."</a></td></tr>";echo "<tr><td bgcolor='#EEE9E9'><font face='arial' color='forestGreen' size='3'><b>E-Mail:</b> ".$row['email']."</td></tr>";echo "<tr><td bgcolor='#F8F8FF'><font face='arial' color='forestGreen' size='3'><b>Telefone:</b> ".$row['telefone']."</td></tr>";echo "<tr><td align='right'><font face='arial' color='forestGreen' size='1'>    (#".$row['id'].")</table>";echo "<font face='arial' color='#666666' size='2'><center>ATENÇÃO! O Site ACAMPI está sempre tentando manter o nosso Banco de Dados atualizado, porém PESQUEIROS podem<br>abrir e fechar sem qualquer aviso prévio, então, antes de viajar, certifique-se que o local ainda está ativo!</center></font>";}?>
Eu preciso do id ($row['id']) acima para fazer a operação com o código de baixo. Como eu faço isso?? :

 

<?php$db = mysql_select_db("w18kilatemvet11");$query = "Select comentarios.id, comentarios.id_est, comentarios.id_user, comentarios.nota, comentarios.titulo, comentarios.comment, user.nomeFrom comentariosInner join userON user.id = comentarios.id_user";$resultado = mysql_query($query, $conexao) or die(mysql_error());$cont = mysql_num_rows($resultado);if($cont==0){  echo '<font face="arial" color="forestGreen"><center><h4><br><br><br>Não há comentários<br></h4></center>';}else{ $cont = 1;  echo '<font color="forestGreen"><TABLE align="center" width="550" border="0">';     while ($row = mysql_fetch_array($resultado)) {if ($cont % 2 == 0){$cor = "#E8E8E8";}else{$cor = "#CFCFCF";}           echo '<tr style="background-color: '.$cor.'"><td><font face="arial" color="forestGreen" size="2">Nome: '.$row['nome'].'<br>';echo '<font color="forestGreen" face="arial">Nota: <font size="5">'.$row['nota'].'</font><br>';echo '<font color="forestGreen" face="arial" size="2">Título: <b>'.$row['titulo'].'</b><br>';echo '<font color="forestGreen" face="arial" size="2">Comentário: '.$row['comment'].'</td></tr>';$cont = $cont + 1;  }   echo '</table>';}?>

Obrigado!!!

 

 

 

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

nessa linha aki

echo "<tr><td bgcolor='#F8F8FF'><font face='arial' color='forestGreen' size='3'><b>Site:</b><a href='".$row['site']."' target='_blank'> ".$row['site']."</a></td></tr>";
pode passar por url o id assim

echo "<tr><td bgcolor='#F8F8FF'><font face='arial' color='forestGreen' size='3'><b>Site:</b><a href='".$row['site']."?id=".$row['id']."' target='_blank'> ".$row['site']."</a></td></tr>";
na outra página

$id = $_GET['id'];
a variável $id tem o seu id

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah tah

$nome = $_GET['nome'];//pegando o nome que passou na URL
ai na query, tenta ae

Select c.id, c.id_est, c.id_user, c.nota, c.titulo, c.comment, u.nome From comentarios c 
Inner join user u ON u.id = c.id_user 
inner join pesqueiro p on c.id_est = p.id
where p.nome = '{$nome}' //considerando que o campo se chama nome na tabela pesqueiro 

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.