sistema/painel/paginas/analises/salvar.php
Endpoint que persiste análise capilar e processa upload da foto.
Endpoint que persiste análise capilar e processa upload da foto.
Dependências observadas:
Conexão PDO / configurações globaisUpload de arquivosBanco de dados
Endpoint AJAX de persistência
Análises
122
| Linha | Código | Explicação técnica |
|---|---|---|
| 1 | <?php | Abre um bloco PHP. A partir daqui o arquivo passa a executar lógica no servidor. |
| 2 | require_once("../../../conexao.php"); | Importa `../../../conexao.php` para disponibilizar conexão, sessão, funções utilitárias ou validações necessárias ao restante do fluxo. |
| 3 | $tabela = 'analise_capilar'; | Centraliza o nome da tabela `analise_capilar` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo. |
| 4 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 5 | $id = @$_POST['id']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 6 | $cliente = @$_POST['cliente']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 7 | $cor_detectada = @$_POST['cor_detectada']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 8 | $densidade_detectada = @$_POST['densidade_detectada']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 9 | $grau_falha = @$_POST['grau_falha']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 10 | $sugestao_protese = @$_POST['sugestao_protese']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 11 | $observacoes = @$_POST['observacoes']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 12 | $data_analise = @$_POST['data_analise']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 13 | $foto_atual = @$_POST['foto_atual']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 14 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 15 | if($cliente == ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 16 | echo 'Selecione um Cliente'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 17 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 18 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 19 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 20 | if($data_analise == ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 21 | echo 'Informe a Data da Análise'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 22 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 23 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 24 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 25 | $nome_img = $foto_atual; | Define a variável `$nome_img`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 26 | $pasta = __DIR__ . '/../../images/analises/'; | Define a variável `$pasta`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 27 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 28 | if(isset($_FILES['foto']) && @$_FILES['foto']['name'] != ''){ | Trabalha com dados vindos da requisição HTTP, sessão ou upload. Esse é um ponto sensível de validação. |
| 29 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 30 | if(!is_dir($pasta)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 31 | echo 'Pasta de imagens da análise não encontrada'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 32 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 33 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 34 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 35 | if(!is_writable($pasta)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 36 | echo 'Pasta de imagens da análise sem permissão de gravação'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 37 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 38 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 39 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 40 | if(!is_uploaded_file($_FILES['foto']['tmp_name'])){ | Trabalha com dados vindos da requisição HTTP, sessão ou upload. Esse é um ponto sensível de validação. |
| 41 | echo 'Arquivo de imagem inválido'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 42 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 43 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 44 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 45 | $foto = $_FILES['foto']['name']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 46 | $extensao = strtolower(pathinfo($foto, PATHINFO_EXTENSION)); | Define a variável `$extensao`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 47 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 48 | if($extensao != 'png' && $extensao != 'jpg' && $extensao != 'jpeg' && $extensao != 'webp'){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 49 | echo 'Formato de imagem não permitido'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 50 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 51 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 52 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 53 | $nome_img = md5(uniqid()) . "." . $extensao; | Define a variável `$nome_img`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 54 | $caminho = $pasta . $nome_img; | Define a variável `$caminho`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 55 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 56 | $upload = move_uploaded_file($_FILES['foto']['tmp_name'], $caminho); | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 57 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 58 | if($upload == false){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 59 | echo 'Erro ao salvar a foto da análise'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 60 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 61 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 62 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 63 | if(!file_exists($caminho)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 64 | echo 'Arquivo da foto da análise não foi gravado'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 65 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 66 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 67 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 68 | if($foto_atual != ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 69 | $caminho_antigo = $pasta . $foto_atual; | Define a variável `$caminho_antigo`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 70 | if(file_exists($caminho_antigo)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 71 | @unlink($caminho_antigo); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 72 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 73 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 74 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 75 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 76 | $query = $pdo->prepare("SELECT * FROM $tabela WHERE cliente = :cliente AND data_analise = :data_analise"); | Centraliza o nome da tabela `tabela` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo. |
| 77 | $query->bindValue(":cliente", $cliente); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 78 | $query->bindValue(":data_analise", $data_analise); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 79 | $query->execute(); | Executa a query preparada no banco de dados. |
| 80 | $res = $query->fetchAll(PDO::FETCH_ASSOC); | Lê o resultado retornado pelo banco e o converte para uma estrutura PHP que o restante do arquivo consegue consumir. |
| 81 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 82 | if(@count($res) > 0 and $id != $res[0]['id']){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 83 | echo 'Registro já Cadastrado, escolha outro!!'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 84 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 85 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 86 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 87 | if($id == ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 88 | $query = $pdo->prepare("INSERT INTO $tabela SET | Centraliza o nome da tabela `tabela` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo. |
| 89 | cliente = :cliente, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 90 | foto = :foto, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 91 | cor_detectada = :cor_detectada, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 92 | densidade_detectada = :densidade_detectada, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 93 | grau_falha = :grau_falha, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 94 | sugestao_protese = :sugestao_protese, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 95 | observacoes = :observacoes, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 96 | data_analise = :data_analise"); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 97 | }else{ | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 98 | $query = $pdo->prepare("UPDATE $tabela SET | Centraliza o nome da tabela `tabela` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo. |
| 99 | cliente = :cliente, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 100 | foto = :foto, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 101 | cor_detectada = :cor_detectada, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 102 | densidade_detectada = :densidade_detectada, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 103 | grau_falha = :grau_falha, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 104 | sugestao_protese = :sugestao_protese, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 105 | observacoes = :observacoes, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 106 | data_analise = :data_analise | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 107 | WHERE id = :id"); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 108 | $query->bindValue(":id", $id); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 109 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 110 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 111 | $query->bindValue(":cliente", $cliente); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 112 | $query->bindValue(":foto", $nome_img); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 113 | $query->bindValue(":cor_detectada", $cor_detectada); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 114 | $query->bindValue(":densidade_detectada", $densidade_detectada); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 115 | $query->bindValue(":grau_falha", $grau_falha); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 116 | $query->bindValue(":sugestao_protese", $sugestao_protese); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 117 | $query->bindValue(":observacoes", $observacoes); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 118 | $query->bindValue(":data_analise", $data_analise); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 119 | $query->execute(); | Executa a query preparada no banco de dados. |
| 120 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 121 | echo 'Salvo com Sucesso'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 122 | ?> | Fecha o bloco PHP atual para voltar à saída HTML. |