mm_edilson Postado Março 15, 2023 Denunciar Share Postado Março 15, 2023 Amigos, quebrando a cabeça pra encontrar o erro. Tenho uma pasta "photos" para onde deve subir a imagem da logo. O arquivo php que faz o update precisa pegar a imagem de um input image, mudar o nome, criar o caminho para ela, gravar no BD, e subir a imagem para a pasta. Ele faz tudo, menos subir a imagem. Alguém poderia dar uma força? ... <input type="hidden" class="logo" name="logo" value="<?php echo $row_igreja['Logo']; ?>"> <?php $logo_igreja = $row_igreja['Logo']; $logo = $logo_igreja; ?> <input id="selecao-arquivo" type="file" name="flImage" accept="image/*"> <div class="logo" id="foto_logo" name="foto_logo"><img id="imgPhoto" src="<?php echo $logo ?>"</img> <script type="text/javascript"> foto_logo = document.getElementById('selecao-arquivo'); foto_logo.addEventListener('change', function(e) { showThumbnail(this.files);}) function showThumbnail(files) { if (files && files[0]) { reader = new FileReader(); reader.onload = function (e) { imgPhoto.src = e.target.result;} reader.readAsDataURL(files[0]);}} </script> </div> <label class="selecao-arquivo" for='selecao-arquivo'>Selecionar Imagem »</label> <input class="btn_edit" type="submit" name="salvar" value="SALVAR" onclick="<?php echo $confirma_edicao?>"> <?php if(!empty($_POST)){ if (!empty($_FILES['flImage']['name'])){ $arquivo_tmp = $_FILES[ 'flImage' ][ 'tmp_name' ]; $nome_imagem = $_FILES[ 'flImage' ][ 'name' ]; $extensao = pathinfo ( $nome_imagem, PATHINFO_EXTENSION ); $extensao = strtolower ( $extensao ); strstr ( '.jpg;.jpeg;.gif;.png', $extensao ); $novoNome = "logo_igreja" . '.' . $extensao; $destino = 'photos/' . $novoNome; @move_uploaded_file( $arquivo_tmp, $destino ); $logo_atual = "http://www.sgi.dev.br/paginas/" . $destino; }else{ $logo_atual = $_POST['logo']; } $id = $_POST['id']; $nome = $_POST['nome']; $tipo = $_POST['tipo']; $end = $_POST['rua']; $nm = $_POST['numero']; $comp =$_POST['complem']; $bairro = $_POST['bairro']; $cid = $_POST['cidade']; $uf = $_POST['uf']; $cep = $_POST['cep']; $tel = $_POST['tel']; $tel2 = $_POST['tel2']; $email = $_POST['email']; $site = $_POST['site']; $razsoc = $_POST['razsoc']; $cnpj = $_POST['cnpj']; $obs = $_POST['obs']; $logo = $logo_atual; $dtorg = $_POST["dtorg"]; date_default_timezone_set('America/Sao_Paulo'); $ultimaatualiz = date('Y-m-d'); $sql = "UPDATE CadIgreja SET Nome=?,tipo=?,EnderecoRua=?,Num=?,Compl=?,Bairro=?,Cidade=?,UF=?,CEP=?,Tel=?,Tel2=?,Email=?,Site=?,RazSoc=?,CNPJ=?,Obs=?,Logo=?,DtOrg=?,UltimaAtualiz=? WHERE IdIgreja=?"; if($conn->prepare($sql)->execute([$nome,$tipo,$end,$nm,$comp,$bairro,$cid,$uf,$cep,$tel,$tel2,$email,$site,$razsoc,$cnpj,$obs,$logo,$dtorg,$ultimaatualiz,$id])){ echo '<script> alert ("Registro atualizado com sucesso!"); </script>'; } else { echo '<script> alert ("Erro! Não foi possível atualizar o registro."); location.href=("painel.php?igreja_editar")</script>'; } } else {} ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado Março 15, 2023 Denunciar Share Postado Março 15, 2023 Geralmente o comando para selecionar o arquivo vem dentro de um esquema assim: <form> <input type=file> </form> e pelo seu código não dá para saber onde começa e onde termina o formulário. Tem jeito de passar o código completo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mm_edilson Postado Março 15, 2023 Autor Denunciar Share Postado Março 15, 2023 O negócio é que o forum corta o código. Ultrapassa o limite de caracteres... Mas coloquei o código completo no drive, neste link: https://drive.google.com/file/d/19xGbKS8Z4CEKqiHMoWVdRY-B0dl00RUE/view?usp=share_link Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado Março 16, 2023 Denunciar Share Postado Março 16, 2023 Eu fiz o teste por aqui, recebi várias mensagens de erro, desativei a rotina de validação da session, botei o meu banco de dados e consegui construir a tabela cadigreja (o meu banco de dados não aceita letras maiúsculas). Na hora de fazer o teste, ele reclamou que eu não tinha a pasta photos, então criei a pasta. Deu tudo certo, o arquivo que eu escolhi foi gravado como logo_igreja.ico, e no banco de dados o campo logo recebeu o nome http://www.sgi.dev.br/paginas/photos/logo_igr. O que eu não consigo é avançar para o próximo registro. Vou trabalhar nisso agora. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado Março 16, 2023 Denunciar Share Postado Março 16, 2023 (editado) Tudo indica que o seu código foi feito para alterar o cadastro da igreja com o IdIgreja=1. Fiz um código resumo, e acho que você quis dizer que o programa faz tudo, menos atualizar a imagem do IdIgreja=1. O programa pede para gravar a nova imagem na pasta photos (no computador local), mas no banco de dados você diz que ele foi parar lá na internet (www.sgi.dev.br), e a página que você edita busca a foto aonde você não gravou a imagem, ou seja, www.sgi.dev.br. Fiz um código resumo, onde o programa grava a imagem na pasta photos e recupera a imagem na mesma pasta, tirando o portal do sgi.dev.br do código: painel.php <?php $conn=new PDO("mysql:host=localhost;dbname=astudy","root",""); $resultado = $conn->prepare("SELECT * from cadigreja"); $resultado->execute(); $row = $resultado->fetchAll(PDO::FETCH_ASSOC); $row_igreja=$row[0]; $tipo = $row_igreja['tipo']; ?> <form id="formulario" method="POST" enctype="multipart/form-data" action=""> <table> <tr><td>ID:<td><input name="id" value="<?php echo $row_igreja['IdIgreja']; ?>"> <tr><td>Nome:<td><input name="nome" value="<?php echo $row_igreja['Nome']; ?>"> <?php $logo_igreja = $row_igreja['Logo']; $logo = $logo_igreja; ?> <tr><td>Imagem:<td><input id="selecao-arquivo" type="file" name="flImage" accept="image/*"> <script type="text/javascript"> foto_logo = document.getElementById('selecao-arquivo'); foto_logo.addEventListener('change', function(e) { showThumbnail(this.files);}) function showThumbnail(files) { if (files && files[0]) { reader = new FileReader(); reader.onload = function (e) { imgPhoto.src = e.target.result;} reader.readAsDataURL(files[0]);}} </script> </table> <div class="logo" id="foto_logo" name="foto_logo"> <img id="imgPhoto" src="<?php echo $logo ?>"></img> <input class="btn_edit" type="submit" name="salvar" value="SALVAR"> </form> <?php if(!empty($_POST)){ if (!empty($_FILES['flImage']['name'])){ $arquivo_tmp = $_FILES[ 'flImage' ][ 'tmp_name' ]; $nome_imagem = $_FILES[ 'flImage' ][ 'name' ]; $extensao = pathinfo ( $nome_imagem, PATHINFO_EXTENSION ); $extensao = strtolower ( $extensao ); strstr ( '.jpg;.jpeg;.gif;.png', $extensao ); $novoNome = "logo_igreja" . '.' . $extensao; $destino = 'photos/' . $novoNome; move_uploaded_file( $arquivo_tmp, $destino ); $logo_atual = $destino;} $id = $_POST['id']; $nome = $_POST['nome']; $sql = "UPDATE CadIgreja SET Nome=?,Logo=? WHERE IdIgreja=?"; if($conn->prepare($sql)->execute([$nome,$logo_atual,$id])){ echo '<script> alert ("Registro atualizado com sucesso!"); location.replace("painel.php")</script>'; } else { echo '<script> alert ("Houve um erro. Tente novamente!"); location.href=("painel.php?igreja_editar")</script>'; } } else {} ?> Editado Março 16, 2023 por Frank K Hosaka Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
mm_edilson
Amigos, quebrando a cabeça pra encontrar o erro.
Tenho uma pasta "photos" para onde deve subir a imagem da logo. O arquivo php que faz o update precisa pegar a imagem de um input image, mudar o nome, criar o caminho para ela, gravar no BD, e subir a imagem para a pasta.
Ele faz tudo, menos subir a imagem.
Alguém poderia dar uma força?
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.