Danny89 0 Denunciar post Postado Junho 30, 2014 Boa tarde, estou criando um campo de pesquisa por filtro onde o usuário poderá fazer combinações e com isso retornar um valor Ex: Buscar somente usuarios que possuem curso de ingles, engenharia e moram em SP Tenho esse código, mas n sei como proceder e o que há de errado nele Segue html head> <title>Filtro com HTML e PHP</title> </head> <body> <form method="post" action="filtro.php"> <table cellpadding="10"> <tr> <td rowspan="2">Filtrar por:</td> <td> Estado: <select name="estado"> <option value="TODOS">Todos</option> <option value="MG">MG</option> <option value="RJ">RJ</option> <option value="SP">SP</option> </select> </td> <td> Sexo: <select name="sexo"> <option value="TODOS">Todos</option> <option value="M">Masculino</option> <option value="F">Feminino</option> </select> </td> </tr> <tr> <td>Idade: <input type="text" name="idade" size="5"></td> <td>Formacao: <input type="text" name="formacao"></td> <td><input type="submit" name="filtrar" value="Filtrar"></td> </tr> </table> </form> </body> </html> php $estado = $_POST['estado']; $sexo = $_POST['sexo']; $formacao = $_POST['formacao']; $sql = mysql_query('SELECT * FROM candidatos WHERE id = $id'); $result = mysql_fetch_assoc($sql); while ($result = mysql_fetch_assoc($retorno)) { if ($estado != 'TODOS') { $sql .= " AND estado = '$estado' "; } if ($sexo != 'TODOS') { $sql .= " AND sexo = '$sexo' "; } if (!empty($formacao)) { $sql .= " AND formacao = '$formacao' "; } $query = mysql_query($sql); } ?> Se puderem me dar uma luz eu agradeço Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Junho 30, 2014 O script retorna alguma msg de erro ?? Compartilhar este post Link para o post Compartilhar em outros sites
Danny89 0 Denunciar post Postado Junho 30, 2014 O script retorna alguma msg de erro ?? Sim Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\recrutamento\filtro.php on line 15 Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\recrutamento\filtro.php on line 16 está setando para essas linhas $result = mysql_fetch_assoc($sql); while ($result = mysql_fetch_assoc($retorno)) Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Junho 30, 2014 Cara, onde está definida a variável $retorno ?? Não seria a $sql? Compartilhar este post Link para o post Compartilhar em outros sites
Danny89 0 Denunciar post Postado Junho 30, 2014 Eu modifiquei, mas continua dando o mesmo erro e apontando pras mesmas linhas $sql = mysql_query('SELECT * FROM candidatos WHERE id = $id'); $result = mysql_fetch_assoc($sql); while ($result = mysql_fetch_assoc($sql)) Compartilhar este post Link para o post Compartilhar em outros sites
TalissonBento 14 Denunciar post Postado Junho 30, 2014 A sql em mysql_query('SELECT * FROM candidatos WHERE id = $id'); não é executada, pois você está usando aspas simples, com isso, o php não irá colocar o valor da variável $id. Mude para aspas duplas " assim mysql_query("SELECT * FROM candidatos WHERE id = $id"); #Ou mysql_query('SELECT * FROM candidatos WHERE id ='. $id); Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Julho 1, 2014 coloque esses if's fora do while. Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Julho 1, 2014 $estado = $_POST['estado']; $---o = $_POST['---o']; $formacao = $_POST['formacao']; $sql = 'SELECT * FROM candidatos WHERE id =' . $id'; if ($estado != 'TODOS') { $sql .= " AND estado = '$estado' "; } if ($---o != 'TODOS') { $sql .= " AND ---o = '$---o' "; } if (!empty($formacao)) { $sql .= " AND formacao = '$formacao' "; } $query = mysql_query($sql); while ($result = mysql_fetch_assoc($query)) { print_r $result; } ?> Acho que é isso. Compartilhar este post Link para o post Compartilhar em outros sites
Danny89 0 Denunciar post Postado Julho 1, 2014 $estado = $_POST['estado']; $---o = $_POST['---o']; $formacao = $_POST['formacao']; $sql = 'SELECT * FROM candidatos WHERE id =' . $id'; if ($estado != 'TODOS') { $sql .= " AND estado = '$estado' "; } if ($---o != 'TODOS') { $sql .= " AND ---o = '$---o' "; } if (!empty($formacao)) { $sql .= " AND formacao = '$formacao' "; } $query = mysql_query($sql); while ($result = mysql_fetch_assoc($query)) { print_r $result; } ?> Agora caiu no seguinte erro Parse error: syntax error, unexpected T_STRING in C:\wamp\www\recrutamento\busca.php on line 15 Nessa linha if ($estado != 'TODOS') { Acho que é isso. Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Julho 1, 2014 Ops, desculpe. Ficou sobrando uma aspa simples depois do $id. Agora sim. $estado = $_POST['estado']; $---o = $_POST['---o']; $formacao = $_POST['formacao']; $sql = 'SELECT * FROM candidatos WHERE id =' . $id; if ($estado != 'TODOS') { $sql .= " AND estado = '$estado' "; } if ($---o != 'TODOS') { $sql .= " AND ---o = '$---o' "; } if (!empty($formacao)) { $sql .= " AND formacao = '$formacao' "; } $query = mysql_query($sql); while ($result = mysql_fetch_assoc($query)) { print_r $result; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Danny89 0 Denunciar post Postado Julho 1, 2014 Ops, desculpe. Ficou sobrando uma aspa simples depois do $id. Agora sim. $estado = $_POST['estado']; $---o = $_POST['---o']; $formacao = $_POST['formacao']; $sql = 'SELECT * FROM candidatos WHERE id =' . $id; if ($estado != 'TODOS') { $sql .= " AND estado = '$estado' "; } if ($---o != 'TODOS') { $sql .= " AND ---o = '$---o' "; } if (!empty($formacao)) { $sql .= " AND formacao = '$formacao' "; } $query = mysql_query($sql); while ($result = mysql_fetch_assoc($query)) { print_r $result; } ?> Ops, desculpe. Ficou sobrando uma aspa simples depois do $id. Agora sim. $estado = $_POST['estado']; $---o = $_POST['---o']; $formacao = $_POST['formacao']; $sql = 'SELECT * FROM candidatos WHERE id =' . $id; if ($estado != 'TODOS') { $sql .= " AND estado = '$estado' "; } if ($---o != 'TODOS') { $sql .= " AND ---o = '$---o' "; } if (!empty($formacao)) { $sql .= " AND formacao = '$formacao' "; } $query = mysql_query($sql); while ($result = mysql_fetch_assoc($query)) { print_r $result; } ?> Estranho, agora aponta erro de sintaxe nessa linha aqui print_r $result; Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Julho 1, 2014 Estranho. Rodei o script agora e, aparentemente, funcionou. http://ideone.com/fJ6Zhp Compartilhar este post Link para o post Compartilhar em outros sites
Danny89 0 Denunciar post Postado Julho 1, 2014 Você mudou algo em relação ao último código que postou? O meu está assim <?php include "conection.php"; $banco = "recrutamento"; $connection = mysql_connect($host, $user, $pass) or die(mysql_error()); mysql_select_db($banco) or die(mysql_error()); $estado = $_POST['estado']; $sexo = $_POST['sexo']; $formacao = $_POST['formacao']; $sql = 'SELECT * FROM candidatos WHERE id =' . $id; if ($estado != 'TODOS') { $sql .= " AND estado = '$estado' "; } if ($sexo != 'TODOS') { $sql .= " AND sexo = '$sexo' "; } if (!empty($formacao)) { $sql .= " AND formacao = '$formacao' "; } $query = mysql_query($sql); while ($result = mysql_fetch_assoc($query)) { print_r $result; } ?> Eu poderia substituir esse print_r $result; por alguma outra coisa? Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Julho 1, 2014 Eu só não inclui as linhas de conexão com o banco, já que não tenho como conectar. :P Pode substituir por um var_dump($result); O $result é um array, então um echo não vai mostrar nada. Compartilhar este post Link para o post Compartilhar em outros sites
Danny89 0 Denunciar post Postado Julho 1, 2014 Fiz essa substituição, mas antes de eu efetuar a pesquisa ele já aponta o erro Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\recrutamento\busca.php on line 27 acima dos campos e quando efetuo alguma busca ele cai naqueles mesmos erros Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\recrutamento\filtro.php on line 15 e outro na linha 14 Se eu deixar print_r $result; ele sequer consegue acessar o busca.php Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Julho 1, 2014 Muda pra mysql_fetch_array($query). Compartilhar este post Link para o post Compartilhar em outros sites
Danny89 0 Denunciar post Postado Julho 1, 2014 Deu no mesmo :( Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Julho 1, 2014 Faça o seguinte: <?php include "conection.php"; $banco = "recrutamento"; $connection = mysql_connect($host, $user, $pass) or die(mysql_error()); mysql_select_db($banco) or die(mysql_error()); $estado = $_POST['estado']; $---o = $_POST['---o']; $formacao = $_POST['formacao']; $sql = 'SELECT * FROM candidatos WHERE id =' . $id; if ($estado != 'TODOS') { $sql .= " AND estado = '$estado' "; } if ($---o != 'TODOS') { $sql .= " AND ---o = '$---o' "; } if (!empty($formacao)) { $sql .= " AND formacao = '$formacao' "; } echo $sql; $query = mysql_query($sql); while ($result = mysql_fetch_assoc($query)) { var_dump($result); } ?> Coloquei um echo no $sql. Copie o resultado e rode direto no banco de dados, pra ver o resultado. Compartilhar este post Link para o post Compartilhar em outros sites
Danny89 0 Denunciar post Postado Julho 1, 2014 Deu isso aqui consulta SQL: Documentação SELECT * FROM candidatos WHERE id = AND estado = '' AND sexo = '' LIMIT 0 , 30 Mensagens do MySQL : Documentação #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND estado = '' AND sexo = '' LIMIT 0, 30' at line 1 E no sistema aparece esse: mysql_fetch_assoc(): supplied argument is not a valid MySQL Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Schumacher 3 Denunciar post Postado Julho 1, 2014 ali onde tem três --- você subsitituiu por s e x certo? ah mais uma coisa, parece que ele não está inserindo os valores das variáveis na consulta... tenta, só pra eliminar esta possibilidade o seguinte: if ($estado != 'TODOS') {$sql .= " AND estado = 'MG' ";} deixa só esta linha e roda o script... obs: supondo que você tenha algum registro no banco de dados com MG né? obs2: o campo formação é de texto livre, quando você define que seja = ao que está no banco de dados fica complicado o usuário acertar exatamente... minha sugestão é você criar mais tabelas: estados, formação e sexo, no html você faz um while e lista as opções de formação, sexo e estado. Assim se futuramente você quiser adicionar mais estados ou formações, não precisa editar o arquivo html, só o php... obs3: mas caso você usar como texto aberto mesmo, faz assim: http://blog.thiagobelem.net/busca-no-mysql-usando-palavra-chave/ abraço Compartilhar este post Link para o post Compartilhar em outros sites