4
I’m trying to create a function that takes 1 value from a input do tipo texto
and 1 file.
I was able to move the file to the folder but I’m not able to develop SQL to insert the file name in the database.
The ID and name is normally entered only the file name is not entered, I even know it is in the part:
$inserir = $con->prepare("INSERT INTO $tabela($campos) VALUES($valores)");
$inseri = $inserir->execute(); // Execute a inserção
However I am not able to develop something to include this file path as well.
function cadastroComFoto($tabela, $dados){
$con = conectar();
$nomeArquivo = $_FILES["fotos"]["name"];
$nomeTemporario = $_FILES["fotos"]["tmp_name"];
$tamanhoArquivo = $_FILES["fotos"]["size"];
$caminho = 'uploads/';
$arquivoArray = explode(".", $nomeArquivo);
$extensao = end($arquivoArray);
$arquivo = $caminho.md5(time().rand(3212, 15452)).'.'.$extensao;
if (!is_dir($caminho)) {
mkdir($caminho);
chmod($caminho, 777);
}
if (move_uploaded_file($nomeTemporario, $arquivo)) {
foreach($_POST as $key => $val){
//Percorre os indices passados por POST armazanando em $key e os valores em $val
$campo[] = $key; // Cria um array $campo com os indices
$valor[] = "'$val'"; // Cria um array $valor com os valores
$campos = implode(",", $campo); // Junta os indices de $campo com virgula
$valores = implode(',', $valor); // Junta os valores de $valor com virgula
}
// Prepara a inserção no banco de dados
$inserir = $con->prepare("INSERT INTO $tabela($campos) VALUES($valores)");
$inseri = $inserir->execute(); // Execute a inserção
if ($inserir) { // Caso a inserção ocorra bem exibira uma mensagem de sucesso.
echo '<div class="alert alert-success" role="alert">Salvo com sucesso!</div>';
}
else { // Caso a inserção ocorra mal exibira uma mensagem de erro.
echo '<div class="alert alert-danger" role="alert">Erro ao inserir no banco de dados!</div>';
}
unset($campos); //Apaga os valores passados por POST --
unset($valores);// -- para que o usuario não precise sair da pagina e voltar de novo para efetuar outra inserção.
}
print_r($inserir->errorInfo());
}
the problem is this foreach($_POST as $key => $val) { no output "$_POST" after loading an output $_FILES, grab the POST attributes before FILES,
– Ivan Ferrer
@Kaduamaral because?
– RFL
Add after the
foreach
the lines$campos[] = 'nome da coluna que vai receber o nome do arquivo';
and$valores[] = $arquivo;
.– KaduAmaral
@Ivanferrer I managed to solve already! (after hours) the problem is not the one you mentioned.
– RFL
@Rafaelacioly I hadn’t noticed that I was already putting the quotes on
foreach
, so I had commented on it, but I’ve already excluded.– KaduAmaral