Jump to content
kamikazzi

Significado de alguns conceitos php e sql

Recommended Posts

Boas,

será que me pode dizer o significa alguns destes "comandos" php?

Spoiler

$resultado = $ligacao->prepare(...);


$resultado->bind_param(...);


$resultado->execute();

 

$professor=$resultadoencontrado->fetch_assoc();

 

Share this post


Link to post
Share on other sites

Citar

$resultado = $ligacao->prepare(...);

Prepara uma Instrução/SQL para execução.

 

Citar

$resultado->bind_param(...);

Liga/Referência um Parâmetro ao nome de uma Variável

ou Constante especifica.

 

Citar

$resultado->execute();

Executa a Instrução/SQL preparada.

 

Citar

$professor=$resultadoencontrado->fetch_assoc();

Retorna um Array indexado pelo nome da coluna da tabela

conforme os resultados da execução.

Share this post


Link to post
Share on other sites

Isso daí é a gramática do PHP para o motor PDO. O outro motor é mysqli, mas esse só serve para o MySQL, enquanto que o PDO pode trabalhar com outro tipo de banco de dados.

 

Para o PHP conectar ao banco de dados, ele precisa de uma conexão, no seu exemplo, ele foi chamado de ligação:

$ligacao=new PDO("mysql:host=localhost;dbname=laravel","root","");

Com a conexão, o PHP usa a gramática do SQL para conversar com o banco de dados:
 

$resultado=$ligacao->prepare("select professor from safados where reputacao = :reputacao");

A gramática do SQL está incompleta, falta definir o parâmetro :reputacao, assim:
 

$resultado->bindParam(':reputacao','o mais safado de todos');

Finalmente, o PHP pede para executar a tarefa:
 

$resultado->execute( );

Para o PHP verificar se o banco de dados executou a tarefa, o PHP pede para que traga os resultados, e guarde na variável $professor:
 

$professor=$resultado->fetch_assoc();

Note que a última linha é diferente da sua, aqui certamente o PHP vai soltar uma mensagem de erro.

Em linguagem acadêmica $ligação é uma instância da classe PDO.

prepare, bindParam, execute, fetch são os métodos da classe PDO.
classe é uma forma avançada de programar. Para incentivar você a estudar classe, tente criar uma classe chamada princesa, onde você define os predicados dela (altura, cor do cabelo,cintura) e o que ela pode fazer (menosprezar, xingar, fazergestosobscenos). É muito difícil, mas assim que você pegar o jeito, vai querer abandonar o PHP e partir para o Laravel.

 

Share this post


Link to post
Share on other sites
4 horas atrás, Frank K Hosaka disse:

É muito difícil, mas assim que você pegar o jeito, vai querer abandonar o PHP e partir para o Laravel.

Laravel nada mais é que um framework que usa o PHP logo a ferramenta tem suas raízes que é o PHP.

Mas sim, não é PHP bruto e simples. Possui suas próprias peculiaridades para usar o PHP.

Não uso e não recomendo o uso de frameworks apesar deles serem de grandiosa utilidade por agilizar conceitos básicos do desenvolvimento.

 

Um framework te prende a ele e somente a ele impedindo e limitando o que pode ser feito apenas usando as sintaxes do simples PHP, fora que com que o utilizador aos poucos perca suas capacidades de desenvolver um software, robusto e leve.

Frameworks são Úteis? Claro que sim.

Frameworks são Inúteis? Claro que sim.

 

Orientação ao objeto não é nada difícil, os tutoriais/aulas que tem por aí que enfiam isso na cabeça de quem está a aprender só para o egocentrismo de dizer: "Orientação é difícil veja como sou expert por te ensinar".

Orientação ao objeto é que torna a programação em PHP muito mais fácil.

Share this post


Link to post
Share on other sites

Eu gosto do Laravel. No princípio eu instalei, sonhando em aprender a linguagem orientada a objetos. Isso é um grande engano. Laravel já é um objeto, restando apenas ao usuário a se limitar a usar as suas propriedades e métodos, mas que eu acho ele fantástico, isso eu acho.

 

A programação orientada a objetos é um tópico novo para mim. Estou começando agora a estudá-lo. Para o meu desespero, o namespace, o define, o spl_autoloader,  nada disso está funcionando comigo. Eu fico perdido com isso. Assim, o máximo que eu aprendi foi usar a herança de classe, aquilo é muito bom! Para chamar um arquivo, eu uso o endereço absoluto, começando com o $_USER['DOCUMENT_ROOT'] pelo PHP ou "../diretorio/arquivo.php" pelo HTML.

