Ir para conteúdo
Fórum Script Brasil
  • 0

Instrução SQL


Panthro

Pergunta

Galera bom dia....

Estou montando uma pesquisa analítica no php, mas estou sofrendo a dois dias, se alguém puder dar uma força

Aqui ele captura através de várias checkboxes os clientes que terei que pesquisar...

if ($_POST['user'] <> ""){

$input = $_POST['user'];

$ctrl=false;

foreach($input as $user) {

if(!$ctrl)

{

$sqx='".$user."'";

$ctrl=true;

}

$sqx .= " OR usuario LIKE '".$user."'";

}

//echo $sqx;

}

else

{

}

Aqui ele captura a data e converte para pesquisa...

$slower = $_POST["data_01];

$exp = explode("/",$slower);

$ndata = $exp[2]."-".$exp[1]."-".$exp[0];

Aqui é a consulta em si..

$sqele = "SELECT * FROM alunos WHERE usuario LIKE ".$sqx." AND data LIKE '$ndata";

$alunos=mysql_query($sqele);

$resultado = mysql_num_rows($alunos);

Ele simplesmente não efetua a pesquisa, ele conta todos os cadastros que possui tal usuário, mas não faz o filtro para a data específica da pesquisa.. se alguém puder me ajudar.. agradeço de verdade....

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

uma coisa que pode ser é o seu banco de dados...

veja se a coluna DATA está no formato DATE ou DATETIME... pois senão ele estará comparando strings, aí não sei se funciona. Mesmo assim devia funcionar, pois se a string no BD for "2010-11-20" e você passar no sql a variável $ndata com valor "2011-11-20" ele é pra funcionar também, eu acho.

Faz o seguinte, dá um ECHO na variável $sqele. Daí dá uma olhada na query... se for o caso, até copia a query, entra no banco de dados manualmente (via Painel do site, ou pelo próprio cliente SQL que você esteja usando) e coloque a query pra rodar direto no BD e veja os resultados. Poste aí o que que dá...

Link para o comentário
Compartilhar em outros sites

  • 0

Você efetuou a pesquisa direto via BD?

Porque se você fizer:

SELECT * FROM alunos WHERE usuario LIKE ".$sqx." AND data = '".$ndata."';
no MySQL ou sei lá qual a base que você usa, e ele não retornar nada, NO BANCO, quer dizer que você realmente não tem registros cadastrados com essas informações. Uma coisa, tente mudar a cláusula LIKE para:
SELECT * FROM alunos WHERE usuario LIKE '%".$sqx."%' AND data = '".$ndata."';

Pois dessa forma ele procurará na coluna "usuario" QUALQUER parte da String que contenha $sqx. Isso pode estar afetando o SELECT pois você usa o operador AND, então se um deles der falso, tudo dá falso. Colocando OR funciona? Ou com a cláusula nova que eu falei?

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado de verdade pela ajuda de todos...

$xql1 = "SELECT * FROM alunos WHERE usuario LIKE 'JULIANA' AND data_atualiz LIKE '$hoje'";

eu tenho esta cláusula em uma outra página... e funciona normalmente...

O problema está que preciso pesquisar dois ou mais usuários, exemplo... JULIANA, MARIA, CHIQUINHA.....

Por isso tenho as boxes, para o usuario clicar e escolher mais de um usuário...

Tentei desses 3 jeitos.... usando foreach e implode....

$sqele = "SELECT * FROM alunos WHERE usuario IN ('$texto') AND data = '%{$ndata}%'";

$sqele = "SELECT * FROM alunos WHERE usuario LIKE '%$sqx%' AND data = '{$ndata}'";

$sqele = "SELECT * FROM alunos WHERE usuario LIKE '%".$sqx."%' AND data = '".$ndata."'";

Nenhum dos tres acima consegue buscar no banco....

e este banco tem mais de mil cadastros, em diversas datas...

Coisa muito estranha...

Estou aberto a sugestões, se puder ajudar, agradeço....

Link para o comentário
Compartilhar em outros sites

  • 0

svjets

Tentei a anterior sim, sem sucesso...

Com sua sugestão atual, ele me retorna alguns resultados,

olha o print do dia 06.

2011-01-06

87

CRISTINA

2011-01-06

155

AMANDA,CRISTINA

mas hoje por exemplo, ele me retorna zero, e a aluna Amanda tem o 28 ocorrências....

Cara... agradeço de verdade.... deu algum sinal de vida pelo menos... hehehehe

A sequencia que você me passou ontem...

$input = $_POST['user'];

$ctrl=false;

foreach($input as $user) {

if(!$ctrl)

{

$sqx='".$user."'";

$ctrl=true;

}

$sqx .= " OR usuario LIKE '".$user."'";

}

//echo $sqx;

}

else

{

}

a pesquisa que você me passou agora...

$sqele = "SELECT * FROM alunos WHERE data = '".$ndata."' AND (usuario LIKE ".$sqx.")";

Abraços

svjets

Tentei a anterior sim, sem sucesso...

Com sua sugestão atual, ele me retorna alguns resultados,

olha o print do dia 06.

2011-01-06

87

CRISTINA

2011-01-06

155

AMANDA,CRISTINA

mas hoje por exemplo, ele me retorna zero, e a aluna Amanda tem o 28 ocorrências....

Cara... agradeço de verdade.... deu algum sinal de vida pelo menos... hehehehe

A sequencia que você me passou ontem...

$input = $_POST['user];

$ctrl=false;

foreach($input as $user) {

if(!$ctrl)

{

$sqx="'".$user."'";

$ctrl=true;

}

$sqx .= " OR usuario LIKE '".$user."'";

}

//echo $sqx;

}

else

{

}

a pesquisa que você me passou agora...

$sqele = "SELECT * FROM alunos WHERE data = '".$ndata."' AND (usuario LIKE ".$sqx.")";

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...