Ir para conteúdo
Fórum Script Brasil
  • 0

Update com Sessão valida ou não usando IF


Ricardo Alves Soares

Pergunta

Olá pessoal,

Eu sou novato em PHP, ainda estou entendo as estruturas dele, estou evoluindo bem mas estou com a seguinte dúvida: 

Estou tentando fazer um update com os dados do usuário caso a sessão esteja valida, se a sessão não estiver válida (nesta páginas não há obrigatoriedade) ele fara o update com outros valores

Vou escrever primeiro em um portugues estruturado o que eu estou tentando

SE usuário estiver logado (dá um select com os dados da sessão) armazena as informações nas variáveis faz o update

SENÂO usa os dados das variáveis pre-estabelecidas e faz o update

Eis o código que escrevi

<?php
date_default_timezone_set("Brazil/East");

$conexao->query($sql);
$contasql = mysql_num_rows($sql);
$sqlnome = mysql_fetch_array($sql);

if($_SESSION['autenticado']['nome_usuario']){
$nome_usuario = $_SESSION['autenticado']['nome_usuario'];
$sql = mysql_query("SELECT * FROM clientes WHERE Login = '".$_SESSION['autenticado']['nome_usuario']."' ") or die(mysql_error());

$id_cliente    = $sql ['ID'];
$nome_cliente  = $sql ['Nome'];
$email_cliente = $sql ['email'];

$sql = "SELECT
            IF(data_leitura < DATE_SUB('". date("Y-m-d H:i:s") ."', INTERVAL 1 MINUTE ),'SIM', 'não') AS gravar
          FROM  `tb_historico`
          WHERE cod_login = '{$id_cliente}'
          AND id_historia = '{$id_historia}'
          ORDER BY data_leitura DESC
          LIMIT 0 , 1";

  $result = mysql_query($sql);
  $gravar = mysql_num_rows($result) == 0;

  if(!$gravar){
    $result = mysql_fetch_array($result);
    $gravar = $result['gravar'] == 'SIM';
  }

  if( $gravar ){
    $sql = "INSERT INTO `encantor`.`tb_historico_acessos`(
      `id`,
      `cod_login`,
      `nome_cliente`,
      `email_cliente`,
      `id_historia`,
      `nome_historia`,
      `data_leitura`
    ) VALUES (
      '',
      '".$id_cliente."',
      '".$nome_cliente."',
      '".$email_cliente."',
      '".$id_historia."',
      '".$titulo_hq."',
      '".date("Y-m-d H:i:s")."')";

    $conexao->query($sql);
  }

}
else
{
    $id_cliente    = '1';
    $nome_cliente  = 'Livre';
    $email_cliente = 'Leitura Livre';
$sql = "SELECT
            IF(data_leitura < DATE_SUB('". date("Y-m-d H:i:s") ."', INTERVAL 1 MINUTE ),'SIM', 'não') AS gravar
          FROM  `tb_historico_acessos`
          WHERE cod_login = '{$id_cliente}'
          AND id_historia = '{$id_historia}'
          ORDER BY data_leitura DESC
          LIMIT 0 , 1";

  $result = mysql_query($sql);
  $gravar = mysql_num_rows($result) == 0;

  if(!$gravar){
    $result = mysql_fetch_array($result);
    $gravar = $result['gravar'] == 'SIM';
  }

  if( $gravar ){
    $sql = "INSERT INTO `encantor`.`tb_historico_acessos`(
      `id`,
      `cod_login`,
      `nome_cliente`,
      `email_cliente`,
      `id_historia`,
      `nome_historia`,
      `data_leitura`
    ) VALUES (
      '',
      '".$id_cliente."',
      '".$nome_cliente."',
      '".$email_cliente."',
      '".$id_historia."',
      '".$titulo_hq."',
      '".date("Y-m-d H:i:s")."')";

    $conexao->query($sql);
  }
}
  // Encerra conexao
  mysql_close();
?>
 

Agradeço desde já a ajuda.

 

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Seu código possui alguns problemas:

1. Você usa $sql em query() antes de criar a variável $sql

2. Você faz um if com !$gravar (ou seja, verifica se não há resultados) e dentro do bloco usa mysql_fetch_array. Só faz sentido usar fetch_* se existir resultados

3. Depois você faz um if com $gravar. Na verdade, bastaria um else no bloco que citei no item 2

 

Logo de cara, foram esses erros de lógica que percebi. Lembre-se de programar sempre com todas as mensagens de erro habilitadas.

Este Tutorial Sobre Sistema de Login deve ajudar você

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5  e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/


 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...