bobnaldo 0 Denunciar post Postado Fevereiro 28, 2010 Olá pessoal, sou iniciante e acho que estou com um problema besta mas que não consigo solucionar. criei um form de consulta onde seleciono o tipo de consulta em um menu/list "tipobusca" e descrevo o termo em um textfield "termobusca" como podemos observar abaixo: form.html <form action="relatorio_consulta.php" method="post" > <p><strong>Escolha uma opção:</strong><br /> <select name="tipobusca"> <option selected="selected"></option> <option value="nome">Nome</option> <option value="matricula">Matricula</option> <option value="identidade">Identidade</option> <option value="cpf">CPF</option> </select> </p> <p> <strong>Digite o termo da consulta:</strong><br /> <input name="termobusca" type="text" class="textfield" size="31" /> </p> <p></p> <p align="justify"><input name="consultar" type="submit" class="button" id="consultar" value="Consultar" /><input type="reset" class="button" value="Limpar" /></p> </form> Os dados são eviados para relatorio_consulta.php como podemos também observar a seguir: relatorio_consulta.php <? // Fazemos o include do arquivo com as config do banco de dados include "mysqlconfig.php"; // Executa a cláusula SQL include "mysqllistar.php"; //Executa a consulta $tipobusca = $_POST['tipobusca']; $termobusca = trim($_POST['termobusca']); if (!$tipobusca || !$termobusca) { echo 'Você não preencheu todos os campos. Por favor tente novamente.'; exit; } $tipobusca = addslashes($tipobusca); $termobusca = addslashes($termobusca); $sql = "select * from tb_info where ".$tipobusca." like '%".$termobusca."%' ORDER BY data_sys DESC"; $resultado = mysqllistar($conect,$sql); //#Número de registros paginados por página $registros_pagina = "1"; //#Resgatamos a página que estiver sendo acessada pela paginação $lista = (int)$_GET["lista"]; //#Se for a página inicial da consulta, a variável $lista será nula if(!$lista) { $pc = "1"; } //#Caso contrário, declaramos o valor atual da variável $lista else { $pc = $lista; } $inicio = $pc - 1; $inicio = $inicio * $registros_pagina; //#Limitamos a nossa consulta do MySQL para exibir apenas a quantidade máxima configurada mais acima $resultado = mysql_query("$sql LIMIT $inicio, $registros_pagina"); //#Vamos agora consultar a quantidade total de registros $todos = mysql_query("$sql"); //#Armazenamos a quantidade total de registros $tr = mysql_num_rows($todos); //#Armazenamos o resultado da quantidade total de registros pela quantidade de registros por página $tp = $tr / $registros_pagina; $cont = 0; // Exibe o resultado da nossa consulta #Se não houverem registros a se exibir, é acusado o retorno abaixo if(mysql_num_rows($resultado) < 1) { echo "Nenhum registro encontrado"; } //#Caso contrário é exibido o resultado da consulta else { //#Exibimos o resultado dos registros encontrados na consulta while($row = mysql_fetch_array($resultado)) { echo "<p align=center>Cadastro Aluno</p>"; echo "<p align=justify> </p>"; echo "<p align=justify>Nome: ".$row['nome']."</p>"; echo "<p align=justify>Matrícula: ".$row['matricula']."</p>"; echo "<p align=justify>Identidade: ".$row['identidade']."</p>"; echo "<p align=justify>CPF: ".$row['cpf']."</p>"; echo "<p align=justify>Nascimento: ".$row['nascimento']."</p>"; echo "<p align=justify>Curso: ".$row['curso']."</p>"; echo "<p align=justify>Período: ".$row['periodo']."</p>"; echo "<p align=justify>Endereço: ".$row['endereco']."</p>"; $cont = $cont + 1; } ?> </p> <p align="center"> <? //#E por fim montamos os links da paginação $tp = ceil($tp); if($pc>1) { $anterior = $pc - 1; echo "<a href=\"?lista=$anterior\">[Anterior]</a> "; } for($i=$pc-5;$i<$pc;$i++) { if($i<=0) { } else { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; } } for($i=$pc;$i<=$pc+5;$i++) { if($i==$tp) { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; break; } else { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; if($i==$pc+5 && $tp>$pc+5) { echo " ... <a href=\"?lista=$tp\">[$tp]</a>"; } } } if($pc<$tp) { $proxima = $pc + 1; echo " <a href=\"?lista=$proxima\">[Próxima]</a>"; } } ?> Bom, até aí tudo bem, porém quando eu clico no link para passar para a página seguinte ele retorna a menssagem: Você não preencheu todos os campos. Por favor tente novamente. Como faço para que o valor de $_POST transforme-se em um valor fixo? Já fiz um teste com SELECT * tb_info e a paginação funcionou perfeitamente. O problema tá na condição if (!$tipobusca || !$termobusca)... Por favor, alguém pode me ajudar? Fico muito agradecido pois já quebrei a cabeça e nào consegui resolver isto... Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 28, 2010 O que você espera dessa condição? if (!$tipobusca || !$termobusca)Pelo que vejo ela nunca retornará verdadeiro nessa situação.... Compartilhar este post Link para o post Compartilhar em outros sites
Shrek-BH 0 Denunciar post Postado Fevereiro 28, 2010 Ao invés de fazer assim: if (!$tipobusca || !$termobusca) Faça assim: if ($tipobusca=='' || $termobusca=='') Compartilhar este post Link para o post Compartilhar em outros sites
bobnaldo 0 Denunciar post Postado Fevereiro 28, 2010 O que você espera dessa condição? if (!$tipobusca || !$termobusca)Pelo que vejo ela nunca retornará verdadeiro nessa situação.... Olá lucaswxp, bem espero com essa condição que o usuário preencha as duas caixas de textos ;). Outra coisa, quando eu retiro esta condição ele retorna erro na SQL. Coloquei os includes abaixo... Obrigado irmãozinho. Ao invés de fazer assim: if (!$tipobusca || !$termobusca) Faça assim: if ($tipobusca=='' || $termobusca=='') Continua dando o mesmo erro amigão. Valeu Shrek-BH ;)... Compartilhar este post Link para o post Compartilhar em outros sites
bobnaldo 0 Denunciar post Postado Fevereiro 28, 2010 mysqlconfig.php <?php // Nesse arquivo passamos as configurações para nosso servidor MySQL // Configuração endereço MySQL $hostname ="meubanco.com"; // Configuração do nome da base de dados MySQL $database="banco"; // Configuração do nome do usuário de acesso a base de dados MySQL $usuario="usuario"; // Configuração da senha para acesso a base de dados MySQL $senha="senha"; // Conectamos ao nosso servidor MySQL if(!($conect = mysql_connect($hostname,$usuario,$senha))) { echo "Erro ao conectar ao MySQL."; exit; } // Selecionamos nossa base de dados MySQL if(!($con = mysql_select_db($database,$conect))) { echo "Erro ao selecionar ao MySQL."; exit; } ?> mysqllistar.php <?php /* empty() Retorna FALSE se var é um valor não nulo ou não zero. Em outras palavras, "", 0, "0", NULL, FALSE, array(), var $var;, e objetos sem propriedades são considerados como valores vazios. TRUE será retornado se var é vazio. empty() é o oposto de (boolean) var, com exceção de não gerar um alerta (warning) se a variável não existir. */ // Função com os parametros recebidos onde // O $conect é nosso Ponteiro // O $sql é nossa SQL de consulta // O $falha é para sabermos se função vai listar ou não (0=não, 1=sim) function mysqllistar($conect,$sql,$falha = 1) { if(empty($sql) OR !($conect)) { return 0; //Erro com a conexão e ou consulta SQL } if (!($res = @mysql_query($sql,$conect))) { if($falha) echo "Erro na SQL."; exit; } return $res; } ?> <form action="relatorio_consulta.php" method="post" > <p><strong>Escolha uma opção:</strong><br /> <select name="tipobusca"> <option selected="selected"></option> <option value="nome">Nome</option> <option value="matricula">Matricula</option> <option value="identidade">Identidade</option> <option value="cpf">CPF</option> </select> </p> <p> <strong>Digite o termo da consulta:</strong><br /> <input name="termobusca" type="text" class="textfield" size="31" /> </p> <p></p> <p align="justify"><input name="consultar" type="submit" class="button" id="consultar" value="Consultar" /><input type="reset" class="button" value="Limpar" /></p> </form> <? // Fazemos o include do arquivo com as config do banco de dados include "mysqlconfig.php"; // Executa a cláusula SQL include "mysqllistar.php"; //Executa a consulta $tipobusca = $_POST['tipobusca']; $termobusca = trim($_POST['termobusca']); if (!$tipobusca || !$termobusca) { echo 'Você não preencheu todos os campos. Por favor tente novamente.'; exit; } $tipobusca = addslashes($tipobusca); $termobusca = addslashes($termobusca); $sql = "select * from tb_ocorrencia where ".$tipobusca." like '%".$termobusca."%' ORDER BY data_sys DESC"; $resultado = mysqllistar($conect,$sql); //#Número de registros paginados por página $registros_pagina = "1"; //#Resgatamos a página que estiver sendo acessada pela paginação $lista = (int)$_GET["lista"]; //#Se for a página inicial da consulta, a variável $lista será nula if(!$lista) { $pc = "1"; } //#Caso contrário, declaramos o valor atual da variável $lista else { $pc = $lista; } $inicio = $pc - 1; $inicio = $inicio * $registros_pagina; //#Limitamos a nossa consulta do MySQL para exibir apenas a quantidade máxima configurada mais acima $resultado = mysql_query("$sql LIMIT $inicio, $registros_pagina"); //#Vamos agora consultar a quantidade total de registros $todos = mysql_query("$sql"); //#Armazenamos a quantidade total de registros $tr = mysql_num_rows($todos); //#Armazenamos o resultado da quantidade total de registros pela quantidade de registros por página $tp = $tr / $registros_pagina; $cont = 0; // Exibe o resultado da nossa consulta #Se não houverem registros a se exibir, é acusado o retorno abaixo if(mysql_num_rows($resultado) < 1) { echo "Nenhum registro encontrado"; } //#Caso contrário é exibido o resultado da consulta else { //#Exibimos o resultado dos registros encontrados na consulta while($row = mysql_fetch_array($resultado)) { echo "<p align=center>Exemplo cadastro</p>"; echo "<p align=justify>Nome: ".$row['nome']."</p>"; echo "<p align=justify>Matrícula: ".$row['matricula']."</p>"; echo "<p align=justify>Identidade: ".$row['identidade']."</p>"; echo "<p align=justify>CPF: ".$row['cpf']."</p>"; echo "<p align=justify> </p>"; $cont = $cont + 1; } ?> </p> <p align="center"> <? //#E por fim montamos os links da paginação $tp = ceil($tp); if($pc>1) { $anterior = $pc - 1; echo "<a href=\"?lista=$anterior\">[Anterior]</a> "; } for($i=$pc-5;$i<$pc;$i++) { if($i<=0) { } else { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; } } for($i=$pc;$i<=$pc+5;$i++) { if($i==$tp) { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; break; } else { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; if($i==$pc+5 && $tp>$pc+5) { echo " ... <a href=\"?lista=$tp\">[$tp]</a>"; } } } if($pc<$tp) { $proxima = $pc + 1; echo " <a href=\"?lista=$proxima\">[Próxima]</a>"; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
bobnaldo 0 Denunciar post Postado Fevereiro 28, 2010 O que você espera dessa condição? if (!$tipobusca || !$termobusca)Pelo que vejo ela nunca retornará verdadeiro nessa situação.... Outra coisa Lucas, acho que tens razão, a condição sempre vai retornar falso. Tem como enviar as variáveis sem ser por $_POST? Ou fazer essa condição na tela do FORM e enviar por POST mesmo só que sem as condições? Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 28, 2010 Tem como enviar as variáveis sem ser por $_POST? Ou fazer essa condição na tela do FORM e enviar por POST mesmo só que sem as condições?Você poderia com javascript... Conteudo, parece ser apenas erro de logica.Para verificar se está vazio, faça assim: if (empty($tipobusca) || empty($termobusca)) echo 'Está vazio'; Se der erro no SQL, poste o erro, que aí ja será outra coisa.... Compartilhar este post Link para o post Compartilhar em outros sites
bobnaldo 0 Denunciar post Postado Fevereiro 28, 2010 Tem como enviar as variáveis sem ser por $_POST? Ou fazer essa condição na tela do FORM e enviar por POST mesmo só que sem as condições?Você poderia com javascript... Conteudo, parece ser apenas erro de logica.Para verificar se está vazio, faça assim: if (empty($tipobusca) || empty($termobusca)) echo 'Está vazio'; Se der erro no SQL, poste o erro, que aí ja será outra coisa.... Com a mudança o retorno é o seguinte: Está vazioErro na SQL. O problema é na hora de paginar, pois ele busca a variável e ela tá vazia entendeste. Por isso tá dando essa bronca. A primeira página aparece normalmente e com a quantidade de páginas correspondente a procura. Vou montar o exemplo aqui e colocar o link já, já para você ver... Compartilhar este post Link para o post Compartilhar em outros sites
bobnaldo 0 Denunciar post Postado Fevereiro 28, 2010 lucas ou alguém pode me ajudar?testem no link e está para ver o erro que tá dando... procurem por turno "tarde" http://www.crfjp.com.br/consulta_teste.php Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Março 1, 2010 Hmm. Não tenho certeza se entendi o problema, mas parece que você terá que utilizar GET ao invés de POST. Pois você precisa manter as informações entre as páginas. Tente mudar pra GET.... Compartilhar este post Link para o post Compartilhar em outros sites
bobnaldo 0 Denunciar post Postado Março 1, 2010 Hmm. Não tenho certeza se entendi o problema, mas parece que você terá que utilizar GET ao invés de POST. Pois você precisa manter as informações entre as páginas. Tente mudar pra GET.... Refiz isto e o problema persiste :(... Será que tem como enviar estes dados para uma página oculta tipo valida_consulta.php e apresentar na página relatorio_teste.php apenas as variáveis com os valores digitados na página de consulta_teste.php? Compartilhar este post Link para o post Compartilhar em outros sites
bobnaldo 0 Denunciar post Postado Março 2, 2010 Bem pessoal, consegui resolver o problema depois de quebrar muito a cabeça. O problema era mas simples dio que eu esperava. Bem, para manter o valor fixo das variáveis é preciso criar uma página onde valida a condição, cria uma sessão e em seguida envia a seção para a página onde você quer que apareça o resultado da busca. Simples como deve ser ;). Abraço a todos os que me ajudaram e aos que apenas olharam o tópioc também. ;P... mysqlconfig.php <?php // Nesse arquivo passamos as configurações para nosso servidor MySQL // Configuração endereço MySQL $hostname ="meubanco.com"; // Configuração do nome da base de dados MySQL $database="banco"; // Configuração do nome do usuário de acesso a base de dados MySQL $usuario="usuario"; // Configuração da senha para acesso a base de dados MySQL $senha="senha"; // Conectamos ao nosso servidor MySQL if(!($conect = mysql_connect($hostname,$usuario,$senha))) { echo "Erro ao conectar ao MySQL."; exit; } // Selecionamos nossa base de dados MySQL if(!($con = mysql_select_db($database,$conect))) { echo "Erro ao selecionar ao MySQL."; exit; } ?> mysqllistar.php <?php /* empty() Retorna FALSE se var é um valor não nulo ou não zero. Em outras palavras, "", 0, "0", NULL, FALSE, array(), var $var;, e objetos sem propriedades são considerados como valores vazios. TRUE será retornado se var é vazio. empty() é o oposto de (boolean) var, com exceção de não gerar um alerta (warning) se a variável não existir. */ // Função com os parametros recebidos onde // O $conect é nosso Ponteiro // O $sql é nossa SQL de consulta // O $falha é para sabermos se função vai listar ou não (0=não, 1=sim) function mysqllistar($conect,$sql,$falha = 1) { if(empty($sql) OR !($conect)) { return 0; //Erro com a conexão e ou consulta SQL } if (!($res = @mysql_query($sql,$conect))) { if($falha) echo "Erro na SQL."; exit; } return $res; } ?> consulta_ocorrencia.php <form action="validarConsulta.php" method="post" > <p><strong>Escolha uma opção:</strong><br /> <select name="tipobusca"> <option selected="selected"></option> <option value="nome">Nome</option> <option value="matricula">Matricula</option> <option value="identidade">Identidade</option> <option value="cpf">CPF</option> </select> </p> <p> <strong>Digite o termo da consulta:</strong><br /> <input name="termobusca" type="text" class="textfield" size="31" /> </p> <p></p> <p align="justify"><input name="consultar" type="submit" class="button" id="consultar" value="Consultar" /><input type="reset" class="button" value="Limpar" /></p> </form> ValidarOcorrencia.php <?php $tipobusca = $_POST['tipobusca']; $termobusca = trim($_POST['termobusca']); if (!$tipobusca || !$termobusca) { echo 'Você não preencheu todos os campos. Por favor tente novamente.'; exit; } else { $tipobusca = addslashes($tipobusca); $termobusca = addslashes($termobusca); session_start(); { $_SESSION['tipobusca'] = $tipobusca; $_SESSION['termobusca'] = $termobusca; } header("Location: relatorio_ocorrencia.php"); } ?> relatorio_ocorrencia.php <? // Fazemos o include do arquivo com as config do banco de dados include "mysqlconfig.php"; // Executa a cláusula SQL include "mysqllistar.php"; //Executa a consulta $tipobusca = $_POST['tipobusca']; $termobusca = trim($_POST['termobusca']); if (!$tipobusca || !$termobusca) { echo 'Você não preencheu todos os campos. Por favor tente novamente.'; exit; } $tipobusca = addslashes($tipobusca); $termobusca = addslashes($termobusca); $sql = "select * from tb_ocorrencia where ".$tipobusca." like '%".$termobusca."%' ORDER BY data_sys DESC"; $resultado = mysqllistar($conect,$sql); //#Número de registros paginados por página $registros_pagina = "1"; //#Resgatamos a página que estiver sendo acessada pela paginação $lista = (int)$_GET["lista"]; //#Se for a página inicial da consulta, a variável $lista será nula if(!$lista) { $pc = "1"; } //#Caso contrário, declaramos o valor atual da variável $lista else { $pc = $lista; } $inicio = $pc - 1; $inicio = $inicio * $registros_pagina; //#Limitamos a nossa consulta do MySQL para exibir apenas a quantidade máxima configurada mais acima $resultado = mysql_query("$sql LIMIT $inicio, $registros_pagina"); //#Vamos agora consultar a quantidade total de registros $todos = mysql_query("$sql"); //#Armazenamos a quantidade total de registros $tr = mysql_num_rows($todos); //#Armazenamos o resultado da quantidade total de registros pela quantidade de registros por página $tp = $tr / $registros_pagina; $cont = 0; // Exibe o resultado da nossa consulta #Se não houverem registros a se exibir, é acusado o retorno abaixo if(mysql_num_rows($resultado) < 1) { echo "Nenhum registro encontrado"; } //#Caso contrário é exibido o resultado da consulta else { //#Exibimos o resultado dos registros encontrados na consulta while($row = mysql_fetch_array($resultado)) { echo "<p align=center>Exemplo cadastro</p>"; echo "<p align=justify>Nome: ".$row['nome']."</p>"; echo "<p align=justify>Matrícula: ".$row['matricula']."</p>"; echo "<p align=justify>Identidade: ".$row['identidade']."</p>"; echo "<p align=justify>CPF: ".$row['cpf']."</p>"; echo "<p align=justify> </p>"; $cont = $cont + 1; } ?> </p> <p align="center"> <? //#E por fim montamos os links da paginação $tp = ceil($tp); if($pc>1) { $anterior = $pc - 1; echo "<a href=\"?lista=$anterior\">[Anterior]</a> "; } for($i=$pc-5;$i<$pc;$i++) { if($i<=0) { } else { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; } } for($i=$pc;$i<=$pc+5;$i++) { if($i==$tp) { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; break; } else { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; if($i==$pc+5 && $tp>$pc+5) { echo " ... <a href=\"?lista=$tp\">[$tp]</a>"; } } } if($pc<$tp) { $proxima = $pc + 1; echo " <a href=\"?lista=$proxima\">[Próxima]</a>"; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites