2
respostas

Coloquei mais campos e não insere no banco

Olá pessoal, criei o seguinte formulário:

<form id="form" action="login.php" method="post" enctype="multipart/form-data">
                            <fieldset>
                                <legend>Dados de cadastro</legend>

                                <div class="form-group">
                                    <label for="nome">Nome:</label>
                                    <input id="nome" class="form-control" type="text" name="nome"
                                           placeholder="Seu nome"
                                           minlength="2"
                                           required="required">
                                </div>

                                <div class="form-group">
                                    <label for="sobrenome">Sobrenome:</label>
                                    <input id="sobrenome" class="form-control" type="text" name="sobrenome"
                                           placeholder="Seu sobrenome"
                                           minlength="2"
                                           required="required">
                                </div>

                                <div class="form-group">
                                    <label for="email">Email:</label>
                                    <input id="email" class="form-control" type="email" name="email"
                                           placeholder="nome@mail.com" required="required">
                                </div>

                                <div class="well">
                                    <div class="form-group">
                                        <label for="login">Login:</label>
                                        <input id="login" class="form-control" type="text" name="login"
                                               placeholder="meunome, mnome"
                                               minlength="4"
                                               required="required">
                                    </div>

                                    <div class="form-group">
                                        <label for="senha">Senha:</label>
                                        <input id="senha" class="form-control" type="password" name="senha"
                                               minlength="6"
                                               required="required">
                                    </div>

                                    <div class="form-group">
                                        <label for="senha-confirmacao">Confirmação de senha:</label>
                                        <input id="senha-confirmacao" class="form-control" type="password"
                                               name="senha-confirmacao"
                                               equalTo="#senha">
                                    </div>
                                </div>

                                <div class="form-group">
                                    <label for="file">Avatar:</label>
                                    <input id="file" class="form-control" type="file" name="file">

                                    <p class="help-block">JPG, PNG ou GIF.</p>

                                    <img id="avatar" data-src="holder.js/180x180" src="" alt="Avatar">
                                </div>
                            </fieldset>


                            <input class="btn btn-primary btn-block" type="submit">
                        </form>

As validações são feita front-end via javascript e estão funcionando. Criei uma tabela(usuarios) com os devidos campos, só que a coluna avatar é um longblob. Quando eu tento inserir aparece a mensagem "Ocorreu um erro inesperado" em vermelho.

login.php
<?php
include ("conecta.php");
include ("banco-usuario.php");

$usuario = buscaUsuario ($conexao, $_POST['nome'], $_POST['sobrenome'], $_POST['email'], $_POST['login'], $_POST['login'], $_POST["senha"], $_POST['avatar']);
if ($usuario == null) {
    header("Location: index.php?login = 0");

}else {

    header("Location: index.php?login = 1");
}
die();
banco-usuario.php

function buscaUsuario($conexao, $nome, $sobrenome, $login, $senha, $avatar) {
    $senhaMd5 = md5($senha);
    $query = "select * from usuarios where nome = '{$nome}', sobrenome = '{$sobrenome}', email = '{$email}', login = '{$login}', senha = '{$senhaMd5}', avatar = '{$avatar}'";
    $resultado = mysqli_query($conexao, $query);
    $usuario = mysqli_fetch_assoc($resultado);
    return $usuario;
}

Espero que alguém possa me ajudar. Obrigado

2 respostas

Oi Adriano, tudo bom?

Guardar a imagem no banco de dados como blob nao costuma ser muito vantajoso porque acaba pesando muito a base alem de prejudicar a escalabilidade das consultas.

Uma boa abordagem nesse caso seria guardar a imagem em disco e salvar no banco de dados apenas o caminho relativo para aquela imagem a partir do projeto.

Assim, voce poderia imprimir na tag img o caminho da imagem salvo no banco de dados. Salvando o tamanho e a escalabilidade da base =)

Isso tambem evitaria possiveis problemas como o que voce esta passando para inserir. Ja que o campo seria apenas um texto de no maximo 255 characters com o caminho para a imagem.

Espero que ajude =)

Qualquer problema e so falar.

Abraco

Olá Adriano,

tente salvar no banco de dados o retorno que a função "base64_encode" lhe da.

$exemplo = base64_encode($img);

e quando for fazer o select no banco de dados para utilizá-la, tente usar a função "base64_decode";

Ambas são funções são do PHP,

Espero ter ajudado de alguma forma! Até mais!