Jump to content

DougCoder

Members
  • Content count

    60
  • Joined

  • Last visited

Community Reputation

2 Comum

About DougCoder

  1. DougCoder

    Paginação não apresenta os dados corretamente

    Ainda não consegui fazer a paginação corretamente, alguém tem algum exemplo pra correção do bug?
  2. DougCoder

    Paginação não apresenta os dados corretamente

    O imasters está extremamente lento para mim... Demora mais de 2 minutos para carregar qualquer página do fórum, não sei se está havendo algum problema, não estou conseguindo editar o post acima... Exemplo: $painel .= " <a href=\"". $_SERVER['PHP_SELF']."?pagina=$x&aut=$autor\">[$x]</a>"; Desta forma eu passo os ID's do autor para a URL, acredito que não seria os id's mas sim os nomes que deveria passar, então faço variáveis para armazenar os nomes dos autores, temas, etc. e armazeno isso na url? Em seguida... Como posso fazer a leitura deste parâmetro ao clicar na página [2], [3] ou próxima, anterior? Se entendi bem é mais ou menos isso?
  3. DougCoder

    Paginação não apresenta os dados corretamente

    Como ficaria ESerra? O link da paginação você fala URL ou esse aqui: $painel .= " <a href=\"". $_SERVER['PHP_SELF']."?pagina=$x\">[$x]</a>"; Pois são vários parâmetros (autor, disciplina, tema, etc.), sempre que preciso manipular todos eles eu passo apenas o ID, geralmente do arquivo e a partir deste ID eu faço uma $sqlbusca para identificar o arquivo e manipular seus dados, foi assim com outras páginas, igual a de editar arquivo.
  4. Bom dia a todos, Estou ficando louco com um problema na minha paginação. Na verdade não é na paginação em sí, mas nas condicionais da minha página, o que implica de dar "bug" na paginação. O problema é o seguinte: Se eu clico em buscar, ele mostra todos os registros... OK! Se eu seleciono 3 autores por exemplo: Doug, Doug2, Doug3. A soma de arquivos destes 3 autores é 12 arquivos, ele irá me mostrar 3 páginas (porque eu limitei a 5 por página), até ai tudo OK. Se eu clicar na página 2, ou 3 ou próxima, ele volta a mostrar 6 páginas no total. Ele faz isso porque quando clico em outra página após realizar um filtro de busca, é como se ele fizesse refresh da página e dai eu não armazeno em lugar algum aquilo que eu estava buscando. Os meus selects ficam não selecionados após minha ação de busca. Como posso resolver esse problemão? É o último "bug" do sistema, eu juro, rsrs. Estive pensando: Posso armazenar as informações no meu combobox após refresh? Coloco minha table dentro de uma div e só ela atualiza sem dar refresh na página? Tem alguma solução de preferência sem usar ajax? Se puderem me ajudar com exemplos ficarei grato! Uma boa parte do código aqui: <button name="BUSCAR" id="BBUSCAR" class="btn btn-info" > REALIZAR PESQUISA </button><br> <?php $pagina = (isset($_GET["pagina"])) ? $_GET["pagina"] : $pagina = 0; ?> <?php if ( isset($_REQUEST['BUSCAR']) || ($pagina > 0)) { $id_disciplina = Array(); $id_tema = Array(); $id_palchave = Array(); $id_autor = Array(); if (empty($_POST['txtnomearquivo'])){ $txtnomearquivo = ''; } else { $txtnomearquivo = $_POST['txtnomearquivo']; } if (empty($_POST['id-edit'])){ $id_editora = 0; } else { $id_editora = $_POST['id-edit']; } if (empty($_POST['id-tarq'])){ $id_ta = 0; } else { $id_ta = $_POST['id-tarq']; } if (empty($_POST['id-disciplina'])){ $id_disciplina = 0; } else { $id_disciplina = $_POST['id-disciplina']; } if (empty($_POST['id-tema'])){ $id_tema = 0; } else { $id_tema = $_POST['id-tema']; } if (empty($_POST['id-autor'])){ $id_autor = 0; } else { $id_autor = $_POST['id-autor']; } if (empty($_POST['id-pal-chave'])){ $id_palchave = 0; } else { $id_palchave = $_POST['id-pal-chave']; } // Registros por página $num_por_pagina = 5; /* Isto é pra verificar se existe alguma variável de url se existir a variável "$pagina" recebe o valor da variável de url $_GET["pagina"] se não recebe 1 */ if($pagina<1) $pagina = 1; $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina; $tema = join(',',(array)$id_tema); $autor = join(',',(array)$id_autor); $chave = join(',',(array)$id_palchave); $disciplina = join(',',(array)$id_disciplina); $codigo = "SELECT DISTINCT ARQ_ID,ARQ_NOME,conc_busca_autores(ARQ_ID) as AUT_NOME, conc_busca_temas(ARQ_ID) as TEM_NOME,EDI_NOME, conc_busca_disciplina(ARQ_ID) as DIS_NOME,conc_busca_palchave(ARQ_ID) as PAL_CHA_NOME, TIP_ARQ_NOME,ARQ_CAM_ARQ FROM `arquivos` a LEFT JOIN arquivos_has_disciplinas b ON a.ARQ_ID = b.Arquivos_ARQ_ID LEFT JOIN disciplinas dis ON b.Disciplinas_DIS_ID = dis.DIS_ID LEFT JOIN arquivos_has_temas c ON a.ARQ_ID = c.Arquivos_ARQ_ID LEFT JOIN temas tem ON c.Temas_TEM_ID = tem.TEM_ID LEFT JOIN autores_has_arquivos d ON a.ARQ_ID = d.Arquivos_ARQ_ID LEFT JOIN autores aut ON d.Autores_AUT_ID = aut.AUT_ID LEFT JOIN palavraschave_has_arquivos e ON a.ARQ_ID = e.Arquivos_ARQ_ID LEFT JOIN palavraschave pal ON e.PalavrasChave_PAL_CHA_ID = pal.PAL_CHA_ID LEFT JOIN editoras edi ON edi.EDI_ID = a.Editoras_idEditoras LEFT JOIN tipoarquivo tip ON tip.TIP_ARQ_ID = a.TipoArquivo_idTipoArquivo"; $codigo = $codigo." "; if($txtnomearquivo != '' or $id_editora != 0 or $id_ta != 0 or $id_disciplina != 0 or $id_tema != 0 or $id_autor != 0 or $id_palchave != 0){ $codigo = $codigo."where ( a.ARQ_NOME LIKE '%$txtnomearquivo%' or '$txtnomearquivo' LIKE '' ) and ( a.editoras_ideditoras = $id_editora or $id_editora = '' ) and ( a.TipoArquivo_idTipoArquivo = $id_ta or $id_ta = '' ) and ( b.Disciplinas_DIS_ID in ($disciplina) or '$disciplina' = 0 ) and ( c.Temas_TEM_ID in($tema) or '$tema' = 0 ) and ( d.Autores_AUT_ID in ($autor) or '$autor' = 0 ) and ( e.PalavrasChave_PAL_CHA_ID in ($chave) or '$chave' = 0 )"; } $codigo2 = $codigo; $codigo = $codigo." LIMIT $primeiro_registro, $num_por_pagina"; $sqlbusca = $conn->query($codigo); //construa e exiba um painel de navegabilidade entre as páginas $consulta = "select count(1) as qtd from (".$codigo2." ) porra"; list($total_usuarios) = mysqli_fetch_array(mysqli_query($conn2,$consulta)); $total_paginas = $total_usuarios/$num_por_pagina; $prev = $pagina - 1; $next = $pagina + 1; // se página maior que 1 (um), então temos link para a página anterior if ($pagina > 1) { $prev_link = "<a href=\"" . $_SERVER['PHP_SELF']. "?pagina=$prev\">Anterior</a>"; } else { // senão não há link para a página anterior $prev_link = "Anterior"; } // se número total de páginas for maior que a página corrente, então temos link para a próxima página if ($total_paginas > $pagina) { $next_link = "<a href=\"" . $_SERVER['PHP_SELF'] . "?pagina=" . $next . " \">Próxima"; } else { // senão não há link para a próxima página $next_link = "Próxima"; } $total_paginas = ceil($total_paginas); $painel = ""; for ($x=1; $x<=$total_paginas; $x++) { if ($x==$pagina) { // se estivermos na página corrente, não exibir o link para visualização desta página $painel .= " [$x] "; } else { $painel .= " <a href=\"". $_SERVER['PHP_SELF']."?pagina=$x\">[$x]</a>"; } } echo "$prev_link | $painel | $next_link"; while ($linha = $sqlbusca->fetch(PDO::FETCH_ASSOC)) { ?> //aqui fica o html/php da minha tabela Bem mais acima deste código eu possuo um único form: <form name="form_busca" id="form-busca" method="POST" action="?pagina=1" > Exemplo de um dos meus selects (combobox): <!-- Autor --> <th> <div id="hr"> Autores </div> <select name="id-autor[]" id="selautor" class="selectpicker show-tick form-control" data-live-search="true" multiple data-max-options="5"> <?php $sql = $conn->query("select * from autores"); while ($linha = $sql->fetch(PDO::FETCH_ASSOC)) { ?> <?php if ($linha["AUT_ACESSO"] == "B") { ?> <option disabled value="<?php echo $linha["AUT_ID"];?>"><?php echo $linha["AUT_NOME"]; ?></option> <?php } else { ?> <option value="<?php echo $linha["AUT_ID"];?>"><?php echo $linha["AUT_NOME"]; ?></option> <?php } } ?> </select> </th>
  5. OBS: A não ser que eu consiga JUSTIFICAR o porque não utilizei MVC no projeto. Alguém de vocês tem argumentos para esta justificativa? hehe Pesquisando na internet, nada "concreto", quando falo justificar, digo... Baseado em documentação, artigo, algo publicado, o que não vale... Um blog/fórum, site que não tenha sido publicado cientificamente.
  6. Pessoal... Não tem jeito, não vou poder correr do MVC / Orientação a Objetos. Agradeço a todos pelas explicações bem detalhadas, muito obrigado. Retornei aqui para tirar uma última dúvida sobre o assunto... Terei que "migrar" meu projeto que está pronto em PHP estruturado para PHP orientado a objetos. É preciso utilizar algum framework tipo cakePHP / codeIgniter? Para algum benefício relacionado a MVC ou alguma outra coisa? Posso meter a cara no código puro mesmo? O que me recomendam? Estou bem chateado... Tenho nem 1 mês para tentar passar meu projeto para orientado a objeto com mvc... Missão meio impossível, mas vamos lá, é fazer ou fazer...
  7. DougCoder

    E-sports

    Antigamente jogava Lineage II, praticamente a vida toda, desde 2005/2006 até o ano passado... Hoje jogo LOL e sou Diamante 5 na Season5 e agora também na S6. Tenho alguns smurf platina/gold mas nem jogo nelas apenas fiz md10 e poucas partidas mas acabei deixando de lado pois não tinha tempo de sustentar 2 contas e elas não tem champ, então fiquei só na main mesmo. Não tenho time, já tentei montar mas a galera sempre da pra trás e ninguém logava pra treinar, a maioria só zuava e eu sempre gostei de jogar a sério, focar em melhorar e tal, meus amigos só queria zuera então não dava certo, eu fui melhorando e muito deles ficaram pra trás, mas todos ainda jogam. To jogando praticamente nada pq to enrolado com um projeto, mas assim que eu terminar pretendo por minha conta pelo menos diamante II, ou a smurf no D5 também pra meta challenger ano que vem :p
  8. Boa madrugada galera, Já pesquisei no iMasters e no Mister Google e encontrei... nada além disso: http://forum.imasters.com.br/topic/513607-teste-unitario/?hl=%2Bteste+%2Bunitario Alguns outros 2 tópicos abandonados sobre teste unitário. Diante disso, venho através deste tópico invocar o teste unitário para PHP. Gostaria que me ajudassem me informando ou me indicando, dando exemplos e recomendando como posso fazer um teste unitário em meu sistema PHP (sem orientação a objeto). Eu estou tentando usar o PHPUnit no netbeans e estou patinando feio, ele não tem nada, única coisa que ele informa é erro PDO por não conseguir serializar e (un)serializar o PDO e isto ele não vai conseguir mesmo. Eu gostaria e na verdade não é só gosto, eu precisaria que este teste unitário fosse de forma automatizada. Assim como um teste de análise estática, funcional, etc... O PHPUnit precisa que eu desenvolva os códigos para demonstrar qual é a entrada e qual é a saída e a única coisa que ele faz é verificar se aquela determinada saída está de acordo com aquela determinada entrada. Então... Até aqui eu entendi bem sobre o assunto? Bom, voltando lá, eu não gostei nada dessa ferramenta PHPUnit, talvez eu que não saiba o que ela pode oferecer, mas o que eu sei é que ela já foi descontinuada e é totalmente manualzão os testes. Existe outras ferramentas que possam me auxiliar a fazer teste unitário em PHP? Encontrei esta: http://www.simpletest.org/ e também esta: https://github.com/Enhance-PHP/Enhance-PHP E não encontrei nada mais além disso. Difícil demais achar algum vídeo explicando como funciona um teste automatizado e tal, nada, nada nada. Meus caros amigos e grandes samurais... Há uma forma de fazer teste unitário automatizado? Caso não tenha como, qual a maneira mais prática, ágil e precisa para realizar este tipo de teste? Dicas?
  9. DougCoder

    Pegar ID da linha(while) na mesma página, no mesmo form.

    Bom dia galera, Consegui resolver, não exatamente da forma como eu queria, mas foi o único jeito que o tempo x conhecimento me permitiu... Eu passo na página de busca apenas o botão Atualizar e ao clicá-lo, ele consegue encaminhar o ID do arquivo da linha para ser manipulado em outra página. Eu gostaria que ele encaminhasse todos os valores (id arquivo / autor / disciplina / etc). Mas então eu acabei fazendo em outra page o editar do arquivo, dai nesta outra page eu trago o arquivo com um select puxando ele e todas as dependencias de tabelas N:N, formando assim uma nova tabela idêntica, porém com apenas as informações daquele arquivo ao qual cliquei e dentro dele, eu joguei os botões de editar em cada campo, abrindo o modal. O que não era "possível" com o botão atualizar na mesma page, pois ele se abrisse o modal, não passava o valor do ID-Arquivo e se passasse o ID não traria evento de abrir o modal, tentei com todo jeito possível, com submit, sem submit, isset no botão, JS, Ajax, funções de atribuir elemento .setAttribute após passar o ID-Arquivo e nada adiantou. Então ficou mais ou menos isso... Obrigado deixo aqui uma imagem +/- Não postarei o código pois ficou bastante extenso, mais de 500 linhas, o arquivo total deu 1300+. E também não indico da forma que eu fiz, até porque com certeza não é uma boa prática.
  10. DougCoder

    Mandar um arquivo de um diretório para outro

    Então na verdade você não quer mandar o arquivo para la, você quer puxá-lo ou usá-lo em outro arquivo, são coisas diferentes... Se você usa require_once, então você quer usá-lo em outro arquivo, beleza, então ficaria assim: require_once("../../Pasta-01/Arquivo.php"); ../ = Estou saindo da pasta Subpasta-01 e indo para Pasta-02 ../ (novamente) = Estou saindo da Pasta-02 e indo para alguma pasta sua Pasta-01 = Estou entrando na Pasta-01 e acessando /Arquivo.php Uma dica para você não precisar ter dúvida nisso é utilizar uma IDE que mostre os caminhos, por exemplo o NetBeans, é só você apertar ctrl + espaço com a tag require_once que ele te mostra qual pasta você está, como voltar na pasta anterior e todos seus arquivos, etc. Alguns editores de texto se não me engano também tem isso, acho que talvez o Brackets e o Sublime.
  11. DougCoder

    Pegar ID da linha(while) na mesma página, no mesmo form.

    Pessoal... Elaborei uma Gambi (minha especialidade) que quaaaaaaaaaaaase deu certo... Me ajudem a descobrir onde foi que errei... Olha só: function add_mdl() { // document.getElementById("mdd").setAttribute("data-toggle", "modal"); // document.getElementById("mdd").setAttribute("data-target", "#modal-autor"); $('#mdd').live('click', function (e) { $('#modal-autor').modal(); }); } Seguinte... Nesta função temos 2 "formas", onde via JS as linhas comentadas eu removi os elementos "data-toggle" e "data-target", pois observei que com eles eu não consigo atribuir o value do botão para uma variável ou qualquer outra coisa, resumidamente falando é: quando uso este atributo no button, ele executa ele antes de atribuir qualquer outra ação, mesmo colocando o atributo depois do value, depois de tudo, enfim.. Utilizando o setAttribute para adicionar este atributo no evento onclick do botão, ele funciona apenas na primeira linha, por exemplo, se eu clicar no editar da linha arquivo 2, ele faz como se desse refresh na página, quando clico no editar da linha arquivo 1, ele abre o modal com o ID do arquivo da linha 2, ou da linha 3, ou da última que eu cliquei exceto a primeira, bem, abandonei essa forma. Utilizando o $('#mdd').live(), ele faz o que promete, porém ele mostra o modal e some, sem falar que a primeira vez que eu clico, ele nao mostra o valor, dai eu clico de novo e em qualquer linha, ele mostra o valor (sempre da última que cliquei e não da atual, ou seja, da penúltima que eu cliquei) Nem eu entendi direito o que ta acontecendo mas... Um teste e que funciona 100% mas não consegui aplicar isto direito: <td> <button type="submit" name="endereco2" value="<?=$linha['ARQ_ID'] ?>" onclick="add_edit();" > <br><?php echo $linha["ARQ_NOME"]; ?> </button> </td> E na minha outra página: $ida = $_POST['endereco2']; echo $ida; // o $id sempre correto sai aqui ! Desta forma, o id sempre passa correto! Mas ai é um botão que eu criei a parte, eu não consigo passar este id paga o modal, eu não quero passar para outra página, preciso passar isso para o modal, apenas isto... Só que ai, se eu passar o id, eu não chamo o modal, se eu chamar o modal, da undefined index no id.
  12. Boa noite a todos, Parece ser algo fácil e foi assim que eu pensei e deixei meio que pra depois e depois... Mas estou com uma dificuldade enorme, acredito que por ser da forma que programei a página. Veja bem: Imagem 1: https://uploaddeimagens.com.br/images/000/612/454/original/p1.jpg?1462144558 Na imagem 1, tenho o ID do arquivo (na coluna do autor, apenas para visualizar mesmo), no caso, o arquivo ("OPA") da primeira linha, possui ID 69. e o segundo arquivo, possui ID 73. E por ai vai... No meu código tenho o seguinte: <td> <?php echo $linha["ARQ_ID"]; ?> <input type="hidden" name="myhid" value="<?php echo $linha['ARQ_ID']; ?>"> <strong><?php echo $linha["AUT_NOME"]; ?></strong> <br><br> <button type="submit" class="btn-sm btn-default" value="<?=$linha['ARQ_ID'];?>" data-toggle="modal" name="alt-autor" id="alt-autor" data-target="#modal-autor" >Editar</button> </td> Acontece que, desta forma, eu passo apenas o ID $linha['ARQ_ID'], do último arquivo da página. Por exemplo, se tenho 5 arquivos por paginação, quando clico em Editar, ele passa o valor do ID do arquivo 5 da página 1, por exemplo. Eu preciso pegar o ID da linha onde cliquei. O <button> não consegue passar o value para outra página, da undefined index alt-autor. Eu fiz várias modificações e quando não da undefined, fica em branco ou quando passa um parâmetro... Ele passa sempre o último do while de busca da tabela. OBS: Eu já tive esta dificuldade e eu consegui resolvê-la adicionando o button que está no código acima com o value tudo mais ou menos do jeito que está, porém ele não puxava um modal, testei ele de várias formas e não deu certo... OBS 2: O ID do autor eu não passo pelo botão Editar. Eu não preciso passá-lo na verdade... Eu preciso pegar o ID do novo autor, que eu pego quando abre o modal ao clicar em editar, favor ignorar a OBS da imagem 1 onde informo que o id do autor passa, na verdade eu não puxo o id do autor da tabela, pois não precisa! Imagem 2: https://uploaddeimagens.com.br/images/000/612/455/original/p2.jpg?1462144648 Na imagem 2, é um outro probleminha... Eu não sei porque ele inventa de passar a página se eu clicar em qualquer parte do modal, ou fundo do modal, exceto os botões e combobox. Por exemplo, se eu clicar no nome dos autores que está no select do modal, eu seleciono normal, se eu clicar em Editar ele puxa um action normal, se eu clicar em Fechar Editar, ele fecha, mas se eu clicar no fundo branco ou no fundo opaco, ele mostra que vai para pagina=2. WTF? Não fiz nenhum .js pra isso Oo Imagem 3 (outra forma desejável): https://uploaddeimagens.com.br/images/000/612/456/original/p3.jpg?1462144652 Na imagem 3, é a forma que eu "imaginava" que conseguiria fazer, é a "forma certa" vamos dizer assim... Para não ficar essa coisa horrível de 1 botão em cada campo, eu clicava na ação a ser feita, no caso atualizar, e ai montava minha página de edição DAQUELA LINHA ESPECÍFICA, ou seja, daquele arquivo específico! Porém não consegui puxar os dados, é praticamente quase o mesmo problema da imagem 1. OBS IMPORTANTE: Eu uso um <form> somente para toda a minha página! Imagino que não seja o correto, mas não foi possível eu atribuir tantas passagens de parâmetros com vários forms. Eu não conseguia manipular as informações na minha página principal e muito menos nas outras páginas quando usava vários forms... Pois eu precisava abrir a página de visualização de pdf, editar, cadastrar, excluir, relatórios, etc, etc... Então eu fiz o seguinte: function add_action() { document.getElementById("form-busca").action = "visualiza_p.php"; document.getElementById("form-busca").submit(); } function add_edit() { document.getElementById("form-busca").action = "editar/editar_autor_arquivo.php"; document.getElementById("form-busca").submit(); } E ai no botão onde eu quero passar as informações do meu <form> principal para outra página, eu apenas puxo a função que atribui ao meu form um action e então eu o executo. =)
  13. DougCoder

    CSS para tabela com combobox responsiva

    Tentarei em breve amigo... Não me atentei a uma funcionalidade do sistema e preciso desenvolvê-la o mais rápido possível... Tive que abandonar o CSS no momento, assim que eu conseguir fazer eu volto aqui e informo, obrigado!
  14. DougCoder

    CSS para tabela com combobox responsiva

    Então... O responsive do bootstrap que você diz é o mesmo que eu citei alguns posts acima e mostrei na imagem? (segui o exemplo do boostrap responsive com base no w3school do link) Se for... acontece que ele pega e "cria" o scroll vertical e horizontal ao redor da tabela... Tudo bem isto atenderia se a tabela não tivesse um select, pelo seguinte motivo: Se eu coloco este scroll, quando clico no combobox ele desce as opções e isso fica dentro do componente <div> com a responsividade do boostrap, ou seja, sempre que eu clico em um select eu tenho que descer o scroll em uma tela minúscula (do tamanho de 3 dedos) que é a altura da minha tabela. Eu mostrei isso la no post #9 o jeito que ficou e tipo... Sem usar dessa forma acho que a única maneira seria dividir a tabela mesmo pq daí ela se ajusta ao tamanho ideal em todos os pixels possíveis. Ficaria em 3 partes: Full tela = tabela normal. mid tela, ou médio pixels = tabela dividida 480px ou inferior = tabela vertical com o css q vc demonstrou.
  15. DougCoder

    CSS para tabela com combobox responsiva

    Opa amigo !!! Funcionou certinho, fiz uma minúscula edição no seu CSS alterando a div para #hr e atribui na div da tabela o id="hr" pois eu tinha mais divs na página e elas não eram apresentadas. Só isso, funcionou a divisão vertical muito bem. Parabéns e muito obrigado. Estou agora enfrentando aquele outro probleminha que está na imagem que postei no post #6. A primeira imagem do tópico onde por exemplo, seu CSS faz a divisão em 450px, posso até aumentar um pouco que fica bom. Mas próximo a 800px ~~ 1150px por exemplo, a tabela continua não responsiva. Estou tentando aplicar a sua mesma lógica para "dividir" a tabela... Tipo, acho que seria a única solução mais viável. Quando ela estourar uma certa quantidade de tamanho em 'px', ele dividir a tabela em 2 linhas. Ou seja, ficando da seguinte forma: @media 900px (exemplo) [ Nome da Obra | Autores | Temas ] [ Editoras | Disciplinas | Palavras Chave | Tipo de Arquivo ] OBS: Imagine os headers +/- centralizados... Teria que ter alguma outra técnica / elemento do CSS para fazer esta divisão na <table> ?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.