Ir para conteúdo

Arquivado

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

rafaeloliveira83

[Resolvido] Erro no SQL com GET Like $letra%

Recommended Posts

Estou com problema ao passar a variavel para a consulta SQL em LIKE.

 

Tenho um código de paginação que se eu adiciono manualmente no LIKE "A%" ele exibe tudo que começa com A; porem se tento passar o a letra pega pelo GET em LIKE "$letra%" ele retorna "Produto não encontrado." mas eu coloquei o $letra ao lado do produto e ele exibe a letra que foi escolhida apenas não funciona no SQL.

 

$final_query = 'FROM produtos WHERE Nome LIKE "$letra%" ORDER BY `produtos`. `Nome` ASC'; // Não funciona

$final_query = 'FROM produtos WHERE Nome LIKE "A%" ORDER BY `produtos`. `Nome` ASC'; // Funciona

 

 

<?php $letra = $_GET["Letra"]; ?>

 

 

 

<?php
//Conexão com o banco:
include "conecta.php"; // Conecta ao banco de dados

// Informações da query.
$campos_query = "*";
$final_query = 'FROM produtos WHERE Nome LIKE "$letra%" ORDER BY `produtos`. `Nome` ASC';

// Declaração da pagina inicial
$pagina = $_GET["p"];
if($pagina == "") {
$pagina = "1";
}

// Maximo de registros por pagina
$maximo = 50;

// Calculando o registro inicial
$inicio = $pagina - 1;
$inicio = $maximo * $inicio;

// Conta os resultados no total da minha query
$strCount = "SELECT COUNT(*) AS 'num_registros' $final_query";
$query = mysql_query($strCount);
$row = mysql_fetch_array($query);
$total = $row["num_registros"];

if($total<=0) {
echo "<center>Nenhum produto encontrado.</center>";
} else {
$strQuery = "SELECT $campos_query $final_query LIMIT $inicio,$maximo";
$query = mysql_query($strQuery);


while($row = mysql_fetch_array($query)) {

echo '<ul class="alinha">';
// Contador
$i = ++$cont;
?>

<li><? echo $i . '. ' ;?><a href="produto/<? echo $row['Nome']; ?>"><? echo $row['Nome']; ?></a></li>

<?

echo '</ul>';

}
echo "<br /><br />";

echo "<div id='paginacao'>";
echo "<br />";
// Calculando pagina anterior
$menos = $pagina - 1;

// Calculando pagina posterior
$mais = $pagina + 1;

$pgs = ceil($total / $maximo);
if($pgs > 1 ) {
// Mostragem de pagina
if($menos > 0) {
echo "<a href=\"?p=$menos\" class='menu'>«« Anterior</a>  <span style='color:black; font-weight:normal'>|</span>    ";
}
// Listando as paginas
for($i=1;$i <= $pgs;$i++) {
if($i != $pagina) {
echo " <a class='menu' href=\"?p=".($i)."\">$i</a> ";
} else {
echo " <strong class='pg'>" .$i. "</strong>";
}
}
if($mais <= $pgs) {
echo "    <span style='color:black; font-weight:normal'>|</span>  <a href=\"?p=$mais\" class='menu'>Próxima »»</a>";
}
}

echo "</div>";
}
// Liberar o conjunto de resultados
mysql_free_result($query);

// Fechar a conexao
mysql_close($link);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

muda essas linhas

$query = mysql_query($strCount);
$query = mysql_query($strQuery);

 

para essas que vão retornar erro na consulta

$query = mysql_query($strCount) or die(mysql_error());
$query = mysql_query($strQuery) or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conferi sim até na mensagem "Nenhum produto encontrado" coloquei

 

echo "<center>Nenhum produto encontrado $letra.</center>";

 

e ele exibe a letra escolhida só no SQL q não puxa.

 

 

Você já conferiu o valor da variável $letra?

 

Então ainda esta exibindo "Nenhum produto encontrado"

 

 

 

muda essas linhas

$query = mysql_query($strCount);
$query = mysql_query($strQuery);

 

para essas que vão retornar erro na consulta

$query = mysql_query($strCount) or die(mysql_error());
$query = mysql_query($strQuery) or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro era no SQL mesmo:

 

Bastou trocar

 

$final_query = 'FROM produtos WHERE Nome LIKE "$letra%" ORDER BY `produtos`. `Nome` ASC';

 

por

 

$final_query = 'FROM produtos WHERE Nome LIKE "' . $letra .'%" ORDER BY `produtos`. `Nome` ASC';

 

Funcionou perfeitamente!

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.