Zouj 0 Denunciar post Postado Outubro 29, 2010 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: 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
Bruno Augusto 417 Denunciar post Postado Outubro 29, 2010 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
Zouj 0 Denunciar post Postado Outubro 29, 2010 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
Bruno Augusto 417 Denunciar post Postado Outubro 29, 2010 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
Zouj 0 Denunciar post Postado Outubro 29, 2010 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
Zouj 0 Denunciar post Postado Outubro 30, 2010 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