Ir para conteúdo

POWERED BY:

Arquivado

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

jluiz27a

[Resolvido] como fazer um select em apenas alguns campos

Recommended Posts

tenho este codigo

 

$mes = date('m');

$sql = mysql_query("SELECT * FROM saida WHERE m1 = '$mes'");

 

 

que esta funcionando perfeito, ele me so me mostra o mes que foi digitado, mas queria fazer uma pesquisar onde ele os campos m1,m2,m3,m4,m5 se for igual a $mes imprimir valor mes atual. neste select ele so pega um campo, não estou estou tendo logica para pega os 5 campos sei que puro sql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for o que entendi teremos alguns OR

 

WHERE m1 = '$mes'" OR m2 = '$mes'" OR m3 = '$mes'" ...

mas qual o motivo de sua tabela está assim com varios campos meses?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ver se eu entendi...

 

Ex.

 

se na sua aplicação tiver um filtro com valor todos, Janeiro, Fevereiro....

 

quando você recuperar todos deve listar todos os meses, sendo assim recupere todos com o valor =%

 

na consulta SQL faça:

 

WHERE m1 LIKE <Varíavel recuperada>

 

se a varíavel recuperada for todos então:

 

Será um LIKE (%) que listará todos registros daquele campo.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho este codigo

 

$mes = date('m');

$sql = mysql_query("SELECT * FROM saida WHERE m1 = '$mes'");

 

 

que esta funcionando perfeito, ele me so me mostra o mes que foi digitado, mas queria fazer uma pesquisar onde ele os campos m1,m2,m3,m4,m5 se for igual a $mes imprimir valor mes atual. neste select ele so pega um campo, não estou estou tendo logica para pega os 5 campos sei que puro sql.

Tenta assim:

 

function criaSQLString( $array ){
	$sep = "__mm__";
	$sql = sprintf( sprintf( "( %s = '%%s' )" , $sep ) , implode( sprintf( "' ) OR ( %s = '" , $sep ) , $array ) );

	for ( $i = 1; preg_match( sprintf( "/\\(\\s(%s)\\s\\=\\s([^\\)]+)\\s\\)/" , $sep ) , $sql ); $i++ ){
		$sql = preg_replace( sprintf( "/%s/" , $sep ) , sprintf( "m%d" , $i ) , $sql , 1 );
	}

	return( sprintf( "SELECT * FROM saida WHERE %s" , $sql ) );
}

// Em vez de usar uma variável para cada mes, use uma matriz contendo todos os meses
$meses = array( date( "m" ) , date( "m" ) , date( "m" ) , date( "m" ) , date( "m" ) , date( "m" ) );

$sql = mysql_query( criaSQLString( $meses ) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sou a favor de usar o IN.

 

select * from saida where '$mes' in (m1,m2,m3,m4,m5)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sou a favor de usar o IN.

 

select * from saida where '$mes' in (m1,m2,m3,m4,m5)

 

Muito obrigado a todos, mas ja resolve, bem não foi uma modelagem muito boa mas so conseguir resolver com esta mesma. obrigado

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.