Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera boa tarde.
estou trabalhando em um sistema de busca e preciso de uma grande ajuda de vocês.
Bom meu código faz a busca perfeitamente só que preciso que ele busque em duas tabelas.
uma das tabelas é; coluna_esquerda_1 e a outra é coluna_direita_1
segue o código.
<?php
// Configuração do script
// ========================
$_BS['PorPagina'] = 3; // Número de registros por página
// Conexão com o MySQL
// ========================
$_BS['MySQL']['servidor'] = 'Localhost';
$_BS['MySQL']['usuario'] = 'usuario';
$_BS['MySQL']['senha'] = 'senhal';
$_BS['MySQL']['banco'] = 'banco';
mysql_connect($_BS['MySQL']['servidor'], $_BS['MySQL']['usuario'], $_BS['MySQL']['senha']);
mysql_select_db($_BS['MySQL']['banco']);// Verifica se foi feita alguma busca
// Caso contrario, redireciona o visitante
if (!isset($_GET['consulta'])) {
header("Location: http://www.spcomunicacao.com.br/aindahojecom");
exit;
}
// Se houve busca, continue o script:
// Salva o que foi buscado em uma variável
$busca = $_GET['consulta'];
// Usa a função mysql_real_escape_string() para evitar erros no MySQL
$busca = mysql_real_escape_string($busca);
// ============================================
// Monta a consulta MySQL para saber quantos registros serão encontrados
$sql = "SELECT COUNT(*) AS total FROM coluna_esquerda_1 WHERE ((titulo LIKE '%".$busca."%') OR ('%".$busca."%')) ORDER BY data DESC";
// Executa a consulta
$query = mysql_query($sql);
// Salva o valor da coluna 'total', do primeiro registro encontrado pela consulta
$total = mysql_result($query, 0, 'total');
// Calcula o máximo de paginas
$paginas = (($total % $_BS['PorPagina']) > 0) ? (int)($total / $_BS['PorPagina']) + 1 : ($total / $_BS['PorPagina']);
// ============================================
// Sistema simples de paginação, verifica se há algum argumento 'pagina' na URL
if (isset($_GET['pagina'])) {
$pagina = (int)$_GET['pagina'];$pagina = 1;
}
$pagina = max(min($paginas, $pagina), 1);
$inicio = ($pagina - 1) * $_BS['PorPagina'];
// ============================================
// Monta outra consulta MySQL, agora a que fará a busca com paginação
$sql = "SELECT * FROM coluna_esquerda_1 WHERE ((titulo LIKE '%".$busca."%') OR ('%".$busca."%')) ORDER BY id DESC LIMIT ".$inicio.", ".$_BS['PorPagina'];
// Executa a consulta
$query = mysql_query($sql);
// ============================================
// Começa a exibição dos resultados
echo "<p>Resultados ".min($total, ($inicio + 1))." - ".min($total, ($inicio + $_BS['PorPagina']))." de ".$total." resultados encontrados para '<font face='calibri'><b>".$_GET['consulta']."</b></font>'</p>";
// <p>Resultados 1 - 20 de 138 resultados encontrados para 'minha busca'</p>
echo "<ul>";$titulo = $resultado['titulo'];
$texto = $resultado['subtitulo'];
$link = 'http://www.spcomunicacao.com.br/aindahojecom/desc.php?titulo=' . $resultado['titulo'];
echo "<li>";
echo '<a href="'.$link.'" title="'.$titulo.'">'.$titulo.'</a><br />';
echo date('d/m/Y H:i', time($resultado['cadastro']));
echo '<p>'.$texto.'</p>';
echo "</li>";
}
echo "</ul>";
echo "<hr>";
// ============================================
// Começa a exibição dos paginadores
if ($total > 0) {
for($n = 1; $n <= $paginas; $n++) {
echo '<a href="?consulta='.$_GET['consulta'].'&pagina='.$n.'">'.$n.'</a> ';
}
}
?>
a dúvida é essa. como fazer buscar na outra tabela também.
desde já agradeço a todos vcs.
>
Faz um JOIN .. acho que sua dúvida não seja precisamente em relação ao PHP .
Bom o problema é no código php. certo?. mas já tentei o JOIN e não consegui. Se alguém puder me mostrar como fazer agradeço muito.
Mostre como você tentou.
>
Mostre como você tentou.
<?php
// Configuração do script
// ========================
$_BS['PorPagina'] = 3; // Número de registros por página
// Conexão com o MySQL
// ========================
$_BS['MySQL']['servidor'] = 'Localhost';
$_BS['MySQL']['usuario'] = 'usuario';
$_BS['MySQL']['senha'] = 'senhal';
$_BS['MySQL']['banco'] = 'banco';
mysql_connect($_BS['MySQL']['servidor'], $_BS['MySQL']['usuario'], $_BS['MySQL']['senha']);
mysql_select_db($_BS['MySQL']['banco']);// Verifica se foi feita alguma busca
// Caso contrario, redireciona o visitante
if (!isset($_GET['consulta'])) {
header("Location: http://www.spcomunicacao.com.br/aindahojecom");
exit;
}
// Se houve busca, continue o script:
// Salva o que foi buscado em uma variável
$busca = $_GET['consulta'];
// Usa a função mysql_real_escape_string() para evitar erros no MySQL
$busca = mysql_real_escape_string($busca);
// ============================================
// Monta a consulta MySQL para saber quantos registros serão encontrados
$sql = "SELECT COUNT(*) AS total FROM coluna_esquerda_1 [b]JOIN coluna_direita_1[/b] WHERE ((titulo LIKE '%".$busca."%') OR ('%".$busca."%')) ORDER BY data DESC";
// Executa a consulta
$query = mysql_query($sql);
// Salva o valor da coluna 'total', do primeiro registro encontrado pela consulta
$total = mysql_result($query, 0, 'total');
// Calcula o máximo de paginas
$paginas = (($total % $_BS['PorPagina']) > 0) ? (int)($total / $_BS['PorPagina']) + 1 : ($total / $_BS['PorPagina']);
// ============================================
// Sistema simples de paginação, verifica se há algum argumento 'pagina' na URL
if (isset($_GET['pagina'])) {
$pagina = (int)$_GET['pagina'];$pagina = 1;
}
$pagina = max(min($paginas, $pagina), 1);
$inicio = ($pagina - 1) * $_BS['PorPagina'];
// ============================================
// Monta outra consulta MySQL, agora a que fará a busca com paginação
$sql = "SELECT * FROM coluna_esquerda_1 [b]JOIN coluna_direita_1[/b] WHERE ((titulo LIKE '%".$busca."%') OR ('%".$busca."%')) ORDER BY id DESC LIMIT ".$inicio.", ".$_BS['PorPagina'];
// Executa a consulta
$query = mysql_query($sql);
// ============================================
// Começa a exibição dos resultados
echo "<p>Resultados ".min($total, ($inicio + 1))." - ".min($total, ($inicio + $_BS['PorPagina']))." de ".$total." resultados encontrados para '<font face='calibri'><b>".$_GET['consulta']."</b></font>'</p>";
// <p>Resultados 1 - 20 de 138 resultados encontrados para 'minha busca'</p>
echo "<ul>";$titulo = $resultado['titulo'];
$texto = $resultado['subtitulo'];
$link = 'http://www.spcomunicacao.com.br/aindahojecom/desc.php?titulo=' . $resultado['titulo'];
echo "<li>";
echo '<a href="'.$link.'" title="'.$titulo.'">'.$titulo.'</a><br />';
echo date('d/m/Y H:i', time($resultado['cadastro']));
echo '<p>'.$texto.'</p>';
echo "</li>";
}
echo "</ul>";
echo "<hr>";
// ============================================
// Começa a exibição dos paginadores
if ($total > 0) {
for($n = 1; $n <= $paginas; $n++) {
echo '<a href="?consulta='.$_GET['consulta'].'&pagina='.$n.'">'.$n.'</a> ';
}
}
?>
Bom foi assim que tentei, mas se está certo só você pra me dizer. vi em algumas explicações em outros foruns mas não entendi como adaptar pois as explicações era co códigos muito diferentes.
Agraço muito pela sua ajuda.
Faz um JOIN .. acho que sua dúvida não seja precisamente em relação ao PHP .