Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigofariat

Usando o metodo POST para envio

Recommended Posts

Pessoal,

 

Quando faços meus HTMLS de cadastro eu uso a seguinte linha :

 

<form name="cadastro" action='../php/cadastros/cadastro.php' method="post" onSubmit="return validaFormTrans()">	

A linha acima faz com que o formulário envie via post o arquivo cadastro.php

 

Eu preciso que mais um arquivo seja enviando via POST, ou seja que o cadastro.php seja executado e o upload.php

também seja executado.

 

Tentei criar dois formulários, um para o cadastro e outro para o upload, mas quando o post é iniciado

ele só faz a gravaçao dos dados ocorre no banco, mas não executa o upload.php.

 

Qual a melhor maneira de construir essa logica ?

Ou seja fazer com que dois scripts em php sejam executados após clicar no botao submit.

 

Att,

 

Rodrigo Faria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca tudo que quer fazer dentro do "cadastro.php".

 

Lá dentro de cadastro, trata as tuas variáveis como deseja.

 

Passar o formulário para duas páginas diferentes, não tem como!

 

Coloca aí o teu formulário em HTML e o teu cadastro.php pra nós te ajudar melhor! :)

 

[]s

felini

Compartilhar este post


Link para o post
Compartilhar em outros sites

Juntei o arquivo upload.php no final do arquivo cadastro.php.

Quando tento fazer o upload retorna: Selecione o arquivo a ser enviado

isso aparece por que a variável do arquivo HTML chamado de arquivo nao esta sendo passada para o arquivo de processamento o cadastra.php,

que esta sendo enviado via POST.

 

Os codigos estão logo abaixo:

 

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Cadastro</title>
	<link href="http://localhost/~rodrigo/estilos/estilo.css" rel="stylesheet" type="text/css" media="all" />   
	    
</head>
  <form name="cadastrotrans" action='../php/cadastros/cadastro.php' method="post" onSubmit="return validaFormTrans()">	
    <div id="login">

         <fieldset>
         <legend>Cadastro de Fabricas:</legend>

          <label for="nomefab">Nome da Fabrica</label>
          <input type="text" name="nomefab" id="nomefab" size="40" /> <br/><br/>
          
          <label for="tipo">Instituição:</label>
          <SELECT name="tipo">
          <OPTION>Estatal</OPTION>
          <OPTION>Particular</OPTION>
          <OPTION>Economia mixta</OPTION>
          </SELECT>
          <br>
             
         <input type="hidden" name="MAX_FILE_SIZE" value="200000">
         Arquivo: <input type="file" name="arquivo" id="arquivo" size="30">
         </form>
		
         <input type=submit value="Enviar"><br>
         <input type="reset" name="reset" value="Limpar">
           
         </fieldset><br>
    </div>
</html>

Agora vai o arquivo PHP

<?php

	$codigofab =  ($_POST['codigfab']);
	$nomefab = ($_POST['nomefab']);   
	$conexao = mysqli_connect ("localhost", "root", "");
	mysqli_select_db ($conexao, "mysql");
	$consulta ="INSERT INTO cadastro VALUES   ('$codigofab','$nomefab')";
	

set_time_limit (0);
// inclui o arquivo com as configurações
include "/home/rodrigo/public_html/transportescolar/php/upload/config_upload.inc";

$nome_arquivo = $_FILES['arquivo']['name'];
$tamanho_arquivo = $_FILES['arquivo']['size'];
$arquivo_temporario = $_FILES['arquivo']['tmp_name'];


if (!empty ($nome_arquivo))
{
	if ($sobrescrever == "nao" && file_exists("$caminho_absoluto/$nome_arquivo"))
		die("Arquivo já existe.");

	if (($limitar_tamanho == "sim") && ($tamanho_arquivo > $tamanho_bytes))
		die("Arquivo deve ter no máximo $tamanho_bytes bytes.");

	$ext = strrchr($nome_arquivo,'.');
	if ($limitar_ext == "sim" && !in_array($ext,$extensoes_validas))
		die("Extensão de arquivo inválida para upload.");

	if(move_uploaded_file($arquivo_temporario, "$caminho_absoluto/$nome_arquivo"))
	{
		echo "<p align=center>O upload do arquivo <b>". $nome_arquivo."</b> foi concluido com sucesso.</p>";
		echo "<p align=center><a href=upload.html>Novo upload</a></p>";
	}
	else
		echo "<p align=center>O arquivo nao pode ser copiado para o servidor.</p>";

}
else
	die("Selecione o arquivo a ser enviado");
	
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No arquivo original esta da seguinte forma:

<form method=POST action="executa_upload.php" enctype=multipart/form-data>
<input type="hidden" name="MAX_FILE_SIZE" value="200000">
<p align=center>Arquivo: <input type="file" name="arquivo" size="30">
<p align=center><input type=submit value="Enviar arquivo">
</form>
Entretanto não posso ter dois formulários em um memso documento.

Coloquei todo o conteúdo do arquivo dentro de um outro arquivo que processa dos dados do formulario,

assim ao fim do cadastro no banco, e o arquivo é copiado para o filesystem.

 

Mas como colocar enctype=multipart/form-data sem definir no form ?

 

Ja vi o mesmo esquema que estou tentando construir em sites como www.ceviu.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Define no form mesmo, junto com os outros campos... Você não juntou os dois arquivos que recebiam os dados do formulário? Então tem que juntar os dois formulários também.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Matias,

 

Sim, eu coloquei no fim do arquivo cadastra.php todo codigo upload.php.

Tentei juntar os dois formulários, com o codigo abaixo, porem ele executa somente o action do ultimo formulario.

