-
-
Save silvadias22/1c4c5425ae74bac3a1c44b2a995110e3 to your computer and use it in GitHub Desktop.
| <?php | |
| function conexaoPDO(){ | |
| #Iniciando conexão com banco de dados | |
| $pdo = new PDO ('pgsql:host=localhost; dbname=desenvolvedor' , 'postgres' , ''); | |
| $pdo->setattribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | |
| return $pdo; | |
| } | |
| function buscarAno(){ | |
| $pdo = conexaoPDO(); | |
| $stmt = $pdo->prepare('select * from public."ANO";'); | |
| $stmt->execute(); | |
| $pdo = null; | |
| return $stmt; | |
| } | |
| function fatos2013(){ | |
| $pdo = conexaoPDO(); | |
| $fatos2013 = $pdo->prepare('select * from public."ANO" where id=1;'); | |
| $fatos2013->execute(); | |
| $pdo = null; | |
| return $fatos2013; | |
| } | |
| function fatos2014(){ | |
| $pdo = conexaoPDO(); | |
| $fatos2014 = $pdo->prepare('select * from public."ANO" where id=2;'); | |
| $fatos2014->execute(); | |
| $pdo = null; | |
| return $fatos2014; | |
| } | |
| function fatos2015(){ | |
| $pdo = conexaoPDO(); | |
| $fatos2015 = $pdo->prepare('select * from public."ANO" where id=3;'); | |
| $fatos2015->execute(); | |
| $pdo = null; | |
| return $fatos2015; | |
| } | |
| function fatos2016(){ | |
| $pdo = conexaoPDO(); | |
| $fatos2016 = $pdo->prepare('select * from public."ANO" where id=4;'); | |
| $fatos2016->execute(); | |
| $pdo = null; | |
| return $fatos2016; | |
| } | |
| ?> |
| <!DOCTYPE html> | |
| <?php | |
| include "database.php"; | |
| $stmt = buscarAno(); | |
| $ano = $stmt->fetch(); | |
| $fatos2013 = fatos2013(); | |
| $fatos2013 = $fatos2013->fetch(); | |
| $fatos2014 = fatos2014(); | |
| $fatos2014 = $fatos2014->fetch(); | |
| $fatos2015 = fatos2015(); | |
| $fatos2015 = $fatos2015->fetch(); | |
| $fatos2016 = fatos2016(); | |
| $fatos2016 = $fatos2016->fetch(); | |
| ?> | |
| <html> | |
| <head> | |
| <meta charset="utf8"> | |
| <link rel="stylesheet" href="css/bootstrap.css"> | |
| </head> | |
| <body> | |
| <div class="container" style="margin: 10%"> | |
| <div class="panel panel-default"> | |
| <div class="panel-heading text-center"> | |
| <p> | |
| Selecione o ano para realizar a busca: | |
| </p> | |
| <select name="ANO" id="ANO" class="selectpicker"> | |
| <option id="2013" name="2013" value="2013" <?php if (in_array('2013' , $ano)); ?>>Registros de 2013</option> | |
| <option id="2014" name="2014" value="2014" <?php if (in_array('2014' , $ano)); ?>>Registros de 2014</option> | |
| <option id="2015" name="2015" value="2015" <?php if (in_array('2015' , $ano)); ?>>Registros de 2015</option> | |
| <option id="2016" name="2016" value="2016" <?php if (in_array('2016' , $ano)){ echo "selected" ; } ?>>Registros de 2016</option> | |
| <!-- | |
| Outras opções | |
| <option <?php /*if ($stmt['2014'] == '2014') ;?> value="2014">2014</option> | |
| <option <?php if ($stmt['2015'] == '2015') ;?> value="2015">2015</option> | |
| <option <?php if ($stmt['2016'] == '2016') echo 'selected';*/ ?> value="2016">2016</option> | |
| --> | |
| </select> | |
| </div> | |
| <!-- 2013 --> | |
| <div class="panel-body"> | |
| <div id="Ano2013" style="display: none;"> | |
| <table class="table table-striped table table-bordered table table-hover"> | |
| <thead> | |
| <tr class="text-center"> | |
| <td class="success">Fato registrado no ano de <?php echo $fatos2013['1'];?></td> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr class="default text-center"> | |
| <td><?php echo $fatos2013['2'];?></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <!-- 2014 --> | |
| <div id="Ano2014" style="display: none;"> | |
| <table class="table table-striped table table-bordered table table-hover"> | |
| <thead> | |
| <tr class="text-center"> | |
| <td class="success">Fato registrado no ano de <?php echo $fatos2014['1'];?></td> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr class="default text-center"> | |
| <td><?php echo $fatos2014['2'];?></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <!-- 2015 --> | |
| <div id="Ano2015" style="display: none;"> | |
| <table class="table table-striped table table-bordered table table-hover"> | |
| <thead> | |
| <tr class="text-center"> | |
| <td class="success">Fato registrado no ano de <?php echo $fatos2015['1'];?></td> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr class="default text-center"> | |
| <td><?php echo $fatos2015['2'];?></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <!-- 2016 --> | |
| <div id="Ano2016"> | |
| <table class="table table-striped table table-bordered table table-hover"> | |
| <thead> | |
| <tr class="text-center"> | |
| <td class="success">Fato registrado no ano de <?php echo $fatos2016['1'];?></td> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr class="default text-center"> | |
| <td><?php echo $fatos2016['2'];?></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </div> | |
| </div> | |
| </div><!-- Container --> | |
| </body> | |
| <script src="js/jquery-2.2.3.min.js"></script> | |
| <script src="js/bootstrap.js"></script> | |
| <script> | |
| $(document).ready(function(){ | |
| $("#2013").click(function(){ | |
| $("#Ano2013").show(); | |
| $("#Ano2014 , #Ano2015 , #Ano2016").hide(); | |
| }); | |
| $("#2014").click(function(){ | |
| $("#Ano2014").show( ); | |
| $("#Ano2013 , #Ano2015 , #Ano2016 ").hide(); | |
| }); | |
| $("#2015").click(function(){ | |
| $("#Ano2015").show( ); | |
| $("#Ano2013 , #Ano2014 , #Ano2016 ").hide(); | |
| }); | |
| $("#2016").click(function(){ | |
| $("#Ano2016").show( ); | |
| $("#Ano2013 , #Ano2014 , #Ano2015 ").hide(); | |
| }); | |
| }); | |
| /* | |
| Na raça fica mais ou menos assim: | |
| $( "#2013" ).click(function() { | |
| $( "#0" ).show( 5 , function() { | |
| $( "#1" ).hide( 5 , function() { | |
| $( "#2" ).hide( 5 , function() { | |
| $( "#3" ).hide( 5 , function() { | |
| }); | |
| }); | |
| }); | |
| }); | |
| }); | |
| $( "#2014" ).click(function() { | |
| $( "#0" ).hide( 5, function() { | |
| $( "#1" ).show( 5 , function() { | |
| $( "#2" ).hide( 5 , function() { | |
| $( "#3" ).hide( 5, function() { | |
| }); | |
| }); | |
| }); | |
| }); | |
| }); | |
| $( "#2015" ).click(function() { | |
| $( "#0" ).hide( 5 , function() { | |
| $( "#1" ).hide( 5 , function() { | |
| $( "#2" ).show( 5 , function() { | |
| $( "#3" ).hide( 5 , function() { | |
| }); | |
| }); | |
| }); | |
| }); | |
| }); | |
| $( "#2016" ).click(function() { | |
| $( "#0" ).hide( 5 , function() { | |
| $( "#1" ).hide( 5 , function() { | |
| $( "#2" ).hide( 5 , function() { | |
| $( "#3" ).show( 5 , function() { | |
| }); | |
| }); | |
| }); | |
| }); | |
| }); | |
| */ | |
| </script> | |
| </html> |
| -- Table: public."ANO" | |
| -- DROP TABLE public."ANO"; | |
| CREATE TABLE public."ANO" | |
| ( | |
| id integer NOT NULL DEFAULT nextval('"ANO_id_seq"'::regclass), | |
| "ANO" integer NOT NULL, | |
| "FATOS" text, | |
| CONSTRAINT "ANO_pkey" PRIMARY KEY (id) | |
| ) | |
| WITH ( | |
| OIDS=FALSE | |
| ); | |
| ALTER TABLE public."ANO" | |
| OWNER TO postgres; |
Ficou bom!
Mas toda função você ta chamando a conexão.
Poderia definir uma variável fora do escopo e atribuir a variável de conexão, assim não precisaria fazer uma nova conexão em cada uma das funções. $pdo = conexaoPDO()
Porem o mais aconselhável mesmo é trabalhar com classes.
É verdade rapaziada =)
Eu mesmo deixei de melhorar os scripts em alguns aspectos, por exemplo, usei muitas funções, quase que um exagero, não acham que seria bem mais interessante agregar os exageros? hehe.
A variavel para ser declarada fora do escopo é também uma exelente forma de melhorar o enredo.
Mas a questão das classes, por mais que concordo plenamente em usar, eu estaria fugindo do foco do trabalho, kkkk . Criar um projeto simples sem utilizar o exagero dos recursos, construir um projeto que abrange algumas operações extremamente importante de forma mais bruta. hehehe
Acredito que classes seria demais :)
Fiz um refatoramento no seu código para deixar ele mais genérico, dá uma olhada: https://gist.github.com/arielpts/15bf6230f7d069b7624be49c6f0d7089/revisions
arielpts, cara que top, vou ler e reproduzir a manutenção que você propôs. Sou um novato, estou impressionado em perceber as diferenças de escrita dos scripts ... hehehe . Grande colaboração :D
Você poderia criar uma única função de fatos e passar o ano como parâmetro já que todas as funções são exatamente iguais e só mudam o ID.
Deveria ser algo assim: function fatos($anoID).
E também tirar a conexão de dentro da função.
Abraço.
Então cara, a dica é centralizar o acesso ao banco e padronizar o acesso a variavel de conexão, por exemplo, quando for fazer um SELECT a query será processada de uma maneira igual e o código ficará mais reutilizável. Use prepared statements, jogue um bindParam ali, aí tu já melhora a segurança e etc...
Logo mais vou passar meu tcc aqui nessa conta do Git, se quiser dar uma olhada, sugetões são sempre aceitas 😄
Dicas de Codigo
Basicamente evitar de realizar operações repetidas, para tal, crie funções/métodos/rotinas que as reproduzam.
Dica PHP:
Crie uma função para realizar as operações do fatos201x();
function fatosPorAno($id){
$pdo = conexaoPDO();
$fatos = $pdo->prepare('select * from public."ANO" where id=?;');
$fatos->execute(array($id));
$pdo = null;
return $fatos;
}Dica JQuery:
Crie uma função para incluir as operações do .click();
Adicione uma .class e um attr para buscar o nome da id
Exemplo:class="anos" data-year="Ano2013"
<div id="Ano2013" style="display: none;" class="anos" data-year="#Ano2013">Agora o JQuery que vai processar as divs.
$(document).ready(function(){ $('.anos').each(function(){ $(this).bind('click', function(){ var year = $(this).data('year'); $('.anos').hide(); $(year).show(); }); });
Muito bom! Você também poderia usar classes do PHP, seu código ficaria muito menor e fácil de manutenir.