Ir para conteúdo

POWERED BY:

Arquivado

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

Marcos_imasters

usando in join

Recommended Posts

oap fiz um sistema de busca e querisa usar in join para pesquisar mais de uma tabela alguem me ajuda?

 

 

<?php

include('../conexao.php');

if(isset($_GET['pesquisar']))
{
$pesquisar=$_GET['pesquisar'];

$procurando=mysql_query("SELECT A.login, A.nome, B.nomesite, B.url
FROM usuarios A, configuracoes B
 WHERE A.login LIKE '%$pesquisar%' = B.nomesite   LIKE '%$pesquisar%' ORDER BY id DESC LIMIT 20");



$total=mysql_num_rows($procurando);

if($total > 0)
{

while($exibir=mysql_fetch_array($procurando))
{
$login=$exibir['login'];
$encontrado='<font color="#FF0000"><b>'.$pesquisar.'</b></font>';
$encontrou = str_ireplace($pesquisar, $encontrado, $login);
?>


<li><?php echo $encontrou; ?></li>
<?php
}
}
else
{

echo "<li>Nada Encontrado</li>";

}


}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, man, isso aqui não vai funcionar:

 

A.login LIKE '%$pesquisar%' = B.nomesite LIKE '%$pesquisar%'

 

O conceito do INNER é de juntar informações de tabelas diferentes informando o que elas tem em comum.

 

Por exemplo:

SELECT A.login, A.nome, B.nomesite, B.url
FROM usuarios A, configuracoes B
WHERE A.Codigo = B.Codigo AND A.login LIKE '%$pesquisar%' ORDER BY id DESC LIMIT 20

 

Entendeu?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

desse ejeito da erro

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\teste\buscar\pesquisar.php on line 13

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, se nun usou o que eu passei não, né? Era só um exemplo! xD

 

O que você deve fazer aí informar a relação das tabelas. Para melhor ilustrar, vamos imaginar 2 tabelas:

 

Create Table Cliente(
Codigo int unsigned auto_increment,
Nome varchar(50),
Email varchar(50),
Idade int
);
Create Table Endereco(
Codigo int unsigned auto_increment,
CodigoCliente int not null,
Endereco varchar(100),
Numero varchar(10),
Complemento varchar(100)
);

 

Perceba que na tabela de Endereco existe uma coluna CodigoCliente, que deve conter o mesmo Codigo da tabela Cliente

 

Para fazer o Inner Join e trazer uma linha contendo os dados das duas tabelas você irá fazer:

SELECT A.Nome, A.Email, A.Idade, B.Endereco, B.Numero, B.Complemento 
FROM Cliente A 
INNER JOIN Endereco B ON A.Codigo = B.CodigoCliente

ou

SELECT A.Nome, A.Email, A.Idade, B.Endereco, B.Numero, B.Complemento 
FROM Cliente A, Endereco B 
WHERE A.Codigo = B.CodigoCliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei aqui e nao deu no

<?php

include('../conexao.php');

if(isset($_GET['pesquisar']))
{
$pesquisar=$_GET['pesquisar'];

$procurando=mysql_query("A.nome, A.email, A.sexo, B.nome 
       FROM usuarios A 
INNER JOIN materias B ON A.id = B.id  LIKE '%$pesquisar%' ORDER BY id DESC LIMIT 20");

$total=mysql_num_rows($procurando);

if($total > 0)
{

while($exibir=mysql_fetch_array($procurando))
{
$login=$exibir['login'];
$encontrado='<font color="#FF0000"><b>'.$pesquisar.'</b></font>';
$encontrou = str_ireplace($pesquisar, $encontrado, $login);
?>


<li><?php echo $encontrou; ?></li>
<?php
}
}
else
{

echo "<li>Nada Encontrado</li>";

}


}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugiro que estudo sobre INNER JOIN. É de fácil entendimento.

Voltando à sua dúvida, teste assim:

<?php

include('../conexao.php');

if(isset($_GET['pesquisar']))
{
$pesquisar=$_GET['pesquisar'];

$procurando=mysql_query("SELECT * FROM usuarios AS a 
INNER JOIN materias AS b ON a.id = b.id  LIKE '%$pesquisar%' ORDER BY id DESC LIMIT 20");

$total=mysql_num_rows($procurando);

if($total > 0)
{

while($exibir=mysql_fetch_array($procurando))
{
$login=$exibir['login'];
$encontrado='<font color="#FF0000"><b>'.$pesquisar.'</b></font>';
$encontrou = str_ireplace($pesquisar, $encontrado, $login);
?>


<li><?php echo $encontrou; ?></li>
<?php
}
}
else
{

echo "<li>Nada Encontrado</li>";

}


}
?>

Se quiser dar uma olhada, separei uns links (todos em português):

Compartilhar este post


Link para o post
Compartilhar em outros sites

poxa deu esse erro ...

 

 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\teste\buscar\pesquisar.php on line 12

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, esqueci do WHERE.

SELECT * FROM usuarios AS a 
INNER JOIN materias AS b ON a.id = b.id WHERE a.id LIKE '%$pesquisar%' AND b.id LIKE '%$pesquisar%'  ORDER BY id DESC LIMIT 20

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda pesiste o erro

 

 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\teste\buscar\pesquisar.php on line 12

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcos, esse erro não ajuda em nada.

 

Para saber o motivo, sempre rode as tuas queries assim:

$procurando=mysql_query("SELECT * FROM usuarios AS a 
INNER JOIN materias AS b ON a.id = b.id WHERE a.id LIKE '%$pesquisar%' AND b.id LIKE '%$pesquisar%'  ORDER BY id DESC LIMIT 20")or die( mysql_error() );

ai sim, você terá uma mensagem do motivo do erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

willian aparece isso Column 'id' in order clause is ambiguous

 

ate arrumei mais agora nao acha nada no banco ...

 

<?php

include('../conexao.php');

if(isset($_GET['pesquisar']))
{
$pesquisar=$_GET['pesquisar'];

$procurando=mysql_query("SELECT * FROM usuarios AS a 
INNER JOIN materias AS b ON a.id = b.id WHERE a.id LIKE '%$pesquisar%' AND b.id LIKE '%$pesquisar%'  ORDER BY a.id = b.id DESC LIMIT 20")or die( mysql_error() );

$total=mysql_num_rows($procurando);

if($total > 0)
{

while($exibir=mysql_fetch_array($procurando))
{
$login=$exibir['login'];
$encontrado='<font color="#FF0000"><b>'.$pesquisar.'</b></font>';
$encontrou = str_ireplace($pesquisar, $encontrado, $login);
?>


<li><?php echo $encontrou; ?></li>
<?php
}
}
else
{

echo "<li>Nada Encontrado</li>";

}


}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

gabriel botei tipo ate parece o campo que aparece os resultados mais nao mosra o resultado nao seria por causa de

$login=$exibir['login'];

$encontrado='<font color="#FF0000"><b>'.$pesquisar.'</b></font>';

$encontrou = str_ireplace($pesquisar, $encontrado, $login);

?>

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.