No projeto atual, eu inventei o básico.html, que vou incluir em todos os views. O máximo que eu consegui fazer foi definir o CDN do Bootstrap, mas eu fiz a besteira de estilizar o <body>, e só enfrento problemas. Hoje eu pretendo tirar o estilo do <body> do básico.html, para defini-lo em cada página em particular. É assim que eu estudo a programação orientada a objetos, o famoso estilo controles/modelos/visões. Eu desisti de procurar tutoriais, a maior parte deles mexe no .htaccess, e usa o composer para instalar soluções de terceiros. Eu usei um e acabei perdendo o meu direito de acessar a minha pasta astudy, eu fiquei indignado. Ontem eu vi um tutorial de autoload, eu fiquei indignado. O rapaz trabalha tudo no diretório raiz. Eu preciso de um autoload que funciona num ambiente em que os arquivos são distribuidos em pastas, e isso eu não consigo encontrar. Assim, só me resta usar o meu método científico de tentativa e erro.

Ou eu estou procurando no lugar errado?

Share this post


Link to post
Share on other sites

@Frank K Hosaka Sugiro que crie um tópico sobre o assunto, para não desviar esse.

Seu problema me parece ser da configuração do seu PHP, o que requer alguns posts até encontrar qual é o problema mesmo.

 

Faça o download desse projeto meu que nem vou trabalhar mais nele.

 https://github.com/Spell-Master/wesite_pessoal

Em system/config/connections.php configure um banco de dados seu aí.

O banco de dados crie uma tabela e um registro qualquer.

Peque qualquer arquivo dentro de modules existe até um de teste de produção _TESTE_.php

Nele faça a leitura da tabela que você criou:

<?php
$objeto = new Select();
$objeto->query('nome_da_tabela_no_banco_de_dados');

echo "<pre>";
var_dump($objeto->result());

Se configurou corretamente o acesso em connections.php e não há problemas de configuração do seu php verá todos os registros da tabela no banco de dados que você criou.

Note que em nenhum momento o arquivo da classe Select.php e nem a Connect.php foram incluídas ou requeridas elas estão em diretórios distintos, mas uma função usada no projeto o spl_autoload_register fez a mágica acontecer.

 

Se não funcionou com meu projeto, crie um tópico a respeito do problema para que toda comunidade possa ajudar a encontrar uma solução.

Frameworks podem causar anomalias ao usar recursos nativos do PHP ou até conflitar com eles, normalmente eles para funcionar desativam ou ativam aplicações do PHP alterando sua configuração padrão.

Também temos o lado da versão do PHP, enfim são várias questões a serem abordadas.

Share this post


Link to post
Share on other sites
Em 28/11/2023 at 20:04, Omar~ disse:

Laravel nada mais é que um framework que usa o PHP logo a ferramenta tem suas raízes que é o PHP.

Mas sim, não é PHP bruto e simples. Possui suas próprias peculiaridades para usar o PHP.

Não uso e não recomendo o uso de frameworks apesar deles serem de grandiosa utilidade por agilizar conceitos básicos do desenvolvimento.

 

Um framework te prende a ele e somente a ele impedindo e limitando o que pode ser feito apenas usando as sintaxes do simples PHP, fora que com que o utilizador aos poucos perca suas capacidades de desenvolver um software, robusto e leve.

Frameworks são Úteis? Claro que sim.

Frameworks são Inúteis? Claro que sim.

 

Orientação ao objeto não é nada difícil, os tutoriais/aulas que tem por aí que enfiam isso na cabeça de quem está a aprender só para o egocentrismo de dizer: "Orientação é difícil veja como sou expert por te ensinar".

Orientação ao objeto é que torna a programação em PHP muito mais fácil.


 

Laravel é amplamente reconhecido como um framework robusto no ecossistema do PHP, introduzindo uma estrutura mais rica e elaborada que transcende as capacidades do PHP puro. Essa complexidade, contudo, não deve ser interpretada meramente como uma sobreposição ao PHP, mas como uma abordagem meticulosamente projetada para amplificar as potencialidades do desenvolvimento web.

 

