Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Higon

Erro com PHP e o banco de dados

Recommended Posts

Fala pessoal blz?

Estou tendo um problema com relação ao PHP e o banco de dados, pois logo após a tela de login, eu precisaria novamente do usuario e o sexo da pessoa para comparar no comando do banco de dados

O que eu quero fazer é simples: se a pessoa(que já é cadastrada no meu banco) fizer o login e for mulher, aparecera uma mensagem "SEJA BEM VINDA (e o nome dela)" , se for homem: "SEJA BEM VINDO (nome do cidadão)" e se for outro: "SEJA BEM VINDO(A) (novamente o nome)".

Está dando o seguinte erro: Notice: Undefined variable: usuario in C:\xampp\htdocs\banco\cliente\home.php on line 17

Meu código da página:

<!DOCTYPE html><html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Home</title>
<link href="..\modelo\modelo.css" rel="stylesheet">
</head>
<body>
<?php


        //CONECTANDO COM O BANCO
            $conexao = mysql_connect("localhost", "root", "");
            mysql_select_db("banco",$conexao);


        //FIM DA CONEXÃO


            $sql = "select sexo,usuario from cliente where usuario = '$usuario'";
            $result=mysql_query($sql,$conexao) or die (mysql_error());
$linha = mysql_fetch_array($result);


            $sexo=$linha['sexo'];
            $usuario=$linha['usuario'];




if ($sexo="Mulher"){
echo "<center>SEJA BEM VINDA .$usuario </center>";


}else if($sexo="Homem"){


echo "<center>SEJA BEM VINDO .$usuario </center>";


}else if($sexo="outro"){


echo "<center>SEJA BEM VINDO(a) .$usuario </center>";


}
?>


<div class="menu-container">
    <ul class="menu clearfix">


        <li><a href="entrarcliente.php">sair</a> 
            <!-- Nível 1 -->
</ul>
</div>
</body>
</html>
*Obs: Sou novo na area pode ser que tenha uns absurdos hehehe, obr.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai mano blz ?

Eu também sou novo na programação, mas vai uma dica que ajuda muito aqui no fórum, coloca seu código dentro das aspas dupla que tem nessa barra de ferramenta <> assim fica melhor e ajuda na hora de ler, isso ajuda também quem for te ajudar, eu postava muito post assim e ficava difícil de interpretar o código, ai me deram essa dica só estou passando adiante. olha o exemplo como fica.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Home</title>
<link href="..\modelo\modelo.css" rel="stylesheet">
</head>
<body>
<?php
 
        //CONECTANDO COM O BANCO
            $conexao = mysql_connect("localhost", "root", "");
            mysql_select_db("banco",$conexao);
 
        //FIM DA CONEXÃO
 
            $sql = "select sexo,usuario from cliente where usuario = '$usuario'";
            $result=mysql_query($sql,$conexao) or die (mysql_error());
            $linha = mysql_fetch_array($result);
 
            $sexo=$linha['sexo'];
            $usuario=$linha['usuario'];
 
 
if ($sexo="Mulher"){
echo "<center>SEJA BEM VINDA .$usuario </center>";
 
}else if($sexo="Homem"){
 
echo "<center>SEJA BEM VINDO .$usuario </center>";
 
}else if($sexo="outro"){
 
echo "<center>SEJA BEM VINDO(a) .$usuario </center>";
 
}
?>
 
<div class="menu-container">
    <ul class="menu clearfix">
 
        <li><a href="entrarcliente.php">sair</a> 
            <!-- Nível 1 -->
</ul>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está aqui:

            $sql = "select sexo,usuario from cliente where usuario = '$usuario'";

Você não definiu qual é o valor da variável $usuario,logo ela não existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse formulário está sendo chamado de alguma outra pagina? Como disse o colega, está faltando definir o valor da variável $usuario.

Por ex:

$usuario = "joao";
$sql = "select sexo,usuario from cliente where usuario = '$usuario'";

ou, quando vem de outro formulário passando o valor via POST:

$usuario = $_POST['usuario'];
$sql = "select sexo,usuario from cliente where usuario = '$usuario'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai mano blz ?

