Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Saudações a todos!
eu montei uma interface de consulta, por onde o usuário faz tambem alteração e exclusão dos registros na mesma página. Montei um formuário com botões para pesquisa, modificar e exclusão, usando Switch. E os resultados são paginados.
Até ai tudo bem.
Só que a paginação não funciona, só vem o resultado da primeira página. Se manda exibir o da página seguinte, os registros vem em branco.
Fiz os testes e descobri duas coisas:
1 - Se uso a Query "SELECT * FROM cliente WHERE name LIKE '%$name%'", dá pau. Mas se eu uso "=" no lugar do 'LIKE', funciona. Porém eu perco o uso do "%" nas consultas, que pra mim é essencial.
2 - Se essa query fica dentro de uma "SWITCH", os resultados da página seguinte vem em branco tbm. Se tira o "SWITCH" fora e deixa o formulário como se tivesse apenas um comando "Pesquisar", ai funciona.
Alguem sabe como posso reescrever meu código para que a paginação funcione legal, sendo que eu possa usar vários comandos no formulário e as pesquisas usando o caractere "%"!?
Qualquer ajuda é bem vinda!
Abraço a todos!!!
$db = mysql_select_db($database);//Variáveis$name=$_POST['name'];$currentPage = $_SERVER["PHP_SELF"];function get_post_action($name){ $params = func_get_args(); foreach ($params as $name) { if (isset($_POST[$name])) { return $name; } }}$maxRows = 5;$pageNum = 0;if (isset($_GET['pageNum'])) { $pageNum_Recordset1 = $_GET['pageNum'];}$startRow = $pageNum * $maxRows;switch (get_post_action ('pesquisa', 'alterar', 'excluir')) {case 'pesquisa':$search = mysql_query("SELECT * FROM cliente WHERE name LIKE '%$name%'" LIMIT $startRow, $maxRows");$total = mysql_num_rows($search);$l = mysql_fetch_assoc($search);if (isset($_GET['totalRows'])) { $totalRows_Recordset1 = $_GET['totalRows'];} else { $all = $search; $totalRows = mysql_num_rows($all);}$totalPages = ceil($totalRows/$maxRows)-1;$queryString = "";if (!empty($_SERVER['QUERY_STRING'])) { $params = explode("&", $_SERVER['QUERY_STRING']); $newParams = array(); foreach ($params as $param) { if (stristr($param, "pageNum") == false && stristr($param, "totalRows") == false) { array_push($newParams, $param); } } if (count($newParams) != 0) { $queryString = "&" . htmlentities(implode("&", $newParams)); }}$queryString = sprintf("&totalRows=%d%s", $totalRows, $queryString);//mysql_free_result($search);break;case 'alterar':$update = mysql_query("UPDATE cliente SET name = '$name', id = '$id', cnpj = '$cnpj', ie = '$ie', adress = '$adress', bairro = '$bairro', city = '$city', cep = '$cep', tel = '$tel', fantasia = '$fantasia', data = '$data', obs = '$obs' WHERE id = '$id'");echo 'Alterado!!!';break;case 'excluir':$update = mysql_query("DELETE FROM cliente WHERE id = '$id'");echo 'Excluido!!!';break;default:echo 'nada!!!';}?><form id="form1" name="form1" method="post" action="<?php $currentPage ?>"> <input name="name" type="text" class="form" id="name" size="62" value="<?php echo $l['name']; ?>"/> <input name="id" type="text" class="form" id="id" size="5" value="<?php echo $l['id']; ?>"/> <input name="cnpj" type="text" class="form" id="cnpj" value="<?php echo $l['cnpj']; ?>" size="28" maxlength="18" /> <input name="ie" type="text" class="form" id="ie" size="25" maxlength="15" value="<?php echo $l['ie']; ?>"/> <input name="adress" type="text" class="form_2" id="adress" size="50" value="<?php echo $l['adress']; ?>"/> <input name="bairro" type="text" class="form_2" id="bairro" size="25" value="<?php echo $l['bairro']; ?>"/> <input name="city" type="text" class="form_2" id="city" size="20" value="<?php echo $l['city']; ?>"/> <input name="cep" type="text" class="form_2" id="cep" size="15" maxlength="10" value="<?php echo $l['cep']; ?>"/> <input name="tel" type="text" class="form_2" id="tel" size="25" value="<?php echo $l['tel']; ?>"/> <input name="fantasia" type="text" class="form_2" id="fantasia" size="47" value="<?php echo $l['fantasia']; ?>"/> <input name="data" type="text" class="form_2" id="data" size="25" value="<?php echo $l['data']; ?>"/> Item <?php echo ($startRow + 1) ?> de <?php echo $totalRows ?> <br /> <?php if ($pageNum > 0) { // Show if not first page ?> <a href="<?php printf("%s?pageNum=%d%s", $currentPage, 0, $queryString); ?>"><< </a> <?php } // Show if not first page ?><?php if ($pageNum > 0) { // Show if not first page ?> <a href="<?php printf("%s?pageNum=%d%s", $currentPage, max(0, $pageNum - 1), $queryString); ?>">Anterior</a> <?php } // Show if not first page ?><?php if ($pageNum < $totalPages) { // Show if not last page ?> <a href="<?php printf("%s?pageNum=%d%s", $currentPage, min($totalPages, $pageNum + 1), $queryString); ?>">Próximo</a> <?php } // Show if not last page ?><?php if ($pageNum < $totalPages) { // Show if not last page ?> <a href="<?php printf("%s?pageNum=%d%s", $currentPage, $totalPages, $queryString); ?>"> >></a> <?php } // Show if not last page ?> <input name="pesquisa" type="submit" class="botao" id="pesquisa" value="Pesquisar Empresa" /> <input name="Limpar" type="reset" class="botao" id="reset" value="Limpar Campos" /> <input name="alterar" type="submit" class="botao" id="alterar" value="Alterar Empresa" /> <input name="excluir" type="submit" class="botao" id="excluir" value="Excluir Empresa" /></form>Olá David,
ontem mesmo eu dei uma olhada em outros tópicos, e consegui entender bastante coisa sobre paginação de resultados.
Reescrevi meu código de paginação seguindo alguns conselhos que achei por aqui mesmo no forum, e ficou bem mais prático do que os códigos que usei anteriormente(eu tinha pegado aqueles códigos de paginação do Dreamweaver e fui alterando...mas ele é muito nada a ver.).
E como eu estou usando Switch no meu Form pra alocar mais comandos, sempre que eu mandava pesquisar e tentava passar pra próxima página, ele zerava meus resultados. Achei que era por causa do link que passa pra próxima página, então adicionei a váriavel junto ao link pra poder levar o resultado junto a página seguinte.
Mas depois vi que sempre que eu clicava pra passar a pagina, devido ao uso do SWITCH(seguido de break), ele zerava meus resultados de qualquer jeito.
Então foi questão de realocar melhor minhas váriaveis fora do SWITCH, ai resolveu.
Mudando tudo, o código agora ficou assim...só pra comparar com o código que postei antes.
"Pesquisa"
<?php$db = mysql_select_db($database);$currentPage = $_SERVER["PHP_SELF"];function get_post_action($name){ $params = func_get_args(); foreach ($params as $name) { if (isset($_POST[$name])) { return $name; } }}$re = mysql_query("SELECT * FROM cliente WHERE name LIKE '$name'");$total = mysql_num_rows($re);$pagina = 0;if(isset($_GET["pagina"])) { $pagina = $_GET["pagina"];}$limite = 1;$paginas = ceil($total / $limite)-1;$inicio = $pagina * $limite; $sql = mysql_query("SELECT * FROM cliente WHERE name LIKE '$name' LIMIT $inicio, $limite"); $conta = mysql_num_rows($sql);$l = mysql_fetch_array($sql);switch (get_post_action ('pesquisa', 'alterar', 'excluir')) { case 'pesquisa': $name=$_POST['name']; $cnpj=$_POST['cnpj']; $ie=$_POST['ie']; $adress=$_POST['adress']; $bairro=$_POST['bairro']; $city=$_POST['city']; $cep=$_POST['cep']; $tel=$_POST['tel']; $fantasia=$_POST['fantasia']; $obs=$_POST['obs']; case 'alterar': $update = mysql_query("UPDATE cliente SET name = '$name', id = '$id', cnpj = '$cnpj', ie = '$ie', adress = '$adress', bairro = '$bairro', city = '$city', cep = '$cep', tel = '$tel', fantasia = '$fantasia', data = '$data', obs = '$obs' WHERE id = '$id'"); echo 'Alterado!!!'; break; case 'excluir': $update = mysql_query("DELETE FROM cliente WHERE id = '$id'"); echo 'Excluido!!!'; break; default; //echo 'nada!!!';}?>
"Paginação"
Item <?php echo ($inicio + 1) ?> de <?php echo $total ?> <br /> <?php if ($pagina > 0) { // Show if not first page $menos = 0; $url = $_SERVER["PHP_SELF"]."?pagina=".$menos."&name=".$name; echo "<a href=\"$url\"><<</a>"; }?><?php if ($pagina > 0) { // Show if not first page $menos = $pagina - 1; $url = $_SERVER["PHP_SELF"]."?pagina=".$menos."&name=".$name; echo "<a href=\"$url\">Anterior</a>"; }?><?php if ($pagina < $paginas) { // Show if not last page $menos = $pagina + 1; $url = $_SERVER["PHP_SELF"]."?pagina=".$menos."&name=".$name; echo "<a href=\"$url\">Próximo</a>"; }?><?php if ($pagina < $paginas) { // Show if not last page $menos = $paginas; $url = $_SERVER["PHP_SELF"]."?pagina=".$menos."&name=".$name; echo "<a href=\"$url\">>></a>"; }?>
Agora que funcionou filé....a duvida que ficou foi:
Qual a melhor maneira de se trabalhar com dados vindos de forms!?
melhor usar $POST, $GET ou $REQUEST!?
não consegui ainda ver diferença neles....mas acredito que deve ter uma forma correta de associar elas as nossas variáveis...
Um Abraço!!!
Brother... leia isso!!!!
http://forum.imasters.com.br/index.php?showtopic=123652
http://www.master.iag.usp.br/manuais/php/b...riables.request
qualquer coisa posta ae!!!
DAN... tudo bem?
hoje estou meio sem tempo para testar seu script.. mas enquanto isso, procuro no fórum sobre paginação tem diversas coisas boas aqui.. okay
veja se isso te ajuda..
http://forum.imasters.com.br/index.php?showtopic=224300
ai qualquer coisa posta, que vamos tentar ajuda - lo http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif