Ir ao conteúdo
  • Cadastre-se

PHP Como criar sistema de agendamento em PHP?


Posts recomendados

Olá pessoal, sou um completo iniciante em PHP e estou desenvolvendo um site responsivo que já funciona registro e login. Tudo muito simples, porém eu precisava de fazer um sistema de agendamento onde quando um escolher um horário, o outro não poder. Escolher mais. Por que é uma barbearia de agendamento on-line. Alguém tem noção de como faria? Juntamente com html e css que já tenho nível intermediário. Se poderem me dar norte ficarei feliz!

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • Moderador

@OIniciante Basicamente, tudo que você precisa fazer é na hora do agendamento consultar se já existe uma data já agendada. 

Tem N formas de fazer isso... por exemplo criando um calendário baseado no mês e dia e hora..  A partir daí... fazer uma verificação se existe o cadastro.. se existir, mostrar que já existe... senão, faz o cadastro..

 

Pode por exemplo no menu de agendamento, já informar quais dias e horarios disponíveis...   enfim..  boa sorte

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@DiF obrigado precisava dessa logica ainda estou aprendendo cada função etc. mas ja conseguindo fazer as coisas bem do básico. e uma informação minima que seja faz total diferença no meu aprendizado.. obrigado!

@devair1010

 

Primeira parte na index, fica registro. vou mostrar parte de login, e pagina que redreciona quando e autenticado o login. e bem bem simples, mas eu to aprendendo agora então pramim e muita coisa.. 

 

parte em php que vem do formulario

<?php

session_start();

if(isset($_POST['submit']) && !empty($_POST['e']) && !empty($_POST['s'])){

    include_once('db.php');

    $email = $_POST['e'];
    $senha = $_POST['s'];
   


    $sql = "SELECT * FROM users WHERE email = '$email' and senha = '$senha'";

    $result = $conexao->query($sql);

   
     if(mysqli_num_rows($result) < 1)
     {
        unset($_SESSION['email']);
        unset($_SESSION['senha']);
        header('Location: login.php');
        
       
     }
    
     else
     {
        $_SESSION['email'] = $email;
        $_SESSION['senha'] = $senha;
        header('Location: sistema.php');
     }

}
else
{

    header('Location : login.php');

}

?>

 

Parte dentro da pagina de login e agora só me falta, parte de agendamento pra quando um escolher um horario ficar vinculado com o email, e horario. e outra pessoa não poder marcar mesmo horario, podendo receber um aviso na tela de que horario indisponivel, ou sumir deixando só os disponiveis. a maneira que seja mas fácil.

<?php

session_start();


if((!isset($_SESSION['email']) == true) and (!isset($_SESSION['senha']) == true)){

    unset($_SESSION['email']);
    unset($_SESSION['senha']);
    header('Location: login.php');
}

 $logado = $_SESSION['email'];



?>


<!DOCTYPE html>
<html lang="en">
<head>

<style> 

