0
I created a form with registration system with images and strings and worked perfectly.
Only I tried to add another product without leaving the page and now the form with the class I created doesn’t work anymore, does anyone have any idea what might have happened?
A Function:
function cadastroComFoto($tabela, $dados){
$con = conectar();
$nomeArquivo = $_FILES["imagem"]["name"];
$nomeTemporario = $_FILES["imagem"]["tmp_name"];
$tamanhoArquivo = $_FILES["imagem"]["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, imagem) VALUES($valores,'$arquivo')");
$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.
}
}
The call of the function:
<?php //Chama a função inserir caso tenha algum dado em POST (includes/conexao)
if ($_POST) {
cadastroComFoto('produtos', $_POST); } ?>
The form:
<form class="form-horizontal" method="POST" action="" enctype="multipart/form-data">
<fieldset>
<!-- Form Name -->
<legend>Novo Produto</legend>
<!-- Text input-->
<div class="form-group">
<label class="col-md-1 control-label" for="nome">Nome</label>
<div class="col-md-6">
<input id="nome" name="nome" type="text" placeholder="" class="form-control input-md" required="">
</div>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-1 control-label" for="imagem">Imagem:</label>
<div class="col-md-2">
<input type="file" name="imagem"/>
</div>
</div>
<!-- Textarea -->
<div class="form-group">
<label class="col-md-1 control-label" for="inputDefault">Descrição <br /> <small>Evite grandes textos</small></label>
<div class="col-md-9">
<textarea rows="10" id="area1" cols="120" name="descricao"></textarea>
</div>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-1 control-label" for="destaque">Destaque:</label>
<div class="checkbox">
<label>
<input type="checkbox" name="destaque">Produto em destaque <br>
<small>Selecione esta opção se deseja que o produto apareceça na pagina principal</small>
</label>
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-1 control-label" for="salvar"></label>
<div class="col-md-5">
<button id="salvar" class="btn btn-primary btn-lg" >Salvar</button>
</div>
</div>
</fieldset>
</form>
Hello, Rafael! Error occurs?
– Dherik
in the database what the id of that item has been added?
– henriquedpereira
Add these commands in the first few lines of your PHP file to return the error message:
ini_set('display_errors', 'On');
anderror_reporting(E_ALL);
– Giancarlo Abel Giulian
I used the
var_dump
to display the query result and is only returnednull
– RFL
The software you work on has no versioning?
– Ivan Ferrer
make a
print_r("INSERT INTO $tabela($campos, imagem) VALUES($valores,'$arquivo')"); die();
and see what returns in query.– Ivan Ferrer
This inside Function? I put Function inside a variable to do
print_r
but nothing appears– RFL
@Ivanferrer I put the function inside the $register variable and made a
echo print_r($cadastrar);
and what returns is1
– RFL
// Prepara a inserção no banco de dados
 ***[coloca aqui]***
 $inserir = $con->prepare("INSERT INTO $tabela($campos, imagem) VALUES($valores,'$arquivo')");
 $inseri = $inserir->execute(); // Execute a inserção
– Ivan Ferrer
You need to see the result of the query string before to know the problem.
– Ivan Ferrer
@Ivanferrer I already discovered the Error, it was the server that was clogged and no more disk space...
– RFL