Ir para conteúdo

POWERED BY:

Arquivado

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

WM _ Guilherme Ferrolli

[Resolvido] Submit Formulário com itens incluidos via DOM

Recommended Posts

Bom,

Tenho uma estrutura aonde gerencio os acontecimentos de um dia e a programação para o mesmo.

E cada dia é um formulário independete. Preciso disso porque visualizo somente de 5 em 5 dias e tenho a opção de avançar ou retroceder dias.

e devo poder salvar individualmente cada dia.

meu formulário é desta hierarquia

<form>
  <div>
     <input/>
     <input/>
     <input/>
  </div>
  <div>
     <input/>
     <input/>
     <input/>
  </div>
  <div>
     <input/>
     <input/>
     <input/>
  </div>   
</form>
<form>
  <div>
     <input/>
     <input/>
     <input/>
  </div>
  <div>
     <input/>
     <input/>
     <input/>
  </div>
  <div>
     <input/>
     <input/>
     <input/>
  </div>   
</form>

 

 

Em cada formulário eu incluo e excluo via DOM o conteúdo, e naturalmente eu preciso postar o resultado.

porém não está sendo postado

 

Com um submit normal não funciona, nem jquery submit(), ou mesmo via ajax.

alguém tem alguma idéia?

Abraços ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em cada formulário eu incluo e excluo via DOM o conteúdo

mas ai você só tem UM UNICO formulario.

 

Com um submit normal não funciona, nem jquery submit(), ou mesmo via ajax.

alguém tem alguma idéia?

apresente o codigo da situação real.

se for um erro, não vamos conseguir notar pelo pseudo codigo.

 

Corrija oque aparecer no Ctrl+Shif+J do Firefox.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas ai você só tem UM UNICO formulario.

São vários forms cada um dentro de um container.

Corrija oque aparecer no Ctrl+Shif+J do Firefox.

Sem erros de Javascript.

 

apresente o codigo da situação real.

se for um erro, não vamos conseguir notar pelo pseudo codigo.

 

 


<table class="programacao" cellspacing="3" id="tabela_programacao">	
<tr>
<?php $indice_obra=0; ?>
<?php foreach($dias as $key=>$dia) :?>
	<td class="programacao-dia" id="d_<?php echo $key ?>">
		<form action="/obras/programacao/salvar/" class="dia" method="post">
		<div class="programacao-dia-topo">
			<span class="programacao-dia-data"><?php echo $dia['data'] ?></span>
			<span class="programacao-dia-data-extenso"> - <?php echo $dia['dia_da_semana'] ?></span>
			<div class="action copiar_dia"></div>
			<div class="action adicionar_obra"></div>
				<!-- era um submit, só está button para testar via submit pelo js -->
			<input type="button" class="salvar-obra" value="Salvar" />				
			<input type="hidden" name="programacao_dia[data]" value="<?php echo $dia['data'] ?>"/>
		</div>
		<div class="programacao-dia-funcionarios">
			<div class="header">
				<span class="left">Funcionários disponíveis para </span>
				<span class="nome left"></span>
				<div class="fechar"></div>
			</div>
			<div class="content">
				<?php 						
					$count_f = count($funcionarios);
					$cols = ceil($count_f/10);
					$width = 820;
					$padding = 5;
					$margin = 1;
					$border = 1;
					$col_width = (($width/$cols) - ($padding*2) - ($margin*2) - ($border*2));
					$col_width = $col_width.'px';
				?>
				<div class="funcionarios">
				<?php foreach($funcionarios as $key_f=>$funcionario_lista) :?>						
					<div class="funcionario"  style="width:<?php echo $col_width ?> !important">
						<div class="nome"><?php echo $funcionario_lista['nome'] ?></div>
						<input class="codigo" type="hidden" value="<?php echo $funcionario_lista['codigo'] ?>"/>
					</div>
				<?php endforeach ?>
				</div>
			</div>
		</div>
		<?php foreach($dia['obras'] as $key_o=>$obra) :?>
		<div class="programacao-dia-obra" id="o_<?php echo $indice_obra ?>">
			<input type="hidden" name="programacao_dia[obra][<?php echo $indice_obra ?>][codigo]" class="obra_codigo" value="<?php echo $obra['codigo'] ?>"/>
			<div class="header">
				<span class="nome"><?php echo $obra['nome'] ?></span>
				<span class="cidade"><?php echo $obra['cidade'] ?></span>
				<span class="uf">- <?php echo $obra['uf'] ?></span>
				<div class="action-minimize"></div>
				<div class="action-maximize"></div>
			</div>
			<div class="content">
				<div class="actions">
					<img class="action add_funcionarios" border="0" src="/img/add_worker.png"/>
					<img class="action observacao" border="0" src="/img/observacao.png"/>
					<img class="action veiculo" border="0" src="/img/truck.png"/>
				</div>
				<div class="titulo">Metragem :<?php echo $obra['metragem'] ?></div>
				<div class="titulo"><?php echo $obra['representante'] ?></div>
				<div class="funcionarios">						
					<?php foreach($obra['funcionarios'] as $key_of=>$funcionarios_obra): ?>
					<input type="hidden" name="programacao_dia[obra][<?php echo $indice_obra ?>][funcionario][]" value="<?php echo $funcionarios_obra['codigo']?>"/>
					<div class="funcionario">
						<div class="excluir"></div>
						<div class="nome"><?php echo $funcionarios_obra['nome']?></div>
						<input class="codigo" type="hidden" value="<?php echo $funcionarios_obra['codigo']?>" />
					</div>
					<?php endforeach ?>
				</div>
			</div>				
			<textarea class="content-observacao"><?php echo $obra['observacao'] ?></textarea>
		</div>
		<?php $indice_obra++ ?>
		<?php endforeach?>
		</form>
	</td>
