Olá, sou iniciante em PHP e queria que me ajudassem com um problema que parece ser bem comum.
Estou criando um formulário de cadastro como se fosse uma rede social, e nele, tem um campo para enviar uma imagem de avatar. Ok, eu sei que é preciso usar o modo enctype="multipart/form-data" no form para a transferência de arquivos, e sim, eu o uso. Mas meu problema é o seguinte:
Este é o meu código do form:
<form class="form" action="enviar.php" method="post" name="form" id="form1" accept-charset="utf-8" enctype="multipart/form-data" >
<!-- resto do código -->
<input class="form-upload" type="file" id="input_16" name="avatar" file-accept="jpg, jpeg, png, gif" file-maxsize="10240" />
<!-- resto do código -->
</form>
E este o código da action PHP "enviar.php":
<?php
//resto do código
$avatar = $_POST['avatar'] or die ("falha no avatar");
//...
//variável que insere conteudo no banco de dados:
$inserir = "INSERT INTO cadastro_DB (ID, nome, sobrenome, apelido, email, dia, mes, ano, senha, confirm_senha, avatar, avalie, conheceu, duvidas) VALUES ('id','$nome','$sobrenome','$apelido','$email','$dia','$mes','$ano','$senha','$confirm_senha','$avatar','','$conheceu','$criticas')"
or die ("falha no inserir");
//fazendo a consulta:
$resultado = mysql_query($inserir)
or die('Could not connect: ' . mysql_error());
echo "Dados adicionado com sucesso.<br>
<a href='cadastro.php'><b><h4>Retornar ao cadastro</h4></b></a>";
//inicio do upload:
$imagem = $_FILES['avatar']['name']; //pega o nome da imagem
$destino="/avatar/$imagem"; //indica o destino onde será salva
if ($_FILES["avatar"]["error"] > 0) //se tiver algum erro...
{
echo "Return Code: " . $_FILES["avatar"]["error"] . "<br> Escolha outra IMAGEM.";
}
else
{
move_uploaded_file($_FILES['avatar']['tmp_name'],$destino);
echo "Salvo em: " . $destino;//para testar
}
]
?>
Quando NÃO insiro o enctype="multipart/form-data" ele reconhece a variavel ($avatar) por POST normalmente, ou seja, o código funciona por completo, inclusive envia os dados para o banco de dados, só que a global $_FILES não recebe o arquivo, mesmo com no banco de dados ter salvo seu nome. O que resulta numa falha do upload.
Já quando eu INSIRO o enctype="multipart/form-data", a variável $avatar não recebe valor, a página morre no ' or die("falha no avatar") ', como eu declarei para saber o erro.
Gostaria de saber um jeito de usar o enctype="multipart/form-data" sem que afete o resto do documento, mas num unico form, sem ter que usar pop-up ou coisas do tipo. também gostaria de saber se estou usando o destino da imagem corretamente.
Pergunta
GiovanniWeb
Olá, sou iniciante em PHP e queria que me ajudassem com um problema que parece ser bem comum.
Estou criando um formulário de cadastro como se fosse uma rede social, e nele, tem um campo para enviar uma imagem de avatar. Ok, eu sei que é preciso usar o modo enctype="multipart/form-data" no form para a transferência de arquivos, e sim, eu o uso. Mas meu problema é o seguinte:
Este é o meu código do form:
E este o código da action PHP "enviar.php":Quando NÃO insiro o enctype="multipart/form-data" ele reconhece a variavel ($avatar) por POST normalmente, ou seja, o código funciona por completo, inclusive envia os dados para o banco de dados, só que a global $_FILES não recebe o arquivo, mesmo com no banco de dados ter salvo seu nome. O que resulta numa falha do upload.
Já quando eu INSIRO o enctype="multipart/form-data", a variável $avatar não recebe valor, a página morre no ' or die("falha no avatar") ', como eu declarei para saber o erro.
Gostaria de saber um jeito de usar o enctype="multipart/form-data" sem que afete o resto do documento, mas num unico form, sem ter que usar pop-up ou coisas do tipo. também gostaria de saber se estou usando o destino da imagem corretamente.
Obrigado desde já,
Giovanni.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.