[URGENTE] Upload de arquivos em PHP, sem a necessidade de um botão submit

Pessoal, boa tarde.
Estou com um problema…

  • Tenho um formulário, que é preenchido e enviado por email, e preciso implementar um upload de arquivos.
  • Para isso, vai ser necessário utilizar um FORM form1 dentro de outro FORM form2.
  • Um dos problemas é que quando adiciono esse novo form (form2) o formulário 1 fica todo desestruturado, não sei porque mas interfere no css.

Mas o principal problema, é que quando adiciono o FORM2, ele não consegue executar a action. (OBS: já utilizei javascript para dar o submit no form2, mas não funcionou.)
OBS2: Se o form2 é colocado fora do form1, funciona normalmente.

Tenho duas soluções em mente, que não sei como resolver.

1°- Adicionar o form2 do upload de arquivos, fora do form1. Mas como eu poderia enviar esse arquivo junto com o email do form1?

2°- Já vi em alguns sites, que você não precisa clicar em “Anexar” para acionar a action do form, ou seja, basta selecionar o arquivo e depois clicar em ok.
Feito isso, quando clicar em “Enviar”(botão submit do form1) ele enviaria o arquivo escolhido junto ao email.

Pessoal, preciso muito dessa ajuda.
Obrigado desde já.

Pessoal, realmente andei estudando, é adicionar um form dentro de outro form, acaba não funcionando perfeitamente.

Vocês podem por favor, me dizer.

  • Como eu posso mandar 2 forms junto ao email. sendo que 1 form executa a função de envio. pegando os dados e enviando. ou seja, esse form precisaria pegar os dados do outro form e enviar junto!

Sinceramente não vejo necessidade de você inserir um form dentro de outro, o conceito de forms é para ser usado separadamente, pois assim você ganha flexibilidade e uma mesma página poder submeter para outras páginas diferentes (desde que alterandamente e não juntas).

Você consegue perfeitamente mandar um arquivo junto do seu formulário de email, basta adicionar um campo input do tipo file e especificar ao formulário que você vai enviar um arquivo junto (enctype=“multipart/form-data”), algo +/- assim:

<form name="enviaEmailComAnexo" enctype="multipart/form-data">
   <input type="text" name="email" />
   <input type="file" name="anexo" />
   <input type="submit" value="Enviar email e anexo" />
</form>

E digamos que do outro lado você está usando php para pegar o email, tratá-lo e enviá-lo, basta colocar um bloco de código que guarde/anexe o arquivo usando:

Se você estiver usando php, mas está com dúvidas de como atachar o arquivo enviado junto ao email, pesquise sobre PEAR (http://pear.php.net/) para php, há muitos exemplos de como atachar um anexo, e ele possui vários módulos, um que já usei bastante é o Mail_Mime:
http://pear.php.net/package/Mail_Mime

Espero ter ajudado e boa sorte.