<?php endforeach ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendo de php meu lance é asp mais isso me chamou a atenção

 

<?php foreach($dia['obras'] as $key_o=>$obra) :?>

 

Pra que aquele ":" no final do code? o correto não seria

 

<?php foreach($dia['obras'] as $key_o=>$obra) ?>

 

????

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguns inputs teus não tem name, e outros estão incorretos.

 

se você quer trabalhar com arrays, o name deles devem terminar em []

 

'não funciona' é muito genérico.

Oque acontece ? não recebe os dados ? você já debugou com um var_dump( $_POST ); ?

 

coloque tb o código js que você está usando.

com um submit no final do form, apos os campos, dá certo ?

 

 

Pra que aquele ":" no final do code? o correto não seria

sintaxe do php.

ASP não tem {}, mas php sim. No caso o : indica o inicio do bloco de instruções. (o mesmo que as chaves)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendo de php meu lance é asp mais isso me chamou a atenção

 

<?php foreach($dia['obras'] as $key_o=>$obra) :?>

 

Pra que aquele ":" no final do code? o correto não seria

 

<?php foreach($dia['obras'] as $key_o=>$obra) ?>

 

????

O escope serve justamente para eu poder abrir uma tag php dentro inline, quer dizer, escrevo o html ao invés de usar

o echo "<div>".$nome."</div>" eu uso <div><?php echo $nome ?></div>

e para abrir statements php desta maneira se usa o " : " , incluido condicionais como

<?php if(1==1) : ?>
<div class="nome">Guilherme</div>
<?php else: ?>
<div class="nome">Astrogildo</div>
<?php endif ?>

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, entendo PHP minimamente rsrsrsrs, mais siga a sugestão do William abaixo do meu post anterior a este, faz sentido o que ele colocou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguns inputs teus não tem name, e outros estão incorretos.

 

se você quer trabalhar com arrays, o name deles devem terminar em []

 

'não funciona' é muito genérico.

Oque acontece ? não recebe os dados ? você já debugou com um var_dump( $_POST ); ?

Então, recebe, porém que só os que ja estavam no form os que inclúo não aparecem. Se eu excluir algo que ja estava , ai não posta pro controller, porém incluir não rola.. e os inputs que não tem name , no caso são irrelevantes.

coloque tb o código js que você está usando.

com um submit no final do form, apos os campos, dá certo ?

Não, se eu der um submit igual ele posta só os que ja estavam carregados no html;

 

      $(".salvar-obra").live("click",function() {
	$form = $(this).parent().parent().serialize();
	$.post("/obras/programacao/salvar",$form,function(data) {
		$("#custom_message").show();
		$("#custom_message").html(data);
	});
});

OU

       $(".salvar-obra").live("click",function() {
	$(this).parent().parent().submit();
});

 

Este é o array que ele me retorna no print_r

e está na ordem perfeita , só faltam os ítens que inclui via DOM

Array
(
   [programacao_dia] => Array
       (
           [data] => 17/05/2011
           [obra] => Array
               (
                   [0] => Array
                       (
                           [codigo] => 01
                           [funcionario] => Array
                               (
                                   [0] => 0
                                   [1] => 1
                                   [2] => 2
                               )

                       )

                   [1] => Array
                       (
                           [codigo] => 02
                           [funcionario] => Array
                               (
                                   [0] => 3
                                   [1] => 4
                                   [2] => 5
                               )

                       )

                   [2] => Array
                       (
                           [codigo] => 03
                           [funcionario] => Array
                               (
                                   [0] => 6
                                   [1] => 7
                                   [2] => 8
                               )

                       )

                   [3] => Array
                       (
                           [codigo] => 04
                           [funcionario] => Array
                               (
                                   [0] => 9
                                   [1] => 10
                               )

                       )

                   [4] => Array
                       (
                           [codigo] => 05
                           [funcionario] => Array
                               (
                                   [0] => 11
                                   [1] => 12
                                   [2] => 13
                                   [3] => 14
                               )

                       )

                   [5] => Array
                       (
                           [codigo] => 06
                           [funcionario] => Array
                               (
                                   [0] => 15
                                   [1] => 16
                                   [2] => 17
                                   [3] => 18
                               )

                       )

               )

       )

)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostre como você está tentando inserir via DOM.

 

estou desconfiando, que os inputs que você está inserindo, estão caindo fora do form

verifique com o FireBug.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só você tinha toda razão.

O que estava acontecendo era o seguinte.

O meu script que controla a interface é muito grande e carregado de informações e funções, por isso não coloquei ele aqui,

mas o problema era bem simples: Não estava incluindo dentro do Form. Bom como eu disse, o script da interface é bem grande, e eu criei um desfazer e refazer ações

que incluíam adição e exclusão de "obras"( no caso ), e salvo as alterações no DOM o que gerou a confusão, porque no fim o html estava sendo incluido no dom do histórico das alterações.

 

De qualquer forma, fico grato pela presteza. Faz tempo que não posto nada por aqui.

Vou voltar com minha atividade.

Abraços a todos ;)

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.