Ir para conteúdo

POWERED BY:

Arquivado

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

visitante_php

erro no laço e na concatenacao

Recommended Posts

<?php
$query = "SLEECT * FROM fotos";
foreach($_GET as $campo => $valor){
	if($campo != "button"){
		 if($valor != ""){
			  for($i = 0; $i == (count($campo) - 1); $i++){
							$query .= " $campo LIKE '$valor' OR ";
			}
		$query .= " $campo LIKE '$valor'";
		}
	}
}
echo $query;
?>

to tentando pegar todos os campos de uma busca, onde os campos pesquisados tem algum valor, ou seja, pesquisar onde somente tem valor...so q esta retornnando assim

 

SLEECT * FROM fotos nome LIKE 'inovar' OR nome LIKE 'inovar' data_tirada LIKE '04/08/2008' OR data_tirada LIKE '04/08/2008'

esta repetindo algumas linhas da query, como eu resolvo isso? =/, eu keria q retornasse assim :

SLEECT * FROM fotos nome LIKE 'inovar' OR data_tirada LIKE '04/08/2008'

independente do numero de campos com valor, add um OR com o campo e valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou com

SELECT * FROM fotos

invés de

SLEECT * FROM fotos

deve ser isso :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

esses foram os erros banais, mas eu keria q ele retornasse tipo(esses exemplo sao gerados pelo echo e nao com mysql_query)

 

a busca tem 6 campos, uns serao preenchidos e outros nao, ae eu to fazendo akele script la emcima pra ele pegar os campos q foram preenchidos...

 

so q o problema eh na hora de encaixar o "OR", aolha os 2 exemplos....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem que ser OR ?

 

Se fosse com AND ficaria assim:

 

$query = "SELECT * FROM fotos WHERE 1=1 ";
foreach($_GET as $campo => $valor)
{
	if($campo != "button")
	{
		if($valor != "")
		{
			for($i = 0; $i<sizeof($campo); $i++)
			{
				$query .= " AND $campo LIKE '$valor'";
			}
		}
	}
}
echo $query;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja tive um problema semelhante...

será que não é pq você tá percorrendo todos os campos não?

 

tenta tirar o

$query .= " $campo LIKE '$valor'";

do foreach

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rafael, seu codigo:

 

<?php
$query = "SELECT * FROM fotos WHERE ";
foreach($_GET as $campo => $valor)
{
	if($campo != "button")
	{
		if($valor != "")
		{
			for($i = 0; $i<sizeof($campo); $i++)
			{
				$query .= " AND $campo LIKE '$valor'";
			}
		}
	}
}
echo $query;
?>

esta gerando esta saida

 

SELECT * FROM fotos WHERE AND nome LIKE 'qweqwe' AND credito LIKE 'asdasd'

observe q depois de WHERE esta AND e vai dar erro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

$base_query = "SELECT * FROM fotos";

if(sizeof($_GET) != 0) {
	$base_query .= " WHERE ";
}

$right_query = array();
foreach($_GET as $campo => $valor) {
	$right_query []= $campo . " LIKE '{$valor}'";
}

$right_query = join(' AND ', $right_query);

$full_query = $base_query . $right_query;

echo $full_query;

 

 

Retorna:

SELECT * FROM fotos WHERE nome LIKE 'inovar' AND data_tirada LIKE '04/08/2008'

Para

?nome=inovar&data_tirada=04/08/2008

 

Funcionou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rafael, seu codigo:

 

<?php
$query = "SELECT * FROM fotos WHERE ";
foreach($_GET as $campo => $valor)
{
	if($campo != "button")
	{
		if($valor != "")
		{
			for($i = 0; $i<sizeof($campo); $i++)
			{
				$query .= " AND $campo LIKE '$valor'";
			}
		}
	}
}
echo $query;
?>

esta gerando esta saida

 

SELECT * FROM fotos WHERE AND nome LIKE 'qweqwe' AND credito LIKE 'asdasd'

observe q depois de WHERE esta AND e vai dar erro...

 

amigão, se observar bem o que postei, tá faltando um 1=1 após o WHERE

 

ficando assim a primeira linha:

$query = "SELECT * FROM fotos WHERE 1=1";

Só que só funcionará se for com AND

 

testae e diga o que acontece..

 

[x]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa, com todo o respeito e por favor nao me leve a mau, mas se você fosse mulher eu daria um bjo em você....funcionou sim, muuuuuuuuuuito obrigado!!!!!!!!!!!!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o codigo do mangakah funcionou certinho, mas rafael pra q esse WHERE 1=1?, teria q ser com um dos campos digitados com valores...

WHERE 1=1 é só para caso não existir outra nenhuma outra condição e daí o WHERE não ficar vazio.. Sempre retorna todos os registros pois 1 sempre será igual a 1 ;)

 

pode colocar dessa forma que funciona... testae me diga

 

$query = "SELECT * FROM fotos WHERE 1=1 ";
foreach($_GET as $campo => $valor)
{
	if($campo != "button")
	{
		if($valor != "")
		{
			for($i = 0; $i<sizeof($campo); $i++)
			{
				$query .= " AND $campo LIKE '$valor'";
			}
		}
	}
}

[x]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

WHERE 1=1 é só para caso não existir outra nenhuma outra condição e daí o WHERE não ficar vazio.. Sempre retorna todos os registros pois 1 sempre será igual a 1

Ou seja... GAMBIARRA!

aehuiahahuiaehuae

 

zuera.

Parabéns Mussi!

=)

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente se enviar a busca com os campos sem valores, todo em banco o codigo do mangakah nao ira funcionar, mas acredito q ninguem seria capaz de fazer uma coisa dessas.... =/ ou seria :S?

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente se enviar a busca com os campos sem valores, todo em banco o codigo do mangakah nao ira funcionar, mas acredito q ninguem seria capaz de fazer uma coisa dessas.... =/ ou seria :S?

cara, o código que coloquei faz exatamente isso...

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.