Ir para conteúdo



[script] Formulario + Foto + banco de dados


  • Por favor, faça o login para responder
24 respostas neste tópico

#1 Patrick xD

Patrick xD
  • Moderadores
  • 560 posts

Postado 08 October 2007 - 01:50 AM

Sair da rotina de responder, responder e responder. ><
vo montar um formail aqui rapidinho é panz, so pra que brar a rotina mesmo tongue.gif


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:


CÓDIGO
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
CÓDIGO

<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

CÓDIGO

<?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

CÓDIGO
<?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.


duvidas?
Poste a duvida...

Codigo pronto?
http://mepsistemas.piramidys.com.br/

Procurando programador profissional ?
http://mepsistemas.piramidys.com.br/



#2 kinzinho

kinzinho
  • Supervisores
  • 3929 posts

Postado 08 October 2007 - 07:31 AM

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.
Quer aprender PHP?
http://phparte.blogspot.com

Aguardando o FIM ou FILTRO do PHP...

Não confunda ajudar
com
Criar o script para você!

#3 GamesVr

GamesVr
  • Membros
  • 3 posts

Postado 09 May 2008 - 06:58 PM

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!

#4 Prove Yourself

Prove Yourself
  • Membros
  • 128 posts

Postado 10 May 2008 - 11:35 AM

Aqui o campo foto está sendo salvo como Array e não com o caminho da foto...

#5 GamesVr

GamesVr
  • Membros
  • 3 posts

Postado 11 May 2008 - 11:15 PM

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!

#6 kinzinho

kinzinho
  • Supervisores
  • 3929 posts

Postado 12 May 2008 - 10:10 AM

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 ?
Quer aprender PHP?
http://phparte.blogspot.com

Aguardando o FIM ou FILTRO do PHP...

Não confunda ajudar
com
Criar o script para você!

#7 Prove Yourself

Prove Yourself
  • Membros
  • 128 posts

Postado 12 May 2008 - 11:24 AM

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
CÓDIGO
<?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)
CÓDIGO
<?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)
CÓDIGO
<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, 12 May 2008 - 02:04 PM.


#8 GamesVr

GamesVr
  • Membros
  • 3 posts

Postado 12 May 2008 - 11:57 AM

Ae Prove so meio novo em php se puder me ajudar a montar esse formulario com foto eu agradeceria, meu msn é joaomarcoscf@hotmail.com


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!

#9 Little Oak

Little Oak
  • Membros
  • 186 posts

Postado 13 May 2008 - 11:31 AM

QUOTE(kinzinho @ May 12 2008, 10:10 AM) Visualizar Post

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.gif <--- My POG exit();


#10 Prove Yourself

Prove Yourself
  • Membros
  • 128 posts

Postado 19 May 2008 - 03:45 PM

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

#11 Little Oak

Little Oak
  • Membros
  • 186 posts

Postado 20 May 2008 - 03:44 PM

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.gif<--- My POG exit();


#12 Prove Yourself

Prove Yourself
  • Membros
  • 128 posts

Postado 21 May 2008 - 08:41 AM

Meu problema foi resolvido com a sua ajuda Oak, obrigado!
Por favor! Fixem este tópico!

#13 'ary

'ary
  • Membros
  • 2 posts

Postado 29 May 2008 - 11:20 AM

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 é: aryaneaas@hotmail.com
Somente se identifique como membro do codigofonte.net, please

=*

#14 JohnnyDue

JohnnyDue
  • Membros
  • 5 posts

Postado 21 June 2008 - 01:15 AM

Meu banco deu erro, e quando executo o script incluindo os dados aparece que foi incluido mas nao foi.

#15 Johnny Cout

Johnny Cout
  • Membros
  • 1 posts

Postado 21 June 2008 - 12:18 PM

lgl issu, asimq eu puder eu testo aki

mto obrigado




1 usuário(s) está(ão) lendo este tópico

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)