h4{

font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
font-size: 15px;
color: white;
background-image: radial-gradient( circle 905.6px at 4.9% 7.9%,  rgba(218,0,0,1) 14.1%, rgba(168,2,144,1) 65%, rgba(102,2,110,1) 90% );
box-shadow: 1px 1px 1px 1px black;
border-radius: 3px;

}

 body{
 font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
 background-color: #FFFFFF;
background-image: linear-gradient(90deg, #FFFFFF 0%, #6284FF 50%, #FF0000 100%);

 }
 
 h1{

color: white;


}

.bem-vindo{

    margin:auto;
    top: 100px;
    position: relative;
    font-weight: bold;
    color: black;
    width: 100%;
    max-width: 300px;
    font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
    text-align: center;

}

.bem-vindo img{

    width: 60px;




}

.bem-vindo a{

text-decoration: none;
background: linear-gradient(180deg, rgba(2,0,36,1) 0%, rgba(255,255,255,1) 0%, rgba(0,212,255,1) 100%);
  border: none;
  color: black;
  width: 100px;
  padding: 10px 32px;
  border-radius: 10px;
  text-decoration: none;
  margin: 4px 2px;
  cursor: pointer;
  

}

hr{

border-color: black;
box-shadow: 2px 2px 2px 2px black;
width: 300px;


}


.menu{

    margin:auto;
    top: 100px;
    position: relative;
    font-weight: bold;
    color: black;
    width: 100%;
    max-width: 600px;
    font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
    text-align: center;

}

.menu a {

text-decoration: none;
background: linear-gradient(180deg, rgba(2,0,36,1) 0%, rgba(255,255,255,1) 0%, rgba(0,212,255,1) 100%);
  border: none;
  color: black;
  width: 70px;
  padding: 10px 32px;
  border-radius: 10px;
  text-decoration: none;
  cursor: pointer;

}
 

</style>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>



        <div class="bem-vindo">

        <img src="https://artpoin.com/wp-content/uploads/2019/11/barba.png" width="50">
    
    <h4> Olá Bem Vindo!!! <?php echo '' . $logado;?> </h4>
        

    <hr>
    <br>

        </div>

    <div class="menu">
         <a href="">Agendamento</a>
         <Br>
<Br><br>

         <a href="tel: +551194062052">Contato</a>
         <a href="#">Produtos</a>
         <br>
         <br>
         <br>
         <a href="sair.php">SAIR</a>



    </div>


</body>

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, OIniciante disse:

@DiF obrigado precisava dessa logica ainda estou aprendendo cada função etc. mas ja conseguindo fazer as coisas bem do básico. e uma informação minima que seja faz total diferença no meu aprendizado.. obrigado!

@devair1010

 

Primeira parte na index, fica registro. vou mostrar parte de login, e pagina que redreciona quando e autenticado o login. e bem bem simples, mas eu to aprendendo agora então pramim e muita coisa.. 

 

parte em php que vem do formulario

<?php

session_start();

if(isset($_POST['submit']) && !empty($_POST['e']) && !empty($_POST['s'])){

    include_once('db.php');

    $email = $_POST['e'];
    $senha = $_POST['s'];
   


    $sql = "SELECT * FROM users WHERE email = '$email' and senha = '$senha'";

    $result = $conexao->query($sql);

   
     if(mysqli_num_rows($result) < 1)
     {
        unset($_SESSION['email']);
        unset($_SESSION['senha']);
        header('Location: login.php');
        
       
     }
    
     else
     {
        $_SESSION['email'] = $email;
        $_SESSION['senha'] = $senha;
        header('Location: sistema.php');
     }

}
else
{

    header('Location : login.php');

}

?>

 

Parte dentro da pagina de login e agora só me falta, parte de agendamento pra quando um escolher um horario ficar vinculado com o email, e horario. e outra pessoa não poder marcar mesmo horario, podendo receber um aviso na tela de que horario indisponivel, ou sumir deixando só os disponiveis. a maneira que seja mas fácil.

<?php

session_start();


if((!isset($_SESSION['email']) == true) and (!isset($_SESSION['senha']) == true)){

    unset($_SESSION['email']);
    unset($_SESSION['senha']);
    header('Location: login.php');
}

 $logado = $_SESSION['email'];



?>


<!DOCTYPE html>
<html lang="en">
<head>

<style> 

h4{

font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
font-size: 15px;
color: white;
background-image: radial-gradient( circle 905.6px at 4.9% 7.9%,  rgba(218,0,0,1) 14.1%, rgba(168,2,144,1) 65%, rgba(102,2,110,1) 90% );
box-shadow: 1px 1px 1px 1px black;
border-radius: 3px;

}

 body{
 font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
 background-color: #FFFFFF;
background-image: linear-gradient(90deg, #FFFFFF 0%, #6284FF 50%, #FF0000 100%);

 }
 
 h1{

color: white;


}

.bem-vindo{

    margin:auto;
    top: 100px;
    position: relative;
    font-weight: bold;
    color: black;
    width: 100%;
    max-width: 300px;
    font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
    text-align: center;

}

.bem-vindo img{

    width: 60px;




}

.bem-vindo a{

text-decoration: none;
background: linear-gradient(180deg, rgba(2,0,36,1) 0%, rgba(255,255,255,1) 0%, rgba(0,212,255,1) 100%);
  border: none;
  color: black;
  width: 100px;
  padding: 10px 32px;
  border-radius: 10px;
  text-decoration: none;
  margin: 4px 2px;
  cursor: pointer;
  

}

hr{

border-color: black;
box-shadow: 2px 2px 2px 2px black;
width: 300px;


}


.menu{

    margin:auto;
    top: 100px;
    position: relative;
    font-weight: bold;
    color: black;
    width: 100%;
    max-width: 600px;
    font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
    text-align: center;

}

.menu a {

text-decoration: none;
background: linear-gradient(180deg, rgba(2,0,36,1) 0%, rgba(255,255,255,1) 0%, rgba(0,212,255,1) 100%);
  border: none;
  color: black;
  width: 70px;
  padding: 10px 32px;
  border-radius: 10px;
  text-decoration: none;
  cursor: pointer;

}
 

</style>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>



        <div class="bem-vindo">

        <img src="https://artpoin.com/wp-content/uploads/2019/11/barba.png" width="50">
    
    <h4> Olá Bem Vindo!!! <?php echo '' . $logado;?> </h4>
        

    <hr>
    <br>

        </div>

    <div class="menu">
         <a href="">Agendamento</a>
         <Br>
<Br><br>

         <a href="tel: +551194062052">Contato</a>
         <a href="#">Produtos</a>
         <br>
         <br>
         <br>
         <a href="sair.php">SAIR</a>



    </div>


</body>

 

 

fiz tambem uma pagina pra marcar horario so preciso entender como fazer agora.. para comparar os horarios com alguém que ja cadastrou atraves do email, cadastrado e colocar uma regra pra marcar de uma em uma hora.

<div class="test">

<img src="./imagens/homem.png" width="350" >

 </div>


<div class="menu">

<a href="sistema.php">  <img src="./imagens/ladodireito.png" width="50px">  </a>


<h3> Marque seu Horario </h3>

<?=" Hoje é " . date("d/m/Y h:i:s") ."<br>"  . ".<br>";?>

<hr>

<form action="" method="post">

<input type="datetime-local"  name="horario" required>

<input type="submit" value="Marcar">



</form>

<?php


$horario = isset($_POST['horario']) ? $_POST['horario'] : " horario não marcado";


echo $horario;


?>

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

@OIniciante

Não é bem assim que funciona,  rsrs  bem que seria bom se fosse simples assim.

 

Mas basicamente, o que você precisa fazer é quando submeter o formulário,  buscar na tabela do banco de dados e comparar. Mas antes disso, você precisa modelar seu banco de dados corretamente.

 

Vamos supor que você tem a seguinte estrutura:

 

usuario( adote sempre o email da pessoa como login, essa prática, faz com que a pessoa não esqueça o login dela)

 

Id   nome       email              senha
1     Fulano   [email protected]     123 
2     Beltrano [email protected]  321
3     Ciclano  [email protected]   456

 

horarioMarcado

ID ID_usuario  horarioMarcado
1       1      2023-02-10 16:00:00 

 

 

Basicamente essa tabela de horario marcado, recebe o campo ID_usuario, sendo como chave estrangeira da tabela usuario, no caso ali, o Fulano marcou o horario para as 4 da tarde.

 

Quando o Beltrano for marcar  o horário,   você tem opções....  Por exemplo antes, fazer uma verificação para remover o horário daquele dia,  ou depois, para informar que já tem esse horário marcado...    Se escolher fazer a primeira opção, você terá que montar manualmente um calendário...  Por isso,  a segunda opção acaba se tornando a escolha de muitas pessoas, por ser mais fácil.

 

Gosto muito de usar o plugin date time picker,  pois ele é bem clean e bonito e atende aos requisitos de informar hora por hora.

https://www.jqueryscript.net/time-clock/Clean-jQuery-Date-Time-Picker-Plugin-datetimepicker.html

 

Assim que você já tem o formulário para enviar a data e hora....

 

No PHP você compara assim:

 

$horario = $_POST["horario"];

include 'conexao.php';

$consulta =  mysqli_query($conexao, "SELECT horarioMarcado FROM horarioMarcado WHERE horarioMarcado = $horario");

$dado =  mysqli_fetch_object($consulta);

//se o $dado->horarioMarcado for diferente de zero
if($dado->horarioMarcado != 0):
   echo "Esse horário já está marcado, por favor escolha outro"

else:
   //faz aqui o processo de cadastro no banco de dados com o horário desejado

endif;

 

 

Veja bem, isso é apenas um exemplo, não copie, estude como ele deve ser implementado.  

 

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@DiF ola obrigado amigo por isso, você não sabe como ajuda!!, ainda não testei o que explicou mas agradeco muito.. o conteudo na internet pra quem começa do básico e bem difícil até porque quanto entramos em  foruns estilo stack, e dedicado a niveis intermediarios pra cima.. e videos no youtube são velhos e escassos, videos bons são pagos então fica bem difícil aprender do 0 mesmo eu agradeço todo tempo. consegui implementar o captcha, registro, login, da maneira basica e simples... se quiser acompanhar o projeto e aqui que hospedei numa hospedagem free.., http://barbeariawilinha.rf.gd vai ser a barbearia de um colega...

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!