Ir para conteúdo

POWERED BY:

Arquivado

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

Zouj

[Resolvido] Busca | PHP+MySQL

Recommended Posts

Boa noite

 

 

galera estou fazendo uma pagina de busca, e nela estou tentando implementar a pesquisa por nome, data e pelo status do pagamento.

a pesquisa por nome e por data jah esta funcionando;)

vi num site a um sistema similiar ao q estou fazendo soh q mais complexo.

 

Minha dúvida: como faria para adicionar esses campos para pesquisar pelo status do pagamento, tipo pesquisar soh os pagos ou soh os pendentes.

 

IMAGEM:

Imagem Postada

 

codigo atual:

<?php

         $pesquisar = $_REQUEST['pesquisar'];
		 $id = $_GET['id'];
				$data1 = $_POST['data1'];
				$data1 = $_POST['data1'];$data1 = preg_replace("/(\d+)\/(\d+)\/(\d+)/", "$3-$2-$1", $data1);
				$data2 = $_POST['data2'];
				$data2 = $_POST['data2'];$data2 = preg_replace("/(\d+)\/(\d+)\/(\d+)/", "$3-$2-$1", $data2);
				
		if( !empty($_POST['data1']) ) $where_data = "AND dtprocesso BETWEEN '$data1' AND '$data2'";
		
		$sql_clientes = mysql_query("SELECT
 cadastro.id,
 cadastro.nomecliente,
 cadastro.cpfcliente,
 cadastro.dtprocesso,
 cadastro.telefonecliente,
 cadastro.celularcliente,
 pagamentos.id_processo,
 pagamentos.valor,
 pagamentos.data,
 pagamentos.situacao
 FROM cadastro
 LEFT JOIN pagamentos ON cadastro.id = pagamentos.id_processo WHERE cadastro.nomecliente LIKE '%".$pesquisar."%' $where_data ORDER BY cadastro.nomecliente")or die(mysql_error());
		
		

$c = 2;
$cores = array("#CCCCCC","#FFFFFF");

$contar = mysql_num_rows($sql_clientes);
if($contar <= '0'){
	echo "ERROR";
}else{
	while($linha = mysql_fetch_assoc($sql_clientes))
	{
		$index = $c % 2;
		$c++;
		$cor = $cores[$index];


		$tabela = '<table width="100%" border="0" cellspacing="0" cellpadding="5">';
		$tabela .= '<tr bgcolor="'.$cor.'">';
		$tabela .= '<td width="2%"><div align="center" title=""><img src="imagens/icones/news.png" border="0" align="absbottom"></div></td>';
		$tabela .= '<td width="16%"><div align="left">'.$linha['nomecliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['cpfcliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['telefonecliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['celularcliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$data = date('d/m/Y', strtotime($linha['dtprocesso'])).'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$data = date('d/m/Y', strtotime($linha['data'])).'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['situacao'].'</div></td>';
		$tabela .= '<td width="8%"><div align="right">'.' R$ ' . number_format($linha['valor'], 2, ',', '.').'</div></td>';
		$tabela .= '<td width="2%"><div align="center"><a href="index2.php?pg=result&id='.$linha['id'].'"><img src="imagens/icones/vis.gif" border="0" align="absbottom"></a></div></td>';
		$tabela .= '</tr>';
		$tabela .= '</table>';

		echo $tabela;
		
		$valor_total += $linha['valor'];
	}

}
	

?>

Quem puder dah uma ajuda, agradeço.

 

Agradecimento ae ao Willian, me ajudo bastante. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sugeriria que você tirasse a query de dentro da função e operasse uma variável, mas acabei de ver que você cria sua s cláusula WHERE dinâmicamente.

 

E é bem isso que você precisa fazer.

 

Se os campos que você precisa e se refere são os checkboxes, todos os atributos name dos checkboxes devem ser iguais e terminados co []. Assim, o PHP receberá um array.

 

Então, basta adicionar depois do $where_data:

 

if( isset( $_POST['nome_do_grupo de checkboxes'] ) && count( $_POST['nome_do_grupo de checkboxes'] ) > 0 ) {
   $where_data .= ' AND ' . sprintf( '`tipo_transicao` IN ("%s")', implode( '", ', $data ) );
   // Saída: AND `tipo_transicao` IN ("v1", v2", v3")
}

Algo assim, já que não sei como está sua estrutura de tabelas.

 

Primeiro verificamos se o íncidice dos checkboxes existe por segurança, depois verificamos se ele não está vazio, isto é, contém valores, já que checkboxes não selecionados, não são passados ao programa PHP.

 

Se houverem campos marcados e notação de colchetes HTML tiver sido definida, esse campo POST será um array e, com ele podemos montar a query da forma como está acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

if( isset( $_POST['nome_do_grupo de checkboxes'] ) && count( $_POST['nome_do_grupo de checkboxes'] ) > 0 ) {
    $where_data .= ' AND ' . sprintf( '`tipo_transicao` IN ("%s")', implode( '", ', $data ) );
    // Saída: AND `tipo_transicao` IN ("v1", v2", v3")
}

Bom dia :lol:

 

Brother entendi quase tudo, menos essa parte

> sprintf( '`tipo_transicao` IN ("%s")', implode( '", ', $data ) ); <

o que seria tipo_transicao? :huh:

 

 

ah tah a estrutura da tabela

CREATE TABLE `pagamentos` (
  `id_pagamento` int(11) NOT NULL auto_increment,
  `id_processo` int(11) NOT NULL,
  `valor` decimal(10,2) NOT NULL,
  `data` date NOT NULL,
  `situacao` varchar(20) NOT NULL,
  PRIMARY KEY  (`id_pagamento`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=26 ;

outra coisa

 

tah certo o q fiz com os checkboxes \/

 

<label>
  <input type="checkbox" name="pesquisar2[]" id="checkbox" />
  </label>
  PAGOS<br />
  <label>
  <input type="checkbox" name="pesquisar2[]" id="checkbox2" />
  </label>
  PENDENTES

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer procurar os valores dos checkboxes Status da Transação não é?

 

Então, eu supus um nome de campo da sua tabela que conteria essa informação, já que eu não sabia como ela está.

 

Agora que você postou a estrutura da tabela, se eu a compreendi corretamente, o nome do campo deveria ser situacao. Basta substituir :D

 

Quanto aos checkboxes, se você não se importa de ter atributos name que não sejam auto-explicativos, tudo bem.

 

Eu, particularmente, gosto que tanto os camos HTML sejam nomeados com aquilo que representam como no PHP, nomear as variáveis de acordo com o que elas farão. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite

 

Brother tentei fazer como me falou mais ñ tah dando certo. :(

Fiz algo errado? :huh:

 

<div id="conteudo_resulte">
	  	  <div id="busca_pagamentos">
       	    <div id="busca_vis_pagamentos">
       	      <form id="form1" name="form1" method="post" action="">
       	        <table width="251" border="0" align="center">
                  <tr>
                    <th colspan="3" scope="col"><span class="style15">PAGAMENTOS</span></th>
                  </tr>
                  <tr>
                    <td width="92"><span class="style9">DATA INÍCIO</span></td>
                    <td width="66"><span class="style9">DATA FINAL</span></td>
                    <td width="79" class="style9">NOME</td>
                  </tr>
                  <tr>
                    <td><span id="sprytextfield1">
                      <label>
                      <input name="data1" type="text" class="style10" id="data1" size="12"/>
                    </label>
                    </span></td>
                  <td><span id="sprytextfield2">
                    <label>
                    <input name="data2" type="text" class="style10" id="data2" size="12" />
                  </label>
</span></td>
              <td><label class="style10">
                      <input name="pesquisar" type="text" class="style10" id="pesquisar" size="40" />
                    </label></td>
                  </tr>

                  <tr>
                    <td colspan="3"><label>
                      <table width="100%" border="0">
                        <tr>
                          <th scope="col"><label>
                            <input type="checkbox" name="pesquisar2[]" id="pesquisar2[]" value="PAGO"/>
                            PAGO
                          </label></th>
                          <th scope="col"><div align="left">
                            <label>
                            <input type="checkbox" name="pesquisar2[]" id="pesquisar2[]" value="PENDENTE"/>
                            PENDENTE
                            </label>
                          </div></th>
                        </tr>
                        <tr>
                          <td colspan="2"><div align="center">
                            <input name="button2" type="submit" class="style10" id="button2" value="Buscar" />
                          </div></td>
                        </tr>
                      </table>
                      </label></td>
                  </tr>
                </table>
              </form>
            </div><!-- busca_vis_pagamentos -->
		  </div><!-- busca_pagamentos -->
            <div id="barra_pagamentos">
			</div><!-- barra_pagamentos -->
            <div id="vis">
              
              <div align="center">
                <?php

 $pag = $_GET['pagina'];

         $pesquisar = $_REQUEST['pesquisar'];
		 $id = $_GET['id'];
				$data1 = $_POST['data1'];
				$data1 = $_POST['data1'];$data1 = preg_replace("/(\d+)\/(\d+)\/(\d+)/", "$3-$2-$1", $data1);
				$data2 = $_POST['data2'];
				$data2 = $_POST['data2'];$data2 = preg_replace("/(\d+)\/(\d+)\/(\d+)/", "$3-$2-$1", $data2);
				
		if( !empty($_POST['data1']) ) $where_data = "AND dtprocesso BETWEEN '$data1' AND '$data2'";
		if( isset( $_POST['pesquisar[]'] ) && count( $_POST['pesquisar[]'] ) > 0 ) {
    $where_data .= ' AND ' . sprintf( '`situacao` IN ("%s")', implode( '", ', $data ) );
}
		
		$sql_clientes = mysql_query("SELECT
 cadastro.id,
 cadastro.nomecliente,
 cadastro.cpfcliente,
 cadastro.dtprocesso,
 cadastro.telefonecliente,
 cadastro.celularcliente,
 pagamentos.id_processo,
 pagamentos.valor,
 pagamentos.data,
 pagamentos.situacao
 FROM cadastro
 LEFT JOIN pagamentos ON cadastro.id = pagamentos.id_processo WHERE cadastro.nomecliente LIKE '%".$pesquisar."%' $where_data  ORDER BY cadastro.nomecliente")or die(mysql_error());
		
		

$c = 2;
$cores = array("#CCCCCC","#FFFFFF");

$contar = mysql_num_rows($sql_clientes);
if($contar <= '0'){
	echo "ERROR";
}else{
	while($linha = mysql_fetch_assoc($sql_clientes))
	{
		$index = $c % 2;
		$c++;
		$cor = $cores[$index];


		$tabela = '<table width="100%" border="0" cellspacing="0" cellpadding="5">';
		$tabela .= '<tr bgcolor="'.$cor.'">';
		$tabela .= '<td width="2%"><div align="center" title=""><img src="imagens/icones/news.png" border="0" align="absbottom"></div></td>';
		$tabela .= '<td width="16%"><div align="left">'.$linha['nomecliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['cpfcliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['telefonecliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['celularcliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$data = date('d/m/Y', strtotime($linha['dtprocesso'])).'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$data = date('d/m/Y', strtotime($linha['data'])).'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['situacao'].'</div></td>';
		$tabela .= '<td width="8%"><div align="right">'.' R$ ' . number_format($linha['valor'], 2, ',', '.').'</div></td>';
		$tabela .= '<td width="2%"><div align="center"><a href="index2.php?pg=result&id='.$linha['id'].'"><img src="imagens/icones/vis.gif" border="0" align="absbottom"></a></div></td>';
		$tabela .= '</tr>';
		$tabela .= '</table>';

		echo $tabela;
		
		$valor_total += $linha['valor'];
	}

}
	

?>
                <span class="style16"><?php echo '<p><strong>Valor total:</strong> R$ '.number_format($valor_total, 2, ',', '.').'</p>'; ?></span></div>
          </div>
</div><!-- vis -->
</div><!-- conteudo_resulte -->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido!

 

<?php
function data2date( $data ){
	return preg_replace( "/(\d+)\/(\d+)\/(\d+)/", "$3-$2-$1", $data );
}
	$pag = $_GET['pagina'];
	$id = $_GET['id'];
	
	
	$data_inicio = data2date( $_POST['data1'] );
	$data_fim = data2date( $_POST['data2'] );

	$arr_where = Array();
	
	if( !empty( $_POST['pesquisar'] ) ) $arr_where[] = " cadastro.nomecliente LIKE '%{$_POST['pesquisar']}%'";
	if( !empty( $_POST['data1'] ) ) $arr_where[] = " dtprocesso BETWEEN '{$data_inicio}' AND '{$data_fim}'";
	if( !empty( $_POST['pago'] ) ) $arr_where[] = " situacao = '{$_POST['pago']}'";
	if( !empty( $_POST['pendente'] ) ) $arr_where[] = " situacao = '{$_POST['pendente']}'";
	
	$where = '';
	if( isset( $arr_where[0] ) )
	{
		$where = ' WHERE '.implode( ' AND ', $arr_where );
	}

	$sql = "SELECT
		cadastro.id,
		cadastro.nomecliente,
		cadastro.cpfcliente,
		cadastro.dtprocesso,
		cadastro.telefonecliente,
		cadastro.celularcliente,
		pagamentos.id_processo,
		pagamentos.valor,
		pagamentos.data,
		pagamentos.situacao
		FROM cadastro
		LEFT JOIN pagamentos ON cadastro.id = pagamentos.id_processo 
		{$where} 
		ORDER BY cadastro.nomecliente";
	$sql_clientes = mysql_query( $sql )or die(mysql_error());
		
	//echo $sql;
		

$c = 2;
$cores = array("#CCCCCC","#FFFFFF");

$contar = mysql_num_rows($sql_clientes);
if($contar <= '0'){
	echo "ERROR";
}else{
	while($linha = mysql_fetch_assoc($sql_clientes))
	{
		$index = $c % 2;
		$c++;
		$cor = $cores[$index];


		$tabela = '<table width="100%" border="0" cellspacing="0" cellpadding="5">';
		$tabela .= '<tr bgcolor="'.$cor.'">';
		$tabela .= '<td width="2%"><div align="center" title=""><img src="imagens/icones/news.png" border="0" align="absbottom"></div></td>';
		$tabela .= '<td width="16%"><div align="left">'.$linha['nomecliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['cpfcliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['telefonecliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['celularcliente'].'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$data = date('d/m/Y', strtotime($linha['dtprocesso'])).'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$data = date('d/m/Y', strtotime($linha['data'])).'</div></td>';
		$tabela .= '<td width="8%"><div align="center">'.$linha['situacao'].'</div></td>';
		$tabela .= '<td width="8%"><div align="right">'.' R$ ' . number_format($linha['valor'], 2, ',', '.').'</div></td>';
		$tabela .= '<td width="2%"><div align="center"><a href="index2.php?pg=result&id='.$linha['id'].'"><img src="imagens/icones/vis.gif" border="0" align="absbottom"></a></div></td>';
		$tabela .= '</tr>';
		$tabela .= '</table>';

		echo $tabela;
		
		$valor_total += $linha['valor'];
	}

}
	

?>
                <span class="style16"><?php echo '<p><strong>Valor total:</strong> R$ '.number_format($valor_total, 2, ',', '.').'</p>'; ?>

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.