sábado, 19 de agosto de 2023

Verificando validade de produtos com 'case when'

 Hoje vamos conhecer uma utilidade muito interessante para a expressão “case when” em bancos de dados. Neste “post” vamos verificar a validade de produtos com o MySQL. Siga os passos:

 1.       Criar tabela de produtos:

 CREATE TABLE `produtos` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `produto` VARCHAR(50) NOT NULL,
    `validade` DATE NOT NULL,
    PRIMARY KEY (`id`)
);

2.       Cadastre alguns produtos; deixe alguns com a data de validade anterior ao dia atual:


Agora utilize a seguinte SQL para relacionar os produtos vencidos:

 SELECT produto,
case
when
validade > CURDATE() then 'produto válido'
when validade = CURDATE() THEN 'vencendo hoje'
when validade < CURDATE() then 'atenção - VENCIDO'
END
situacao,
validade
FROM produtos;

 Ou seja, SE a data de validade for maior que (>) a data atual (função CURDATE()), o banco de dados imprimirá a frase 'produto válido'; se igual, 'vencendo hoje'; e, claro, se a data de validade for inferior (<) à data de hoje será impressa a expressão 'atenção - VENCIDO'; a esta coluna dei o nome de “situacao". Veja o resultado:

É isso aí. Por hoje é só, pessoal.

 

quarta-feira, 2 de agosto de 2023

Saiba quem participou de eventos com MySQL e a função ‘group_concat’

 Uma função muito útil do MySQL é a “group_concat”, que concatena várias linhas em um só campo. Neste “post” vamos colocá-la em prática para verificar quais foram os participantes de determinados eventos.

O primeiro passo é ter uma tabela com os participantes. Use o código abaixo para criar a sua (neste “post”, a tabela se chamará “alunos”):

 CREATE TABLE `alunos` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(50) NOT NULL,
PRIMARY
KEY (`id`)
);

 Agora insira alguns nomes; a minha tabela ficou assim (recomendo que sejam vários e observe a ordem):

 


 Agora vamos criar a tabela de cursos:

 CREATE TABLE `cursos` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`curso` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);

 Neste “post”, vamos inserir apenas quatro cursos:


 Para relacionar as duas tabelas, vamos agora criar uma terceira, que chamaremos de cursos_alunos; repare que, além da coluna de chave primária (id), também serão criadas duas colunas, sendo uma para os “ids” dos cursos e outra para os “ids” dos alunos:

 CREATE TABLE `cursos_alunos` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`idcurso` INT(10) NOT NULL,
`idAluno` INT(10) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);

 


Agora já podemos criar a consulta que nos exibirá os cursos e os respectivos alunos que os frequentaram:

 select cursos.curso, group_concat(" ", alunos.nome) alunos
from cursos
INNER JOIN
cursos_alunos
on
cursos_alunos.idcurso = cursos.id
INNER Join
alunos
on
cursos_alunos.idAluno = alunos.id
group by cursos.curso;

Observe que os alunos “Tite” e “Vanderlei” frequentaram dois cursos: o de PHP e o de Java; o que está sendo exibido corretamente.

Por hoje é só, pessoal.

 

quarta-feira, 5 de julho de 2023

Agenda PHP e MySQLi II – busca por mês

 Olá. Conforme o “post” anterior, veremos agora como incluir na agenda uma busca por mês. É bem simples; basta trocar o código anterior pelo seguinte:

 <!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Agenda</title>
</head>

<body>

<p>Bom dia! Hoje &eacute;:
<?php
date_default_timezone_set('America/Sao_Paulo');
echo date('d/m/Y')."</p>";

// conexão banco de dados

$query = "select * from agenda where date(dia) = curdate() order by horario";
$sql=mysqli_query($mysqli, $query);

$resultados = mysqli_num_rows($sql);
if($resultados >= 1){
echo "Seus compromissos para hoje são:"."<p>";

while($reg = mysqli_fetch_array($sql))
   {
    echo $reg['compromisso']." - ";
    echo date('d/m/Y', strtotime($reg['dia']))." - ";
    echo date('H:i', strtotime($reg['horario']))."<br>";
   }
}
else
{
echo "vc não tem compromissos hoje";
}
?>

<h4>Consulte os compromissos por m&ecirc;s:</h4>
<form id="form1" name="form1" method="post" action="">
  <label>
  <select name="meses" id="meses">
    <option value="00">selecione</option>
    <option value="01">janeiro</option>
    <option value="02">fevereiro</option>
    <option value="03">março</option>
    <option value="04">abril</option>
    <option value="05">maio</option>
    <option value="06">junho</option>
    <option value="07">julho</option>
    <option value="08">agosto</option>
    <option value="09">setembro</option>
    <option value="10">outubro</option>
    <option value="11">novembro</option>
    <option value="12">dezembro</option>
  </select>
  </label>
  <label>
  <input name="buscaMes" type="submit" id="buscaMes" value="Consultar">
  </label>
</form>

<?php

if(isset($_POST['buscaMes'])){

$meses = $_POST['meses'];

if($meses == 00){
echo "<br>selecione um mes";
}
else
{

$sql = "SELECT * FROM agenda WHERE month(dia) = $meses order by dia";
$query = mysqli_query($mysqli, $sql);
$qtd = mysqli_num_rows($query);

    if($qtd > 0){
   
echo "<br>compromissos localizados:<br><br>";
   
    while($linha = mysqli_fetch_assoc($query)){
         
         echo $linha['compromisso']." - ";
         echo date('d/m/Y', strtotime($linha['dia']))." - ";
         $horarioLocalizado = $linha['horario'];
               if($horarioLocalizado == '00:00:00'){
                echo "horario indefinido<br>";}
               else
          {
          echo date('H:i', strtotime($horarioLocalizado))."<br>";
          }
          
     }
         }else{
    echo "<br>Não foram encontrados compromissos.";
    } } }?>

</body>
</html>

Veja que já está incluído um menu “select option” com todos os meses. Agora lembre-se de corrigir a conexão. Salve e teste no navegador; a busca já deverá estar funcionando corretamente:

 



 

Por hoje é só, pessoal.

quinta-feira, 22 de junho de 2023

Agenda simples em PHP e MySQLi

 Hoje veremos como criar uma agenda de compromissos em PHP, com o banco de dados MySQL. O primeiro passo é criar uma tabela no MySQL. Para facilitar, vc pode usar esse “script”: