Ir ao conteúdo
  • Cadastre-se

PHP Cadastrar Usuário no BD


Posts recomendados

Olá pessoal, estou implementando um sistema utilizando Bootstrap php+MYSQLI e estou enfrentando um erro que já tentei de um tudo resolver mas não estou conseqguindo...

Eis a classe cadastra usuário:

<?php
       include_once("segurança.php");
    ?>
    <!DOCTYPE html>
    <html lang="pt-br">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="Página Administrativa">
        <meta name="author" content="Cesar">
        <link rel="icon" href="imagens/favicon.ico">

        <title>Cadastrar Usuário</title>
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <link href="css/bootstrap-theme.min.css" rel="stylesheet">
        <link href="css/theme.css" rel="stylesheet">
        <script src="js/ie-emulation-modes-warning.js"></script>
      </head>

      <body role="document">
            <?php
                include_once("menu_admin.php");
            ?>
            <div class="container theme-showcase" role="main">
              <div class="page-header">
                 <h1>Cadastrar Usuário</h1>
              </div>
              <div class="row">
                <div class="col-md-12">
                
                <form class="form-horizontal" method="POST" action="processa/proc_cad_usuario.php">
                            <!--Nome-->
                        <div class="form-group">
                        <label for="inputEmail3" class="col-sm-2 control-label">Nome:</label>
                        <div class="col-sm-10">
                          <input type="text" class="form-control" name="usuarioNome" placeholder="Nome Completo"> <br>
                        </div>
                        
                            <!--Email-->
                          <div class="form-group">
                            <label for="inputEmail3" class="col-sm-2 control-label">E-mail:</label>
                            <div class="col-sm-10">
                              <input type="email" class="form-control" name="email" placeholder="E-mail"> <br>
                            </div>
                          </div>
                  
                          <!--Login-->
                          <div class="form-group">
                            <label for="inputEmail3" class="col-sm-2 control-label">Login:</label>
                            <div class="col-sm-10">
                              <input type="text" class="form-control" name="login" placeholder="login"> <br>
                            </div>
                            
                            <!--Senha-->
                          <div class="form-group">
                            <label for="inputPassword3" class="col-sm-2 control-label">Senha:</label>
                            <div class="col-sm-10">
                              <input type="password" class="form-control" name="senha" placeholder="Senha"> <br>
                            </div>
                          </div>
                      
                          <!--Nível de acesso-->
                          <div class="form-group">
                            <label for="inputPassword3" class="col-sm-2 control-label">Nível de Acesso:</label>
                            <div class="col-sm-10">
                              <select class="form-control" name="nivel_de_acesso">
                                <option value="1">Administrativo</option>
                                <option value="2">Usuário</option>
                                <option value="3">Doador</option>
                                <option value="4">Médico</option>
                                <option value="5">Farmácia</option>
                              </select>
                            </div>
                          </div>
              
                          <div class="form-group">
                            <div class="col-sm-offset-2 col-sm-10">
                              
                            </div>
                          </div>
                          <div class="form-group">
                            <div class="col-sm-offset-2 col-sm-10">
                              <button type="submit" class="btn btn-success">Cadastrar</button>
                            </div>
                          </div>
        </form>
                </div>
            </div> <!-- /container -->

 

 

 

AQUI A CLASSE PROCESSA USUÁRIO: ESTA APRESENTA O ERRO-> ÍNDICE INDEFINIDO NAS VARIÁVEIS  

(Agradeço muito se alguém puder me ajudar, pois se trata de um projeto para o meu tcc. Que ainda precisa ser validado.)

<?php
session_start();
include_once("../segurança.php");
include_once("../conexao.php");
    
$nome= $_POST['nome'];
$email= $_POST['email'];
$login= $_POST['login'];
$senha= $_POST['senha'];
$nivel_acesso_id= $_POST['nivel_acesso_id'];

$conectar = mysqli_connect($hostname, $user, $password, $database);
$result = mysqli_query($conectar,"SELECT COUNT(*) FROM usuarios WHERE email = '$email'");
$row = mysqli_fetch_row($result);
if ($row[0] > 0) {
    echo "E-mail já existente";
} else {
    $conectar ("INSERT INTO usuarios(nome, email, login, senha, usuario, nivel_acesso_id) 
    VALUES ('$nome','$email', '$login','$senha', '$nivel_acesso_id')");
    echo "Cadastro realizado com sucesso!!"; 
}

    /*
    $conectar = mysqli_connect($hostname, $user, $password, $database);
    $result = mysqli_query ($conectar, "INSERT INTO usuarios(nome, email, login, senha, usuario, nivel_acesso_id) 
    VALUES ('$nome','$email', '$login','$senha', '$nivel_acesso_id')");
    $resultado = mysqli_query($conectar, $result);
    mysqli_close($conectar); */
    //echo $row['nome'];
?>
<!DOCTYPE html> 
    <html lang="pt-br">
      <head>
        <meta charset="utf-8">
      </head>

  <body>
      
</body>
</html>

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Lemaria Olá, seja bem vinda em nosso Clube do Hardware.

 

Bueno, o primeiro erro que vejo é que você definiu o atributo name do campo nome como "usuarioNome", mas recebe  "nome"  no php. 

 

O segundo erro que vejo é que você busca se existe um e-mail, contando os registros. count(*) nesse caso é errado.

 

E o terceiro erro, é que você usou a variável $conectar como se fosse uma função de insert. Não sei se você criou uma função para inserir onde o parâmetro é a própria instrução SQL.

 

E um quarto e último erro( que não é bem um erro), você colocou tags do html em um arquivo php destinado apenas para processar os dados. recomendo remover.

 

 Portanto, eu faria da seguinte maneira:

Arquivo  proc_cad_usuario.php

<?php
session_start();
include_once("../segurança.php");
include_once("../conexao.php");
    
$nome            = $_POST["usuarioNome"];
$email           = $_POST["email"];
$login           = $_POST["login"];
$senha           = $_POST["senha"];
$nivel_acesso_id = $_POST["nivel_acesso_id"];


$conectar = mysqli_connect($hostname, $user, $password, $database);

//busca o email que foi digitado para ver se já existe.
$result = mysqli_query($conectar,"SELECT email FROM usuarios WHERE email = '$email'");

//pega o número de linhas encontradas
$row = mysqli_num_rows($result);

//testa se o número de linhas for maior que zero. se sim, é porque existe.
if ($row > 0) :
    echo "E-mail já existente";
else:
    $insere = mysqli_query($conectar, "INSERT INTO usuarios(nome, email, login, senha, usuario, nivel_acesso_id) 
                                       VALUES ('$nome','$email', '$login','$senha', '$nivel_acesso_id')");

    //testa se a instrução de insert foi efetuada
    if($insere):
          echo "Cadastro realizado com sucesso!!"; 
    else:
          echo "Cadastro Não realizado. Houve um erro"; 
    endif;
endif;

   
?>

Ainda você tem opção de usar o UNIQUE  na estrutura do campo email. assim você garante que apenas 1 registro terá aquele e-mail.

 

Didática do unique: https://www.w3schools.com/sql/sql_unique.asp

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...