johnhey 0 Denunciar post Postado Abril 19, 2016 Boa noite pessoal, tenho uma página que exibe uma galeria de imagens que foi cadastrada em um banco de dados, que está a funcionar.Também adicionei um campo para fazer uma pesquisa em sql pelo nome das imagens, que também está a funcionar.Se existir mais de 40 imagens faço uma paginação que também está a funcionar.Só que, quando abro a paginação na página dois, três em diante e tento fazer uma pesquisa não me mostra nada, já coloquei mysql_error para ver se dava algum erro, mais não devolve nada.Segue o código: <?PHP //Adiciona dados as variaveis no inicio if ($tb == '') { $tabela = "tb_bebes"; } else { $tb = $_GET['tb']; $tabela = $tb; } $exibir = "adotado"; // Criando conexão $link = mysql_connect('host', 'usuário', 'senha'); if (!$link) { die('Não foi possível conectar: ' . mysql_error()); //Exibe o erro por não conectar } //Conexão bem sucedida seleciona o BD $db_selected = mysql_select_db('BD', $link); //Pesquisa por nome ao carregar no botão pesquisa if (isset($_POST['pesquisar'])){ $pesquisa = $_POST['pesquisa']; if ($pesquisa == '') { echo "<script type='text/javascript'>"; echo "alert('Informe um nome para pesquisa!');"; echo "</script>"; } else { $tabela = "tb_bebes"; $exibir = "adotado"; } } //Números de imagens por página $limite = 40; $SQL_COUNT = mysql_query("SELECT COUNT('registo') FROM $tabela"); $SQL_RESUL = ceil(mysql_result($SQL_COUNT, 0) / $limite); $pg = (isset($_GET["pg"])) ? (int)$_GET["pg"] : 1; $inicio = ($pg - 1) * $limite; if ($pesquisa != ''){ //faz a pesquisa pelo nome $SQL= mysql_query("SELECT * FROM tb_bebes WHERE nome like '%$pesquisa%' and $exibir LIKE '1' ORDER BY registo DESC LIMIT $inicio, $limite") or die('não foi possivel conectar '. mysql_error()); } else{ $SQL= mysql_query("SELECT * FROM $tabela WHERE $exibir LIKE '1' ORDER BY registo DESC LIMIT $inicio, $limite"); } while($lh = mysql_fetch_array($SQL)){ $nome= $lh['nome']; $foto= $lh['foto']; if ($tabela!='tb_bebes') { ?> <ul><li><a class="group1" href="imagens/originais/bebes/<?php echo $tabela.'/'.$foto;?>" title="<?php echo ucfirst($nome);?> <?php $caminho = strtolower($nome).'.txt'; print file_get_contents($caminho);?>"><img src="imagens/originais/bebes/<?php echo $tabela.'/'.$foto;?>" width="100" height="80" alt="Foto <?php echo ucfirst($nome);?>" /></a></li></ul> <?php } else { echo "<li><a href='fotos.php?tb=tb_$nome'><img src='imagens/originais/bebes/miniatura/$foto' alt='$nome' title='$nome' ><p><ucfirst($nome)</p></a></li>"; } } ?> </ul> </div> <div id="numpag"> <?php $sqltotal ="select registo from $tabela"; $qrtotal = mysql_query($sqltotal) or die(mysql_error()); $numtotal = mysql_num_rows($qrtotal); $totalpagina = ceil($numtotal/$limite); echo '<a href="?pg=1">Primeira Página</a>'; if($SQL_RESUL > 1 && $pg <=$SQL_RESUL){ for($i=1; $i<=$SQL_RESUL; $i++){ echo "<a href='?pg=$i'/>$i</a>"; } } echo "<a href=\"?pg=$totalpagina\">Última Página</a>"; ?> </div> Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 19, 2016 $_POST['pesquisar'] só existirá na primeira página, você terá que persistir essa informação nas outras páginas também. Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 19, 2016 Desculpe pela ignorância mais como faço? Passei o dia todo a ver o código que já não consigo ver o ; à frente Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 19, 2016 Vamos lá, primeiro, se decida, o nome do campo é pesquisar ou pesquisa? if (isset($_POST['pesquisar'])){ $pesquisa = $_POST['pesquisa']; Segundo, vou assumir que o nome do campo é pesquisar: if ($_REQUEST['pesquisar'] != ''){ $pesquisa = $_REQUEST['pesquisar']; echo '<a href="?pg=1&pesquisar='.$_REQUEST['pesquisar'].'">Primeira Página</a>'; if($SQL_RESUL > 1 && $pg <=$SQL_RESUL){ for($i=1; $i<=$SQL_RESUL; $i++){ echo "<a href='?pg=$i&pesquisar=".$_REQUEST['pesquisar']."'/>$i</a>"; } } echo "<a href=\"?pg=$totalpagina&pesquisar=".$_REQUEST['pesquisar']."\">Última Página</a>"; Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 20, 2016 Desculpe foi apenas um erro de digitação aqui no site o nome é "pesquisa" , mas não funcionou por completo, na primeira página e na página 1 funciona a 100% nas páginas 2 , 3 em diante não funciona. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Abril 20, 2016 Segundo a W3C, pesquisas devem ser feitas através do request method GET. POST deve ser utilizado somente quando houver alterações em um storage. Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 20, 2016 Desculpe foi apenas um erro de digitação aqui no site o nome é "pesquisa" , mas não funcionou por completo, na primeira página e na página 1 funciona a 100% nas páginas 2 , 3 em diante não funciona. Apenas postar "não funcionou" não resolve nada, são necessários dados para serem analisados, por exemplo, como está o código? Os dados estão persistindo na querystring? etc... Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 20, 2016 Já alterei tudo para o method request, mas só funciona directo na pagina.php ou na pagina.php\?pg1, nas restante não funciona a pesquisa.Segue o código. <?PHP //Adiciona dados as variaveis no inicio if ($tb == '') { $tabela = "tb_bebes"; } else { $tb = $_GET['tb']; $tabela = $tb; } $exibir = "adotado"; // Criando conexão $link = mysql_connect('hostingmysql243.amen.pt', 'JHT1_BDReborn', '1981htj'); if (!$link) { die('Não foi possível conectar: ' . mysql_error()); //Exibe o erro por não conectar } //Conexão bem sucedida seleciona o BD $db_selected = mysql_select_db('rebornimaginacoesdebebes_com_pt_bdreborn', $link); //Pesquisa por nome ao carregar no botão pesquisa if ($_REQUEST['pesquisa'] != ''){ $pesquisa = $_REQUEST['pesquisa']; if ($pesquisa == '') { echo "<script type='text/javascript'>"; echo "alert('Informe um nome para pesquisa!');"; echo "</script>"; } else { $tabela = "tb_bebes"; $exibir = "adotado"; } } //Números de imagens por página $limite = 40; $SQL_COUNT = mysql_query("SELECT COUNT('registo') FROM $tabela"); $SQL_RESUL = ceil(mysql_result($SQL_COUNT, 0) / $limite); $pg = (isset($_GET["pg"])) ? (int)$_GET["pg"] : 1; $inicio = ($pg - 1) * $limite; if ($pesquisa != ''){ //faz a pesquisa pelo nome $SQL= mysql_query("SELECT * FROM tb_bebes WHERE nome like '%$pesquisa%' and $exibir LIKE '1' ORDER BY registo DESC LIMIT $inicio, $limite") or die('não foi possivel conectar '. mysql_error()); } else{ $SQL= mysql_query("SELECT * FROM $tabela WHERE $exibir LIKE '1' ORDER BY registo DESC LIMIT $inicio, $limite"); } while($lh = mysql_fetch_array($SQL)){ $nome= $lh['nome']; $foto= $lh['foto']; if ($tabela!='tb_bebes') { ?> <ul><li><a class="group1" href="imagens/originais/bebes/<?php echo $tabela.'/'.$foto;?>" title="<?php echo ucfirst($nome);?> <?php $caminho = strtolower($nome).'.txt'; print file_get_contents($caminho);?>"><img src="imagens/originais/bebes/<?php echo $tabela.'/'.$foto;?>" width="100" height="80" alt="Foto <?php echo ucfirst($nome);?>" /></a></li></ul> <?php } else { echo "<li><a href='fotos.php?tb=tb_$nome'><img src='imagens/originais/bebes/miniatura/$foto' alt='$nome' title='$nome' ><p><ucfirst($nome)</p></a></li>"; } } ?> </ul> </div> <div id="numpag"> <?php $sqltotal ="select registo from $tabela"; $qrtotal = mysql_query($sqltotal) or die(mysql_error()); $numtotal = mysql_num_rows($qrtotal); $totalpagina = ceil($numtotal/$limite); if ($_REQUEST['pesquisa'] != ''){ $pesquisa = $_REQUEST['pesquisa']; echo '<a href="?pg=1&pesquisar='.$_REQUEST['pesquisa'].'">Primeira Página</a>'; if($SQL_RESUL > 1 && $pg <=$SQL_RESUL){ for($i=1; $i<=$SQL_RESUL; $i++){ echo "<a href='?pg=$i&pesquisar=".$_REQUEST['pesquisa']."'/>$i</a>"; } } echo "<a href=\"?pg=$totalpagina&pesquisar=".$_REQUEST['pesquisa']."\">Última Página</a>"; } else { echo '<a href="?pg=1&pesquisar='.$_REQUEST['pesquisa'].'">Primeira Página</a>'; if($SQL_RESUL > 1 && $pg <=$SQL_RESUL){ for($i=1; $i<=$SQL_RESUL; $i++){ echo "<a href='?pg=$i&pesquisar=".$_REQUEST['pesquisa']."'/>$i</a>"; } } echo "<a href=\"?pg=$totalpagina&pesquisar=".$_REQUEST['pesquisa']."\">Última Página</a>"; } ?> </div> Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 20, 2016 Olha como está a sua paginação: echo "<a href='?pg=$i&pesquisar=".$_REQUEST['pesquisa']."'/>$i</a>"; Altere o "pesquisar" ali para "pesquisa". Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 20, 2016 Já agora como faço para postar aqui o código formatado, estou a enviar através do iPad e não aparece a função de escolher se é código php html ou css como no computador. Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 20, 2016 Também já alterei pesquisar para pesquisa como o ESerra disse não resultou Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 24, 2016 boa tarde pessoal, preciso de vossa ajuda, pois infelizmente não consigo. 1- A listagem de todas as imagens esta funcionando; 2- Na pagina adotados.php funciona todas as pesquisas; 3- Na primeira página da paginação "\adotados.php&pg=1" também funciona as pesquisas; da Páginação 2 em diante não funciona a pesquisa, tenho sempre que voltar a primeira página para realizar outra pesquisa. Ao fazer alguma busca sempre me devolve a mensagem: Não foi encontrado nenhum bebé com este nome, por favor verifique meu form: <form name="formbusca" enctype="multiart/form-data" method="post" action=""> <div id="pesquisa"> Digite o nome para a pesquisa: <input type="text" name="buscar" > <input type="submit" class="btn btn-default" name="enviar" value="Pesquisar"/> </div> </form> Minha consulta: <?PHP $tabela = 'tb_bebes'; //Conexão com o Banco de Dados $conexao = mysql_connect('host', 'usuario', 'senha'); if (!$conexao) { die('Não foi possível conectar: ' . mysql_error()); //Exibe o erro por não conectar } //Conexão bem sucedida seleciona o BD $db_selected = mysql_select_db('rebornimaginacoesdebebes_com_pt_bdreborn', $conexao); $pagina = $_GET['pg']; if ($pagina > 1){ $pagina = $pagina; }else { $pagina = 1; } //Quantidade de imagens por página $limite_fotos_pg = 40; $inicio = ($pagina * $limite_fotos_pg) - $limite_fotos_pg; //busca a foto $buscar = $_POST['buscar']; $sql_listar_fotos = mysql_query("SELECT * FROM $tabela WHERE nome like '%$buscar%' and adotado LIKE '1' ORDER BY registo desc LIMIT $inicio, $limite_fotos_pg" ); $total_fotos = mysql_num_rows($sql_listar_fotos); if ($total_fotos == '0') { echo "<h2> Não foi encontrado nenhum bebé com este nome, por favor verifique</h2>"; } else { while ($produto = mysql_fetch_array($sql_listar_fotos)){ $nome= $produto['nome']; $foto= $produto['foto']; echo "<li><a href='fotos.php?tb=tb_$nome'><img src='imagens/originais/bebes/miniatura/$foto' alt='$nome' title='$nome' ><p><ucfirst($nome)</p></a></li>"; } } Minha paginação: <?php //busca a foto $buscar = $_REQUEST['buscar']; $sqltotal =mysql_query("SELECT * FROM $tabela WHERE nome like '%$buscar%' and adotado LIKE '1'"); $numtotal = mysql_num_rows($sqltotal); $totalpagina = ceil($numtotal/$limite_fotos_pg); echo '<a href="?pg=1&tb='.$_REQUEST['$buscar'].'">Primeira Página</a>'; if($totalpagina > 1 && $pagina <=$totalpagina){ for($i=1; $i<=$totalpagina; $i++){ echo "<a href='?pg=$i&tb=".$_REQUEST['$buscar']."'/>$i</a>"; } } echo "<a href=\"?pg=$totalpagina&tb=".$_REQUEST['$buscar']."\">Última Página</a>"; ?> Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 24, 2016 Tchê, a questão é extremamente simples, você está copiando/colando. O que você tem que fazer é ler e entender a lógica.. copiar e colar sem entender não vai adiantar nada, basta olhar o que você postou: 1 - \adotados.php&pg=1 Isso nunca vai funcionar, motivo? O que separa a querystring do da URL é um ponto de interrogação ? e não o "&". 2 - $buscar = $_REQUEST['buscar']; Você está usando o buscar, mas na paginação... 3 - ?pg=1&tb='.$_REQUEST['$buscar'] ...Na paginação além de estar buscando um tal de '$buscar' está usando um valor diferente do índice que está passando (tb), ou seja, se decida se o negócio é buscar ou tb... Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 24, 2016 Desculpe mais não consigo compreender, pode me chamar de burro ou o que quiser, nunca fiz nenhum curso e até sei muito por isso. O facto deu ter colocado & e ? é que vi em uma video aula assim, e esta funcionando. Esta criando minha paginação correcta. Se não se importar vamos lá ver se consigo explicar e me ajudar, por favor. Fiz um form e criei um input com o nome de 'buscar'. Depois criei uma variável $buscar e joguei o valor do input dentro dela, correcto? assim: $buscar = $_REQUEST['buscar'] Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 24, 2016 Quando gero o resultado da pesquisa, que penso que seja aqui através do while: Correcto? while ($produto = mysql_fetch_array($sql_listar_fotos)){ $nome= $produto['nome']; $foto= $produto['foto']; echo "<li><a href='adotados.php?tb=tb_$nome'><img src='imagens/originais/bebes/miniatura/$foto' alt='$nome' title='$nome' ><p><ucfirst($nome)</p></a></li>"; estou atribuindo no echo outro indice ('tb') porque depois irei precisar dele para mudar o nome da tabela que irei pesquisar, ou seja, cada tabela tera o nome da imagem. Se fiz mal até aqui por favor corrija-me. Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 24, 2016 porque gostaria de fazer um único arquivo de galeria. mudando assim somente a tabela de pesquisa. e não ter que criar arquivos para cada álbum. exemplo. Não quero ter que criar: lucio.php, daniel.php, carlos.php No href na linha echo bastava eu concatenar o "nome da imagem" através da váriavel $nome com "php" que criava o link para a página, correcto? assim: echo "<li><a href='NOME DA IMAGEM.'.php'>.... Compartilhar este post Link para o post Compartilhar em outros sites
johnhey 0 Denunciar post Postado Abril 24, 2016 mas como quero usar somente um arquivo. criei o indice tb no link, assim quando eu clicar na imagem irá atribuir a variavel ('tb') com a concatenação o nome da tabela. Então ai coloquei. if ($tb == ''){ $tabela = 'tb_bebes'; }else{ tabela = $tb; } por isso coloquei o tb na páginação, espero ter sido claro. E que possa me ajudar, se for o caso, até pode me enviar um numero de telefone que retorno a ligação, posto aqui meu email caso não queira enviar por mensagem. Pois pode ser eu quem não consigo me expressar correctamente. Compartilhar este post Link para o post Compartilhar em outros sites