Eu também sou novo na programação, mas vai uma dica que ajuda muito aqui no fórum, coloca seu código dentro das aspas dupla que tem nessa barra de ferramenta <> assim fica melhor e ajuda na hora de ler, isso ajuda também quem for te ajudar, eu postava muito post assim e ficava difícil de interpretar o código, ai me deram essa dica só estou passando adiante. olha o exemplo como fica.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Home</title>
<link href="..\modelo\modelo.css" rel="stylesheet">
</head>
<body>
<?php
 
        //CONECTANDO COM O BANCO
            $conexao = mysql_connect("localhost", "root", "");
            mysql_select_db("banco",$conexao);
 
        //FIM DA CONEXÃO
 
            $sql = "select sexo,usuario from cliente where usuario = '$usuario'";
            $result=mysql_query($sql,$conexao) or die (mysql_error());
            $linha = mysql_fetch_array($result);
 
            $sexo=$linha['sexo'];
            $usuario=$linha['usuario'];
 
 
if ($sexo="Mulher"){
echo "<center>SEJA BEM VINDA .$usuario </center>";
 
}else if($sexo="Homem"){
 
echo "<center>SEJA BEM VINDO .$usuario </center>";
 
}else if($sexo="outro"){
 
echo "<center>SEJA BEM VINDO(a) .$usuario </center>";
 
}
?>
 
<div class="menu-container">
    <ul class="menu clearfix">
 
        <li><a href="entrarcliente.php">sair</a> 
            <!-- Nível 1 -->
</ul>
</div>
</body>
</html>

vlw pela dica man, obr!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blz, realmente o erro é sobre não ter um valor definido na variavel, o problema é que eu não sei como pegar da pagina anterior o valor que foi digitado pelo o usuario.

Pagina anterior:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Verifica</title>
<link rel="stylesheet" href="">
</head>
<body>
<?php


    //iniciar a sessao
    session_start();


    //verificar se os dados vieram de um POST
    if ($_POST) {
        //conectar no banco de dados - incluir o arquivo do banco
        include "conecta.php";
        //recuperar a variaveis vindas do formulario
        $usuario = trim($_POST['usuario']);
        $senha = trim($_POST['senha']);
        //caso o usuario deixe espaços em branco, o trim retira espaços em branco


        // para validar os campos em branco. "A tal da criação de condições!"
        if (empty($usuario)) {
            //se o usuário estiver em branco exibe esta mensagem: "preencha o usuário"
            echo "<script>alert('Preencha o Usuário');history.back();</script>";
        }
        else if (empty($senha)) {
            //se a senha estiver em branco  exibe esta mensagem: "Preencha o campo senha"
            echo "<script>alert('Preencha o campo senha');history.back();</script>";
        }
        else {
            //se os campos estiverem preenchidos  - valida usuario
            /*comando sql - consulta para verificar se o
            usuario existe no banco */
            $sql = "select * from cliente where usuario = '$usuario' limit 1";
            //executar e guardar o resultado em uma variavel
            $resultado = mysql_query($sql);
            //separar os resultados
            $linha = mysql_fetch_array($resultado);
            $usuario2 = $linha['usuario'];
            $senha2 = $linha['senha'];
            //criptografar senha
            $criptografar = md5($senha);
            //verificar se o usuário existe
            if (empty($usuario2)) {
                echo "<script>alert('Usuário nao existe');history.back();</script>";
            } else if ($senha != $senha2) {
                //se a senha digitada for diferente da senha do banco
                echo "<script>alert('Senha inválida');history.back();</script>";
            } else {
                //se existir gravar os dados na sessao e enviar
                //para a proxima pagina - home.php
                $_SESSION['usuario'] = array("idcliente"=>$linha["idcliente"],
                                                "nome"=>$linha["nome"],
                                                "usuario"=>$linha["usuario"]);
                //redirecionar para o arquivo home.php
                header("Location:home.php");


            }


        }
        // se tiver com o usuário e a senha erradas exibe esta mensagem: Requisicao invalida!
    } else {
        echo "Requisicao invalida!";
        exit;
    }
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que se costuma fazer é utilizar uma variável de sessão para saber que utilizador fez login.

Algo assim:

<?php
    session_start();
    $username = isset($_SESSION['username']) ? $_SESSION['username'] : null;
    if (is_null($username) || empty($username))
    {
        header("Location: login.php");
        exit;
    }
    else
    {
      //utilizador está autenticado.
    }

Na página de login (se estiveres uma), terias algo assim:

<?php
  if ($_POST)
  {
      if (isset($_POST['username']) && (!empty($_POST['username'])) && (isset($_POST['password'])) && (!empty($_POST['password'])))
      {
          //verificar dados inseridos com os existentes na tabela
          //Se coincidirem, guardar o nome de utilizador na variável de sessão
          $_SESSION['username'] = $_POST['username'];
      }
  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.