Update mysql table with image

Asked

Viewed 132 times

1

I am trying to upload an image but the table is not updated. already utilizei var_dump($arquivo) and the return is correct, with the file name + extension.

the code is in the header of my page and the form has no action, when I click to send the page is reloaded and the var_dump($arquivo) and the var_dump($linha) show the results normally but the update in the table is not executed.

The code I’m using is:

$buscartexto = $pdo->prepare("SELECT * FROM institucional WHERE id =:id");
$buscartexto->bindValue(":id", $id);
$buscartexto->execute();
$linha = $buscartexto->fetchAll(PDO::FETCH_ASSOC);

if (!empty($_POST['data']) && !empty($_POST['titulo']) && !empty($_POST['texto'])){

$data = trim($_POST['data']);
$titulo = trim($_POST['titulo']);
$texto = trim($_POST['texto']);
$caminho = 'uploads/';

$nomeArquivo = $_FILES["fotos"]["name"]; 
$tamanhoArquivo = $_FILES["fotos"]["size"];
$nomeTemporario = $_FILES["fotos"]["tmp_name"];
$arquivoArray= explode(".", $nomeArquivo);
$extensao = end($arquivoArray);
$arquivo = $caminho.md5(time().rand(3212, 12043)).'.'.$extensao;

if(move_uploaded_file($nomeArquivo, $arquivo)){
$atualizartexto = $pdo->prepare("UPDATE institucional SET data =:data, titulo =:titulo, texto =:texto, imagem =:imagem WHERE id =:id");
$atualizartexto->bindValue("id", $id);
$atualizartexto->bindValue(":data", $data);
$atualizartexto->bindValue(":titulo", $titulo);
$atualizartexto->bindValue(":texto", $texto);
$atualizartexto->bindValue(":imagem", $arquivo);
$atualizartexto->execute();

if ($atualizartexto->rowCount() > 0) {
echo '<div class="alert alert-success" role="alert">Texto atualizado com sucesso!</div>';
}
else {
echo '<div class="alert alert-danger" role="alert">Texto não foi atualizado!    </div>';
}
}
}
  • Error appears?

  • Nothing showed up, I can store the 2 variables only they do not update and the file also is not moved to the uploads folder.

  • But not updated text appears?

  • Also no, I think the code "dies" in the if(move_uploaded_file($nomeArquivo, $arquivo))

  • hehehe has to test for parts now

1 answer

1


The error is in the image path... So do it this way:

<?php
$buscartexto = $pdo->prepare("SELECT * FROM institucional WHERE id =:id");
$buscartexto->bindValue(":id", $id);
$buscartexto->execute();
$linha = $buscartexto->fetchAll(PDO::FETCH_ASSOC);

if (!empty($_POST['data']) && !empty($_POST['titulo']) && !empty($_POST['texto'])){

    $data = trim($_POST['data']);
    $titulo = trim($_POST['titulo']);
    $texto = trim($_POST['texto']);
    $caminho = 'uploads/';

    $nomeArquivo = $_FILES["fotos"]["name"]; 
    $tamanhoArquivo = $_FILES["fotos"]["size"];
    $nomeTemporario = $_FILES["fotos"]["tmp_name"];
    $arquivoArray= explode(".", $nomeArquivo);
    $extensao = end($arquivoArray);
    $arquivo = $caminho.md5(time().rand(3212, 12043)).'.'.$extensao;

    if(!is_dir($caminho)){
        mkdir($caminho, 0777);
        chmod($caminho, 0777);
    }

    if(move_uploaded_file($_FILES["fotos"]["tmp_name"], $arquivo)){
        $atualizartexto = $pdo->prepare("UPDATE institucional SET data =:data, titulo =:titulo, texto =:texto, imagem =:imagem WHERE id =:id");
        $atualizartexto->bindValue("id", $id);
        $atualizartexto->bindValue(":data", $data);
        $atualizartexto->bindValue(":titulo", $titulo);
        $atualizartexto->bindValue(":texto", $texto);
        $atualizartexto->bindValue(":imagem", $arquivo);
        $atualizartexto->execute();

        if ($atualizartexto->rowCount() > 0) {
            echo '<div class="alert alert-success" role="alert">Texto atualizado com sucesso!</div>';
        }
        else {
            echo '<div class="alert alert-danger" role="alert">Texto não foi atualizado!    </div>';
        }
    } else {
        echo "O arquivo não foi enviado.";  
    }
}
?>
  • 1

    worked 100%.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.