Galera, estou com 1 problema que não consigo resolver.
Tenho um formulario que ao clicar em um radio ele me cria um input file onde o formulario acessara um programa php que irá jogar os arquivos selecionados no servidor... pois bem quando o campo é fixo funciona perfeitamente, porém quando eu crio o campo dinamicamente por DOM ou se uso innerHTML o valor pelo post não é atribuido... tanto que se eu uso um isset ele retorna false... só que isso acontece apenas no FF e no IE funciona perfeitamente... segue o codigo das paginas
<?php
if( isset( $_POST['enviar'] ) ) {
$pathToSave = 'C:\Documents and Settings\Bruno\Meus documentos\Sites\Eduardo\uploads\\';
// A variavel $_FILES é uma variável do PHP, e é ela a responsável
// por tratar arquivos que sejam enviados em um formulário
// Nesse caso agora, a nossa variável $_FILES é um array com 3 dimensoes
// e teremos de trata-lo, para realizar o upload dos arquivos
// Quando é definido o nome de um campo no form html, terminado por []
// ele é tratado como se fosse um array, e por isso podemos ter varios
// campos com o mesmo nome
$i = 0;
$msg = array( );
$arquivos = array( array( ) );
foreach( $_FILES as $key=>$info ) {
foreach( $info as $key=>$dados ) {
for( $i = 0; $i < sizeof( $dados ); $i++ ) {
// Aqui, transformamos o array $_FILES de:
// $_FILES["arquivo"]["name"][0]
// $_FILES["arquivo"]["name"][1]
// $_FILES["arquivo"]["name"][2]
// $_FILES["arquivo"]["name"][3]
// para
// $arquivo[0]["name"]
// $arquivo[1]["name"]
// $arquivo[2]["name"]
// $arquivo[3]["name"]
// Dessa forma, fica mais facil trabalharmos o array depois, para salvar
// o arquivo
$arquivos[$i][$key] = $info[$key][$i];
}
}
}
$i = 1;
// Fazemos o upload normalmente, igual no exemplo anterior
foreach( $arquivos as $file ) {
// Verificar se o campo do arquivo foi preenchido
if( $file['name'] != '' ) {
$arquivoTmp = $file['tmp_name'];
$arquivo = $pathToSave.$file['name'];
if( !move_uploaded_file( $arquivoTmp, $arquivo ) ) {
$msg[$i] = 'Erro no upload do arquivo '.$i;
} else {
$msg[$i] = sprintf('Upload do arquivo %s foi um sucesso!',$i);
}
} else {
$msg[$i] = sprintf('O arquivo %d não foi preenchido',$i);
}
$i++;
}
// Imprimimos as mensagens geradas pelo sistema
foreach( $msg as $e ) {
printf('%s<br>', $e);
}
}
include "../../conexao/conexao_mysql.inc";
import_request_variables("p");
// Cadastro no banco//
//$chave = md5($email);
//$insere_sql = "INSERT INTO users_temp(tipo_cadastro,nome_razao,cpf_cnpj,cep,endereco,n_end,municipio,uf,ddd,telefone,celular,login,senha,email,chave) VALUES ('$tipo_cadastro','$nome_razao','$cpf_cnpj','$cep','$endereco','$n_end','$municipio','$uf','$ddd','$telefone','$celular','$username','$password','$email','$chave')";
//$insere_query = mysql_query($insere_sql) or die(mysql_error());
//if(mysql_affected_rows()==1){
//echo "Seu cadastro foi efetuado com Sucesso!, em alguns instantes receberá um email de confirmação.<br> Aguarda você será redirecionado para pagina principal <meta http-equiv=\"refresh\" content=\"3;URL=cadastro.html\" />";
//}
?>
Pergunta
brunocasado
Galera, estou com 1 problema que não consigo resolver.
Tenho um formulario que ao clicar em um radio ele me cria um input file onde o formulario acessara um programa php que irá jogar os arquivos selecionados no servidor... pois bem quando o campo é fixo funciona perfeitamente, porém quando eu crio o campo dinamicamente por DOM ou se uso innerHTML o valor pelo post não é atribuido... tanto que se eu uso um isset ele retorna false... só que isso acontece apenas no FF e no IE funciona perfeitamente... segue o codigo das paginas
HTML PARTE DO JAVA E FORM
function TipoCadastro(tipo){ if(tipo==2) { proxIndice = document.getElementById('cadastro').rows.length-7; novaLinha = document.getElementById('cadastro').insertRow(proxIndice); document.getElementById('cadastro').rows[2].cells[0].innerHTML = "Razão Social:"; document.getElementById('cadastro').rows[3].cells[0].innerHTML = "CNPJ"; var novasCelulas = new Array(5); newField = document.createElement("input"); newField.type = "file"; newField.name = "arquivo[]"; for(var i=0;i<novasCelulas.length;i++) novasCelulas[i] = novaLinha.insertCell(i); novasCelulas[1].appendChild(newField); }else{ document.getElementById('cadastro').rows[2].cells[0].innerHTML = "Nome:"; document.getElementById('cadastro').rows[3].cells[0].innerHTML = "CPF"; document.getElementById('cadastro').deleteRow(12); } } function resetaCheck(){ document.getElementsByTagName('tipo_cadastro').checked = true; } resetaCheck(); </script> <table id="cadastro"> <form name="form" action="cadastro.php" method="post" enctype="multipart/form-data"> <tr> <td width="99"></td> <td width="171">Cadastro de informações</td> </tr> <tr> <td></td> <td nowrap="nowrap">Pessoa Física: <input name="tipo_cadastro" onchange="java script:TipoCadastro(this.value)" type="radio" value="1" checked /> Jurídico: <input name="tipo_cadastro" onchange="java script:TipoCadastro(this.value)" type="radio" value="2" /></td> </tr> <tr> <td id="nome">Nome:</td> <td><input name="nome_razao" /></td> </tr> <tr> <td id="cpf">CPF:</td> <td><input name="cpf_cnpj" /></td> </tr> <tr> <td>CEP:</td> <td><input name="cep" /></td> <td><a href="java script:busca_cep()">Buscar CEP</a></td> <td><div id="retorno_cep"></div></td> </tr> <tr> <td>Endereço:</td> <td><input name="endereco" /></td> <td>Nº <input name="n_end" /></td> </tr> <tr> </tr> <tr> <td>Município:</td> <td><input name="municipio" /></td> </tr> <tr> <td>UF:</td> <td><input name="uf" /></td> </tr> <tr> <td>DDD:</td> <td><input name="ddd" /></td> </tr> <tr> <td>Telefone:</td> <td><input name="telefone" /></td> </tr> <tr> <td>Celular:</td> <td><input name="celular" /></td> </tr> <tr> <td></td> <td>Cadastro de Acesso:</td> </tr> <tr> <td>Login</td> <td><input name="username" /></td> <td width="224">Digite um nome de usuário válido</td> </tr> <tr> <td>Senha</td> <td><input name="password" type="password" /></td> </tr> <tr> <td>Confirmar senha</td> <td><input name="password2" type="password" /> </td> </tr> <tr> <td>Email:</td> <td><input name="email" /></td> </tr> <tr> <td>Confirmar Email</td> <td><input name="email2" /></td> </tr> <tr> <td></td> <td> <input type='submit' value='Enviar' name='enviar'></td> </tr> </form> </table>Parte do php<?php if( isset( $_POST['enviar'] ) ) { $pathToSave = 'C:\Documents and Settings\Bruno\Meus documentos\Sites\Eduardo\uploads\\'; // A variavel $_FILES é uma variável do PHP, e é ela a responsável // por tratar arquivos que sejam enviados em um formulário // Nesse caso agora, a nossa variável $_FILES é um array com 3 dimensoes // e teremos de trata-lo, para realizar o upload dos arquivos // Quando é definido o nome de um campo no form html, terminado por [] // ele é tratado como se fosse um array, e por isso podemos ter varios // campos com o mesmo nome $i = 0; $msg = array( ); $arquivos = array( array( ) ); foreach( $_FILES as $key=>$info ) { foreach( $info as $key=>$dados ) { for( $i = 0; $i < sizeof( $dados ); $i++ ) { // Aqui, transformamos o array $_FILES de: // $_FILES["arquivo"]["name"][0] // $_FILES["arquivo"]["name"][1] // $_FILES["arquivo"]["name"][2] // $_FILES["arquivo"]["name"][3] // para // $arquivo[0]["name"] // $arquivo[1]["name"] // $arquivo[2]["name"] // $arquivo[3]["name"] // Dessa forma, fica mais facil trabalharmos o array depois, para salvar // o arquivo $arquivos[$i][$key] = $info[$key][$i]; } } } $i = 1; // Fazemos o upload normalmente, igual no exemplo anterior foreach( $arquivos as $file ) { // Verificar se o campo do arquivo foi preenchido if( $file['name'] != '' ) { $arquivoTmp = $file['tmp_name']; $arquivo = $pathToSave.$file['name']; if( !move_uploaded_file( $arquivoTmp, $arquivo ) ) { $msg[$i] = 'Erro no upload do arquivo '.$i; } else { $msg[$i] = sprintf('Upload do arquivo %s foi um sucesso!',$i); } } else { $msg[$i] = sprintf('O arquivo %d não foi preenchido',$i); } $i++; } // Imprimimos as mensagens geradas pelo sistema foreach( $msg as $e ) { printf('%s<br>', $e); } } include "../../conexao/conexao_mysql.inc"; import_request_variables("p"); // Cadastro no banco// //$chave = md5($email); //$insere_sql = "INSERT INTO users_temp(tipo_cadastro,nome_razao,cpf_cnpj,cep,endereco,n_end,municipio,uf,ddd,telefone,celular,login,senha,email,chave) VALUES ('$tipo_cadastro','$nome_razao','$cpf_cnpj','$cep','$endereco','$n_end','$municipio','$uf','$ddd','$telefone','$celular','$username','$password','$email','$chave')"; //$insere_query = mysql_query($insere_sql) or die(mysql_error()); //if(mysql_affected_rows()==1){ //echo "Seu cadastro foi efetuado com Sucesso!, em alguns instantes receberá um email de confirmação.<br> Aguarda você será redirecionado para pagina principal <meta http-equiv=\"refresh\" content=\"3;URL=cadastro.html\" />"; //} ?>Link para o comentário
Compartilhar em outros sites
0 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.