Embora seja verdade que ao adotar um framework como o Laravel, nos comprometemos com determinadas convenções e estruturas predefinidas, essa percepção de limitação é mitigada significativamente quando se integra o conhecimento e as práticas do Domain-Driven Design (DDD). O DDD oferece uma perspectiva que valoriza a modelagem do domínio de negócio, o que, por sua vez, promove uma abordagem mais flexível e adaptativa no desenvolvimento de software. Portanto, o compromisso com as convenções do Laravel pode ser visto não como uma restrição, mas como uma fundação sobre a qual soluções personalizadas e orientadas ao domínio podem ser construídas de forma eficaz.

 

A escolha entre utilizar um framework como o Laravel ou optar pelo PHP puro não é uma questão de certo ou errado, mas sim uma decisão que deve ser alinhada às necessidades específicas de um projeto e à familiaridade do desenvolvedor com as ferramentas disponíveis. Enquanto alguns desenvolvedores apreciam a liberdade e a flexibilidade oferecidas pelo PHP puro, outros valorizam a eficiência, a estrutura e as facilidades que um framework como o Laravel pode oferecer.

 

No que se refere à orientação a objetos, é crucial reconhecer que, apesar de existir uma curva de aprendizado, ela constitui uma abordagem poderosa que proporciona maior clareza, reusabilidade e facilidade de manutenção na programação em PHP. As críticas relacionadas à complexidade da orientação a objetos geralmente surgem de experiências de aprendizado mal direcionadas e não refletem a realidade prática, onde essa abordagem aprimora a gestão de projetos de software complexos e colaborativos.

 

Conclusão, tanto o uso de frameworks como o Laravel quanto a programação em PHP puro apresentam seus próprios méritos e desafios. A decisão entre um e outro deve ser embasada no contexto do projeto, nos requisitos específicos e na experiência do desenvolvedor ou da equipe envolvida. Igualmente, a orientação a objetos, quando compreendida e implementada adequadamente, pode se tornar um recurso inestimável para aumentar a qualidade e a eficiência no desenvolvimento de software.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By belann
      Olá!
       
      Estou tentando criar um projeto laravel e está dando o seguinte erro 
      curl error 60 while downloading https://getcomposer.org/versions: SSL certificate problem: unable to get local issu
        er certificate
      Já tentei atualizar o composer, mas dá o mesmo erro acima.
    • By violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
    • By violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
    • By violin101
      Caros amigos, saudações.
       
      Desculpa postar minha dúvida, fiz várias pesquisa mas não tive sucesso.
       
      Como faço para capturar o ID do SELECT selecionado e passar para base_url ?
       
      Exemplo:
      após selecionar o ID passar para <?php echo base_url();?>estoque/ajuste/adicionar/ <== passar o ID aqui.
       
      <div class="col-md-6"> <label for="tipoDepart" class="control-label">Departamento:</label> <select name="tipoDepart" id="tipoDepart" style="width:100%;" class="form-control"> <option value="">Selecione um Departamento</option> <?php foreach ($dprts as $dp) { echo '<option value="'.$dp->idDepartamento.'">'.$dp->departamento.'</option>'; } ?> </select> </div> <div class="col-md-6"> <div class="card card-entrad"> <div class="card-header"> <label class="card-tlentr">Entrada - Estoque</label> </div> <div class="card-body"> <div style="text-align:center;"> <a href="<?php echo base_url();?>estoque/ajuste/adicionar/" <== COMO PASSO O ID SELECIONADO AQUI, PARA ABRIR A PÁGINA COM O ID DO DPTO ? class="btn btn-cinza">Adicionar</a> </div> </div> </div> </div>  
      Observação: preciso capturar e passar o ID para gerar TABELA referente a cada departamento.
       
      Grato,
       
      Cesar
    • By violin101
      Caros amigos, saudações.
       
      Tem como passar para o Formulário um Campo vindo via AJAX no formato moeda ?
       
      Tenho uma rotina onde o usuário escolhe através de uma Lista na modal de Produtos e o sistema informa o formulário os seguintes campos:
      código | descrição | espécie | estoque atual.
       
      o estoque atual preciso passar nesse formato, para validação de quantidade: 15.00 ou 15,00.
      ou seja:
      converter de: 15 
      para: 15.00 com casas decimais

      tem como fazer isso ?
       
      Grato,
       
      Cesar
×

Important Information

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