O upload é efetuado com sucesso mas os dados do formulario não são cadastrados.

 

<form name="cadastro" action='cadastro.php' method="post" onSubmit="return validaFormCad()">	
    <div id="formulario">
         <fieldset>
         <legend>Cadastro:</legend>

          <label for="nomefab">Nome do Fabrica:</label>
          <input type="text" name="nomefab" id="nomefab" size="40" /> <br/><br/>

          <label for="endereco">Endereço:</label>
          <input type="text" name="endereco" id="endereco" size="20" /> <br/>
          </form>
        	   
         <form name="upload" method=post action="executa_upload.php" enctype=multipart/form-data>
         <input type="hidden" name="MAX_FILE_SIZE" value="200000">
         <p align=center>Arquivo: <input type="file" name="arquivo" size="30"> 
          </form>
         
         <input type=submit value="Enviar"><br>
         <input type="reset" name="reset" value="Limpar">

Como juntar os dois forms, para que ambos scripts sejam executados ?

 

Att,

 

Rodrigo Faria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você coloca tudo em um formulário só. Algo assim.

<form name="cadastro" action='cadastro.php' method="post" enctype="multipart/form-data" onsubmit="return validaFormCad()">    
    <div id="formulario">
         <fieldset>
         <legend>Cadastro:</legend>

          <label for="nomefab">Nome do Fabrica:</label>
          <input type="text" name="nomefab" id="nomefab" size="40" /> <br/><br/>

          <label for="endereco">Endereço:</label>
          <input type="text" name="endereco" id="endereco" size="20" /> <br/>
          </fieldset>
                   
         <fieldset>
         <input type="hidden" name="MAX_FILE_SIZE" value="200000">
         <p align=center>Arquivo: <input type="file" name="arquivo" size="30"> 
         </fieldset>         
         <input type=submit value="Enviar"><br>
         <input type="reset" name="reset" value="Limpar">

</form>

Aí você coloca tudo que tem que ser feito no arquivo cadastro.php.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o formulário que voce fez, e mandei imprimir a variavel $arquivo

 

Resultado do POST

3 x 4.jpg

Selecione o arquivo a ser enviado

 

 

É estranho que o nome do arquivo é enviado para uma outra pagina, mas o arquivo mesmo não é copiado.

 

#upload.php
$codigo =  ($_POST['codigo']);
$nome = ($_POST['nome']);
$arquivo = ($_POST['arquivo']);
echo "$arquivo<br>"

// elimina o limite de tempo de execuçao
set_time_limit (0);
// inclui o arquivo com as configurações
include "/home/rodrigo/public_html/php/upload/config_upload.inc";
arquivo = $_FILES['arquivo']['name'];
$tamanho_arquivo = $_FILES['arquivo']['size'];
$arquivo_temporario = $_FILES['arquivo']['tmp_name'];

if (!empty ($arquivo))
{
	if ($sobrescrever == "nao" && file_exists("$caminho_absoluto/$arquivo"))
		die("Arquivo já existe.");

	if (($limitar_tamanho == "sim") && ($tamanho_arquivo > $tamanho_bytes))
		die("Arquivo deve ter no máximo $tamanho_bytes bytes.");

	$ext = strrchr($arquivo,'.');
	if ($limitar_ext == "sim" && !in_array($ext,$extensoes_validas))
		die("Extensão de arquivo inválida para upload.");

	if(move_uploaded_file($arquivo_temporario, "$caminho_absoluto/$arquivo"))
	{
		echo "<p align=center>O upload do arquivo <b>". $arquivo."</b> foi concluido com sucesso.</p>";
		echo "<p align=center><a href=upload.html>Novo upload</a></p>";
	}
	else
		echo "<p align=center>O arquivo nao pode ser copiado para o servidor.</p>";


}
else
	die("Selecione o arquivo a ser enviado");
	
	

Alguma idéia ?

 

Att,

 

Rodrigo Faria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeira coisa. Habilite todas as mensagens de erro no seu código. Depois, vamos olhar...

 

$codigo =  ($_POST['codigo']);
$nome = ($_POST['nome']);
// esta $arquivo não existe, pois você não tem nenhum campo de nome arquivo que não seja a que vem em FILES.
$arquivo = ($_POST['arquivo']);
echo "$arquivo<br>"

// elimina o limite de tempo de execuçao
set_time_limit (0);
// inclui o arquivo com as configurações
include "/home/rodrigo/public_html/php/upload/config_upload.inc";
// aqui está faltando o $ para $arquivo.
arquivo = $_FILES['arquivo']['name'];
$tamanho_arquivo = $_FILES['arquivo']['size'];
$arquivo_temporario = $_FILES['arquivo']['tmp_name'];

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo tem 12K:

12K -rwxrwxrwx 1 rodrigo rodrigo 12K 2006-01-29 21:01 3 x 4.jpg

 

Defini sim:


<?php
#config_upload.php
// *** Parametros de configuracao da operacao

// Limitar as extensoes? (sim ou nao)
$limitar_ext = "sim";


// extensoes autorizadas
$extensoes_validas = array(".gif",".jpg",".jpeg",".bmp");

//caminho absoluto onde os arquivos serao armazenados
$caminho_absoluto = "/home/rodrigo/public_html/fabricas/fotos";

// Limitar o tamanho do arquivo? (sim ou nao)
$limitar_tamanho = "nao";

// tamanho limite do arquivo em bytes
$tamanho_bytes = "200000";

// se ja existir o arquivo, indica se ele deve ser sobrescrito (sim ou nao)
$sobrescrever = "nao";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.