Ir para conteúdo
Fórum CódigoFonte.net
Patrick xD

[script] Formulario + Foto + banco de dados

Recommended Posts

Sair da rotina de responder, responder e responder. ><

vo montar um formail aqui rapidinho é panz, so pra que brar a rotina mesmo :P

bora la:

criar o banco de dados.

abra o phpmyadmin, e crie um banco de dados com o nome que desejar.

depois você vai em sql la em cima e cola este codigo:

CREATE TABLE `formulario` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nome` VARCHAR( 255 ) NOT NULL ,
`cidade` VARCHAR( 255 ) NOT NULL ,
`estado` VARCHAR( 255 ) NOT NULL ,
`foto` VARCHAR( 255 ) NOT NULL
) ENGINE = innodb;
agora agente começa a montar o formulario: form.htm
<body>
<form action="enviar.php" method="post" enctype="multipart/form-data">
<!-- lembrando que se for enviar Foto pelo formulario vc tem que colocar o enctype. -->
<table width="288" border="1">
  <tr>
    <td width="53">Nome:</td>
    <td width="219"><input name="nome" type="text" /></td>
  </tr>
  <tr>
    <td>Cidade:</td>
    <td><input name="cidade" type="text" /></td>
  </tr>
  <tr>
    <td>Estado:</td>
    <td><input name="estado" type="text" /></td>
  </tr>
  <tr>
    <td>Foto</td>
    <td><input name="foto" type="file" /></td>
  </tr>
</table><table width="286" border="1">
  <tr>
    <td width="136" align="center"><input name="enviar" type="submit" value="Enviar Formulario!" /></td>
    <td width="134" align="center"><input name="resetar" type="reset" value="Limpar Campos!" /></td>
  </tr>
</table>

</form>
</body>
depois de criado o formulario, vamos criar a conexão com o banco de dados! conectar.php
<?php
$host    = "localhost";    #servidor
$login    = "root";        #login do banco de dados
$senha    = "";            #senha do banco de dados
$db        = "automoveis";    #banco de dados
$tabela    = "cadastros";    #tabela

$con   = mysql_connect($host,$login,$senha) or die(mysql_erro());    #conecta com o servidor
$sel   = mysql_select_db($db) or die(mysql_error());                #seleciona a database

?>
enviar.php
<?php

/*
recebe as variaveis do formulario,
vo fazer assim pra facilitar.

mais vc não precisa defenir elas,
pode usar o $_POST[''] que vai dar o mesmo efeito
*/

$nome        = $_POST['nome'];
$cidade        = $_POST['cidade'];
$estado        = $_POST['estado'];
$foto        = $_FILES['foto'];

#conecta com o banco de dados...
include("conectar.php");

/*
eu vo definir no php mesmo, os campos nome, cidade como obrigatorios. 
*/

if(empty($nome)){

#usando o comando empty() você chega se uma variavel esta vazia.
#retornando true quando estiver vazia.

    echo "<script> alert('Campo \"nome\" obrigatorio!')
            location = ('form.htm');
            </script>";
}

if(empty($cidade)){
    echo "<script> alert('Campo \"cidade\" obrigatorio!')
            location = ('form.htm');
            </script>";
}
#agora eu upo a foto pro servidor, se upar a foto ja grava no servidor!
$pasta = "imagens/";
if(move_uploaded_file($_FILES['foto']['tmp_name'], $pasta)){

    #$tabela = a tabela do seu banco de dados!
    $sql_grava    = "INSERT INTO $tabela('nome','cidade','estado','foto') VALUES ('".$nome."', '".$cidade."', '".$estado."', '".$_FILES['foto']['tmp_name']."', )";
    $exe_grava    = mysql_query($sql_grava);
    echo "Enviado com sucesso. Obrigado!";
}else{
    echo "Ocorreu um erro no processo, tente novamente!";
}

?>

OBS:

Os comentarios estão dentro do codigo!

leia o codigo que da pra inteder, lembrando isto ai é um sitema simples.

espero que tenhão gostado e até a proxima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faltou você colocar o código para criar a tabela e o arquivo de config pra conectar... : )

A ideia da foto foi boa direto galera perguntando como fazer upload de foto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae cara ta dando esse erro aqui pra mim:

Warning: move_uploaded_file(fotos/imagens/): failed to open stream: Is a directory in /home/dedshard/public_html/fotos/enviar.php on line 40

Warning: move_uploaded_file(): Unable to move '/tmp/phpDhqg0f' to 'fotos/imagens/' in /home/dedshard/public_html/fotos/enviar.php on line 40

Ocorreu um erro no processo, tente novamente!

tem como da uma ajuda to precisando muito disso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae tem como alguem ajudar ae pq só falta isso preu colocar meu site no ar, preciso de um formulário com foto, por favor alguem ae da uma ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: move_uploaded_file(fotos/imagens/): failed to open stream: Is a directory in /home/dedshard/public_html/fotos/enviar.php on line 40

E porque não criou a pasta imagens dentro da pasta fotos : ) e depois que criar da permissão de escrita nela chmod 777

**************************

Prove Yourself

Cara vc alterou ou ta usando igualzinho o do patrick ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

UPDATE!

Eu estava omitindo ['tmp_name'] na função move_uploaded_file da classe Produto por isso que imprimia Array.

O problema agora é que o destino existe mas estou tendo o mesmo erro que o GamesVr estava tendo e o kinzinho explicou...

Fiz uma classe Produto

<?php

include "Banco.class.php";

class Produto {
    public function Inserir($empresa, $nome, $descricao, $foto) {
        $banco = new Banco();
        $campos = array("empresa", "nome", "descricao", "foto");
        $valores = array($empresa, $nome, $descricao, $foto);
        
        move_uploaded_file($foto, "/home/wiltave");
        
        $resultado = $banco->Inserir("produtos", $campos, $valores);

        return $resultado;
    }
}
?>
PHP que insere no banco (enviarproduto.php dentro da pasta Action)
<?php
    require_once "../Produto.class.php";
    
    $produto = new Produto();
    $_POST['empresa'] = 1;
    $produto->Inserir($_POST['empresa'], $_POST['nome'], $_POST['descricao'], $_FILES['foto']);
?>
HTML (enviarproduto.php dentro da pasta principal)
<html>
<head>
</head>
<body>
    <form method="post" action="action/enviarproduto.php" enctype="multipart/form-data">
        <label for="nome">Nome</label>
        <input type="text" name="nome" />
        <label for="descricao">Descrição</label>
        <input type="text" name="descricao" />
        <label for="foto">Foto</label>
        <input type="file" name="foto" />
        <input type="submit" />
    </form>
</body>
</html>

Mesmo com echo $_FILES['foto'] retorna "Array".

Valeu, obrigado.

Editado por Prove Yourself

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae Prove so meio novo em php se puder me ajudar a montar esse formulario com foto eu agradeceria, meu msn é [email protected]

o seguinte erro ainda da, mesmo eu colocando CHmod 777:

Warning: move_uploaded_file(imagens/): failed to open stream: Is a directory in /home/dedshard/public_html/enviar.php on line 40

Warning: move_uploaded_file(): Unable to move '/tmp/phpbnwlxG' to 'imagens/' in /home/dedshard/public_html/enviar.php on line 40

Ocorreu um erro no processo, tente novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: move_uploaded_file(fotos/imagens/): failed to open stream: Is a directory in /home/dedshard/public_html/fotos/enviar.php on line 40

E porque não criou a pasta imagens dentro da pasta fotos : ) e depois que criar da permissão de escrita nela chmod 777

**************************

Prove Yourself

Cara vc alterou ou ta usando igualzinho o do patrick ?

Só para reforçar a afirmação do mestre kin, se o php estiver como cgi (ao invés de apache mod) e o suExec estiver ativado corretamente, a permissão para isso será 755 (por se tratar de diretórios) e 644 para arquivos.

:ph34r: <--- My POG exit();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como converter as imagens salvas para jpeg antes da função move_uploaded_file? Ou tenho que mover e depois converter? Como converter e apagar a imagem original?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma das formas é checar com algo do tipo:

Se a imagem for JPEG, deixe quieto!

Se a imagem for PNG, converter para JPEG,

Se a imagem for GIF, converter para JPEG...

Dá uma olhadinha nisso aqui:

http://br.php.net/manual/pt_BR/function.im...eatefromgif.php (olhar os comentários)

ou

http://br.php.net/manual/pt_BR/ref.image.php

Manda bala fera!

:ph34r:<--- My POG exit();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal, tudo bem?

Bom, eu gostaria de enviar uma foto pra um banco apartir de um site e não chamar essa foto de um servidor onde meu site está hospedado.. com esse código oferecido pelo colega à cima isso é possível?

Realizei um teste com tal código e ele remete a condição: Ocorreu um erro no processo, tente novamente!

Se alguém entendeu e puder me ajudar eu irei agradecer d+++!!

Meu msn é: [email protected]

Somente se identifique como membro do codigofonte.net, please

=*

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha está dando o seguinte erro!

Warning: move_uploaded_file(imagens/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/silvio/public_html/muraldefotos/enviar.php on line 40

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpjxj5Lh' to 'imagens/' in /home/silvio/public_html/muraldefotos/enviar.php on line 40

Ocorreu um erro no processo, tente novamente!

Estou presisando urgentimente isso =D

Aguardo resposta!

Compartilhar este post


Link para o post
Compartilhar em outros sites

:unsure: Hello amigo do CódigoFonte.net.

minha pergunta é mais simples, do que essas aqui em cima.

eu fiz tudinho direitinho, só que eu vou lá me registro, ai mando enviar.

ai ele da a mensagem "Enviado com sucesso. Obrigado!"

só que eu vou la no banco vê si registou so que não registra por que eu já olhei, mais noa encontrei nada.

você poderia me ajudar com isso amigo.

aguardo. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá gente estou com um problema assim:

quando eu deixo assim:

#agora eu upo a foto pro servidor, se upar a foto ja grava no servidor!
[color="#FF0000"]$pasta = "fotos/";[/color]
if(move_uploaded_file($_FILES['capa']['tmp_name'], $pasta))
não funciona o código falando:
Warning: move_uploaded_file(fotos/) [function.move-uploaded-file]: failed to open stream: Permission denied in D:\AppServ\www\fotoeda\admin\enviarevento.php on line 41 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\php15F0.tmp' to 'fotos/' in D:\AppServ\www\fotoeda\admin\enviarevento.php on line 41 Ocorreu um erro no processo, tente novamente!
Já quando eu mudo para:
#agora eu upo a foto pro servidor, se upar a foto ja grava no servidor!
[color="#FF0000"]$pasta = "fotos/foto";[/color]
if(move_uploaded_file($_FILES['capa']['tmp_name'], $pasta))
ele salva no BD desta forma:
C:WINDOWSTempphp1323.tmp

O que poderia ser isto?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Permission denied in D:\AppServ\www\fotoeda\admin\enviarevento.php

Você não tem permissão para salvar na pasta : )

Compartilhar este post


Link para o post
Compartilhar em outros sites
Permission denied in D:\AppServ\www\fotoeda\admin\enviarevento.php

Você não tem permissão para salvar na pasta : )

Uai mas estou em um PC local (localhost) vc pode me auxiliar a evitar este erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for local windows então ele tem permissão para tudo, então provavelmente está salvando no diretório incorreto, manda localizar o nome do arquivo que está salvo no banco para você ver, ou então como o script é simples não tem tratamento de nome, pode ocorrer de ir com nome errado tipo %05Aacute& algo assim saca. Ai tem que verificar, olha no banco o nome da imagem e manda localizar.

aaqui tambem não funcionou ! não cadastrou o usuario nem adicionou a foto, e na hora do cadastro ele fala que cadastrou com sucesso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, sou novo por aqui, sei que esse post foi colocado já faz tempo, quem sabe já tenham encontrado a solução, pois descobri agora,

O $_POST não funciona junto com enctype="multipart/form-data", ou vc manda arquivos ou manda texto, se tiro o enctype aparece o "$_POST" mas não recebo arquivos de imagens, se deixo o enctype recebo os arquivos mas não recebo os textos.

As opções que vi na Internet , não me agradaram em nada !!

Utilizo as ferramentas PHP, HTML, javascript e ASP, mysql, mas nesse ultimo site não utilizei asp,

somente PHP, alguém poderia dar uma solução ?

Obrigado !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

quero aqui registrar meu agradecimento ao criador do tópico!

só estava faltando o envio de fotos para que eu concluísse uma parte de meu projeto!

eu não tinha me atentado ao enctype="multipart/form-data" no formulário e foi justamente isso que foi destacado.

vlw mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×
×
  • Criar Novo...