Skip to content

Instantly share code, notes, and snippets.

@uchoamaster
Created November 9, 2018 18:10
Show Gist options
  • Save uchoamaster/5900a5c337dc33b1196d2c846455204a to your computer and use it in GitHub Desktop.
Save uchoamaster/5900a5c337dc33b1196d2c846455204a to your computer and use it in GitHub Desktop.
curso php basico
<?php
include('configuracao.php');
include('db.php');
include('usuarios.php');
include('produtos.php');
function getPagina(){
$url = $_SERVER['REQUEST_URI'];
//tratamento de url
$url = explode("?",$url); // nesse momento ele vira um array
$url = $url[0]; // agora consigo tratar o elemento busca
$metodo = $_SERVER['REQUEST_METHOD'];
if ($metodo == "GET") {
switch($url){
case "/":
$produtos = getProdutos();
include("Paginas/home.php");
break;
case "/home":
$produtos = getProdutos();
include("Paginas/home.php");
break;
case "/sobre":
include("Paginas/sobre.php");
break;
case "/contato":
include("Paginas/contato.php");
break;
case "/busca":
$produtos = buscaProdutos($_GET['busca']);
include("Paginas/home.php");
break;
case "/produto/editar":
$produtoEdit = buscaProdutoId($_GET['id']);
$produtos = getProdutos();
$editando = true;
include("Paginas/home.php");
//var_dump($produtoEdit);exit; verificar se está passando os dados corretamente e trazendo eles
break;
default:
$produtos = getProdutos();
include("Paginas/home.php");
break;
}
}
if ($metodo == "POST") {
switch($url){
case "/produto/adicionar":
//var_dump($_POST);exit;
if(!adicionarProdutos($_POST)){ //com o sinal de esclamação eu estou querendo negar essa expressão
//var_dump("OK");
$msg = "Erro ao salvar o registro!";
$produtos = getProdutos();
include("Paginas/home.php");
break;
}
header('location:../');
break;
case "/produto/salvar":
//var_dump($_POST);exit;
if(!salvarProduto($_POST)){ //com o sinal de esclamação eu estou querendo negar essa expressão
//var_dump("OK");
$msg = "Erro ao atualizar o registro!";
$produtos = getProdutos();
include("Paginas/home.php");
break;
}
header('location:../');
break;
default:
$produtos = getProdutos();
include("Paginas/home.php");
break;
}
}
}
//função para debugar as atualizações
//return include ("Paginas/home.php");
<h2><?php echo getInfo("titulo") ?></h2>
<p><?php echo getInfo("descricao") ?></p>
<hr>
<h2>Pesquisar</h2>
<form action="busca" method="GET" accept-charset="utf-8">
<input type="text" name="busca" placeholder="Busca">
<button>Pesquisar</button>
</form>
<h2>Lista de Produtos</h2>
<ul>
<!-- operadores básicos do php -->
<?php foreach($produtos as $produto): ?>
<!-- com esse comando eu consigo trazer cada produto direto da api.php onde declarei ele na mesma -->
<!-- <li><?php echo $produto['titulo'] ?><br></li> -->
<!-- number format -->
<!-- posso estipular o valor da quantidade de virgula por casas decimais -->
<!-- aqui teremos o titulo , a descrição e valor de cada produto formatados -->
<li>
<?php echo $produto['titulo']." - ".$produto['descricao'] ." - "."R$".number_format($produto['valor'],2,",",".") ?>
<a href="/produto/editar?id=<?php echo $produto['id'] ?>">Editar</a>
<a href="/produto/excluir?id=<?php echo $produto['id'] ?>">Excluir</a>
</li>
<!-- aqui eu posso somar cada valor do produto -->
<!-- <li><?php echo $produto['valor'] + 1000.00 ?><br></li> -->
<!-- se fir diminuir basta por o sinal de subtraco -->
<!-- <li><?php echo $produto['valor'] - 1000.00 ?><br></li> -->
<!-- posso multiplicar tb o produto -->
<!-- <li><?php echo $produto['valor'] * 2 ?><br></li> -->
<!-- posso dividir tb -->
<!-- <li><?php echo $produto['valor'] / 2 ?><br></li> -->
<!-- elevar a potencia com 2 valores -->
<!-- <li><?php echo $produto['valor'] ** 2 ?><br></li> -->
<!-- raiz quadradade cada valor de cada produto -->
<!-- <li><?php echo sqrt($produto['valor']) ?><br></li> -->
<?php endforeach; ?>
</ul>
<hr>
<?php if (isset($editando)) : ?>
<h2>Editando Produto</h2>
<?php else:?>
<h2>Adicionar Produto</h2>
<?php endif;?>
<?php if(isset($msg)): ?>
<p> <?php echo $msg ?> </p>
<?php endif; ?>
<form action="<?php echo (isset($editando) ? '/produto/salvar' : '/produto/adicionar'); ?>" method="POST">
<?php if(isset($editando)):?>
<input type="hidden" name="id" value="<?php echo $produtoEdit['id'] ?>">
<?php endif;?>
<input type="text" name="titulo" placeholder="Título"
value="<?php echo (isset($produtoEdit['titulo'])? $produtoEdit['titulo'] : ''); ?>"><!-- -->
<input type="text" name="descricao" placeholder="Descrição"
value="<?php echo (isset($produtoEdit['descricao'])? $produtoEdit['descricao'] : ''); ?>">
<input type="text" name="valor" placeholder="Valor R$"
value="<?php echo (isset($produtoEdit['valor'])? $produtoEdit['valor'] : ''); ?>">
<button type="button"><?php echo (isset($editando) ? 'Atualizar' : 'Adicionar'); ?></button>
<a href="/home">Cancelar</a>
</form>
<!-- <ul>
aqui a função foi chamada sem o echo, pois acima no return foi colocado o echo para melhorar o comando em si
<?php exibeUsuario() ?>
</ul> -->
<?php
function getProdutos(){
/*$dados = array(
["titulo"=>"PHP Básico","descricao"=>"Curso de PHP Básico","valor"=>"120.90"],
["titulo"=>"PHP com PDO","descricao"=>"Curso de com PDO","valor"=>"140.90"],
["titulo"=>"PHP OO","descricao"=>"Curso de PHP Orientado a Objetos","valor"=>"150.90"]
);*/
$conexao = getConexao();
$select = "select * from produtos";
$ret = $conexao->query($select);
$produtos = $ret->fetchAll();
return $produtos;
}
function buscaProdutos($busca){
$produtos = getProdutos();
$resultados = [];
foreach ($produtos as $produto) {
//$existe = in_array($busca, $produto);
$existe = in_array(strtolower($busca),array_map('strtolower', $produto));
if ($existe) {
array_push($resultados, $produto);
}
}
return $resultados;
}
function adicionarProdutos($dados){
$conexao = getConexao();
//return 0; msg para exibir msg de erro
$insert = "INSERT INTO produtos (titulo,descricao,valor) VALUES (:titulo,:descricao,:valor)";
$stmt = $conexao->prepare($insert);
$stmt->bindValue(':titulo',$dados['titulo']);
$stmt->bindValue(':descricao',$dados['descricao']);
$stmt->bindValue(':valor',$dados['valor']);
$stmt->execute();
return $conexao->lastInsertId();
}
function buscaProdutoId($id){
// var_dump("OK");exit; verificando se chegou até aqui
$conexao = getConexao();
$select = "select * from produtos where id=:id";
$stmt = $conexao->prepare($select);
$stmt->bindValue(':id',(int)$id);// forçando que o php apenas aceite numeros inteirosm(int)
$stmt->execute();
return $stmt->fetch(\PDO::FETCH_ASSOC);
/*
essa função fetch_assoc ela consegue trazer os dados associativos, ou seja
na ordem dos nomes das tabelas, como no nosso projeto
virão por titulo, descrição e valor, na sequência.
*/
}
function salvarProduto($dados){
$conexao = getConexao();
//return 0; msg para exibir msg de erro
$update = "UPDATE produtos SET titulo=:titulo, descricao=:descricao, valor=:valor WHERE id=:id";
$stmt = $conexao->prepare($update);
$stmt->bindValue(':titulo',$dados['titulo']);
$stmt->bindValue(':descricao',$dados['descricao']);
$stmt->bindValue(':valor',$dados['valor']);
$stmt->bindValue(':id',(int)$dados['id']);
$ret = $stmt->execute();
return $ret;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment