1
Good afternoon guys, help me please, I found a tutorial on the internet that teaches you to save the image in the database with php and jquery, but it teaches send only the image I’ve tried every possible way for me to put with form with name and sex for example but I can’t believe that because I’m beginner... Could you help me? Follow the codes
Bench
CREATE TABLE `fotos` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nome` varchar(60) NOT NULL,
`conteudo` mediumblob NOT NULL,
`tipo` varchar(20) NOT NULL,
`tamanho` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Register
// Quando enviado o formulário
$('#formulario').on('submit', function () {
// Armazenando objetos em variáveis para utilizá-los posteriormente
var formulario = $(this);
var botao = $('#salvar');
var mensagem = $('#mensagem');
// Exibindo indicador de carregamento (Bootstrap)
// Docs: http://getbootstrap.com/javascript/#buttons
botao.button('loading');
// Enviando formulário
$(this).ajaxSubmit({
// Definindo tipo de retorno do servidor
dataType: 'json',
// Se a requisição foi um sucesso
success: function (retorno) {
// Se cadastrado com sucesso
if (retorno.sucesso) {
// Definindo estilo da mensagem (sucesso)
mensagem.attr('class', 'alert alert-success');
// Limpando formulário
formulario.resetForm();
}
else {
// Definindo estilo da mensagem (erro)
mensagem.attr('class', 'alert alert-danger');
}
// Exibindo mensagem
mensagem.html(retorno.mensagem);
// Escondendo indicador de carregamento
botao.button('reset');
},
// Se houver algum erro na requisição
error: function () {
// Definindo estilo da mensagem (erro)
mensagem.attr('class', 'alert alert-danger');
// Exibindo mensagem
mensagem.html(retorno.mensagem);
// Escondendo indicador de carregamento
botao.button('reset');
}
});
// Retorna FALSE para que o formulário não seja enviado de forma convencional
return false;
});
<form id="formulario" action="ajax/salvar.php" method="post">
<div id="mensagem"></div>
<div class="form-group">
<label>Foto</label>
<input class="form-control" type="file" name="foto"/>
</div>
<input id="salvar" class="btn btn-primary" type="submit" value="Salvar" data-loading-text="Salvando..."/>
</form>
Connection
I’m not gonna put it on the pattern
Useful
<?php
// Função que retorno um JSON com a propriedade sucesso e mensagem
function retorno($mensagem, $sucesso = false)
{
// Criando vetor com a propriedades
$retorno = array();
$retorno['sucesso'] = $sucesso;
$retorno['mensagem'] = $mensagem;
// Convertendo para JSON e retornando
return json_encode($retorno);
}
Save
<?php
// Incluindo arquivo de conexão
require_once('../config/conn.php');
// Funções de utilidade
require_once('../funcs/util.php');
// Constantes
define('TAMANHO_MAXIMO', (2 * 1024 * 1024));
// Verificando se selecionou alguma imagem
if (!isset($_FILES['foto']))
{
echo retorno('Selecione uma imagem');
exit;
}
// Recupera os dados dos campos
$foto = $_FILES['foto'];
$nome = $foto['name'];
$tipo = $foto['type'];
$tamanho = $foto['size'];
// Validações básicas
// Formato
if(!preg_match('/^image\/(pjpeg|jpeg|png|gif|bmp)$/', $tipo))
{
echo retorno('Isso não é uma imagem válida');
exit;
}
// Tamanho
if ($tamanho > TAMANHO_MAXIMO)
{
echo retorno('A imagem deve possuir no máximo 2 MB');
exit;
}
// Transformando foto em dados (binário)
$conteudo = file_get_contents($foto['tmp_name']);
// Preparando comando
$stmt = $pdo->prepare('INSERT INTO fotos (nome, conteudo, tipo, tamanho) VALUES (:nome, :conteudo, :tipo, :tamanho)');
// Definindo parâmetros
$stmt->bindParam(':nome', $nome, PDO::PARAM_STR);
$stmt->bindParam(':conteudo', $conteudo, PDO::PARAM_LOB);
$stmt->bindParam(':tipo', $tipo, PDO::PARAM_STR);
$stmt->bindParam(':tamanho', $tamanho, PDO::PARAM_INT);
// Executando e exibindo resultado
echo ($stmt->execute()) ? retorno('Foto cadastrada com sucesso', true) : retorno($stmt->errorInfo());
Index
<?php
// Incluindo arquivo de conexão
require_once('config/conn.php');
// Selecionando fotos
$stmt = $pdo->query('SELECT id, nome, tipo, tamanho FROM fotos');
?>
<div class="row">
<?php while ($foto = $stmt->fetchObject()): ?>
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<img src="imagem.php?id=<?php echo $foto->id ?>" />
<div class="caption">
<strong>Nome:</strong> <?php echo $foto->nome ?> <br/>
<strong>Tipo:</strong> <?php echo $foto->tipo ?> <br/>
<strong>Tamanho:</strong> <?php echo $foto->tamanho ?> bytes <br/>
</div>
</div>
</div>
<?php endwhile ?>
</div>
Credits:
http://rafaelcouto.com.br/salvar-imagem-no-banco-de-dados-com-php-mysql/
Help me please
What error are you getting?
– gustavox
http://answall.com/questions/42886/salvar-no-banco-data
– gustavox
no mistake, I want to save the image save the person’s name and sex
– Victor Mansolelli
Insert
error_reporting(E_ALL);
right at the top of the save page (right after<?php
, and see if there are any errors. Also try debugging these pages, to see if you find the problem.– gustavox
Use type BLOB in mysql
– Roberto Araujo
But you want to save this data (name, sex, etc...) where... in the image’s DB or in another DB... that’s the question. Besides, it would be important to post here the form where this image is inserted.
– Andrei Coelho