Ir para conteúdo

POWERED BY:

Arquivado

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

manolegal

Validar campo array

Recommended Posts

Tenho o seguinte código:

 

<table width="80%" border="1" cellspacing="0" cellpadding="0" align="center" id="detalhes">

<tr bgcolor="#000039">
   <td align="center" colspan="6"><strong><font color="#FFFFFF">Detalhes</font></strong></td>
</tr>

<tr>
  <td width="10%" class="branco"></td>
  <td width="25%">Tipo Dcto Fiscal</td>
  <td width="15%">Numero Dcto Fiscal</td>
  <td width="20%">Valor Dcto Fiscal</td>
  <td width="20%">Data Dcto Fiscal</td>
  <td width="10%">Fornecedor</td>
</tr>

<tr>
<td><center>1</center></td>

<td><select name="tipo_dcto_fiscal[]" id="tipo_dcto_fiscal[]" onfocus="mudacor(this,'yellow')" onblur="mudacor(this,'white')" onkeypress="return handleEnter(this, event)">
<option value="">-- Selecionar --</option>
<?php
   $Sql = "SELECT ... FROM ....";
?>
<option value="<?php echo $id_tipo_dcto;?>">
<?php if($id_tipo_dcto == $_POST['tipo_dcto_fiscal']){ echo "selected"; } ?>
<?php echo $tipo_dcto; ?>
</option>
<?php } ?>
</select>
</td>

<td>
   <input name="numero_dcto_fiscal[]" id="numero_dcto_fiscal[]" type="text" size="15" maxlength="12">
</td>

<td>
   <input name="valor_dcto_fiscal[]" id="valor_dcto_fiscal[]" type="text" size="12"  maxlength="10">
</td>

<td>
   <input name="data_dcto_fiscal[]" id="data_dcto_fiscal[]" type="text" size="12" maxlength="10" onkeypress="return handleEnter(this, event) && formatar_mascara(this, '##/##/####')" onfocus="mudacor(this,'yellow')" onblur="mudacor(this,'white')"
onKeyUp = "this.value=formateadata(this.value);">
</td>

<td><select name="empresa_id[]" id="empresa_id[]" onfocus="mudacor(this,'yellow')" onblur="mudacor(this,'white')" onkeypress="return handleEnter(this, event)">
<option value="">-- Selecionar --</option>
<?php
   $Sql = "SELECT ... FROM ... ";
   $Resultado = executa($Sql);
?>
<option value="<?php echo $id_empresa;?>">
<?php if($id_empresa == $_POST['nome']){ echo "selected"; } ?>
<?php echo $empresa; ?>
</option>
<?php } ?>
</select>
</td>
</tr>

</table>

 

Estou com dificuldades para validar os campos.

Se defino o nome dos campos normalmente sem especificar que é array "numero_dcto_fiscal" consigo validar todos os campos, mas consigo inserir apenas 01 linha de dados.

Se defino o nome do campo especificando que é array "numero_dcto_fiscal[]" não consigo validar corretamente. Caso algum campo de uma linha fique em branco, o código tem sequencia e ocorrem problemas no momento de inserir os dados na tabela.

Gostaria da ajuda dos amigos. Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A validação:

 

$tipo_dcto_fiscal = $_POST ["tipo_dcto_fiscal"];
$numero_dcto_fiscal = $_POST ["numero_dcto_fiscal"];
$valor_dcto_fiscal = $_POST ["valor_dcto_fiscal"];
$valor_dcto_fiscal_formato = ereg_replace (",", ".", $valor_dcto_fiscal);
$data_dcto_fiscal = $_POST ["data_dcto_fiscal"];
$empresa_id = $_POST ["empresa_id"];

if (empty($tipo_dcto_fiscal)){
   $erro=1;
   echo "<center>Informe o Tipo de Documento Fiscal!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }

if (empty($numero_dcto_fiscal)){
   $erro=1;
   echo "<center>Informe o Numero do Documento Fiscal!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }

if (empty($valor_dcto_fiscal)){
   $erro=1;
   echo "<center>Informe o Valor do Documento Fiscal!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }

if (empty($data_dcto_fiscal)){
   $erro=1;
   echo "<center>Informe a Data do Documento Fiscal!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }

if (empty($empresa_id)){
   $erro=1;
   echo "<center>Informe o Fornecedor!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

de um print_r nesse array primeira para ver se eles estão corretos. depois percorra os arrays:

foreach($tipo_dcto_fiscal as $item){
if (empty($item)){
	$erro=1; echo "<center>Informe o Tipo de Documento Fiscal!</center>";
	 echo "<center>	<input type='button' value='Voltar' name='btnVoltar'Onclick='javascript:history.go(-1)'></center>";
	 exit;
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza. Consegui resolver a questão da validação não permitindo ficar algum campo em branco.

Agora estou validando os dados na mesma página, e estou tendo dificuldades para manter os dados digitados/selecionados nos campos, quando acontece algum erro.

 

Se eu selecionar por exemplo o campo "$tipo_dcto_fiscal" e deixar os demais campos em branco, ao submeter o formulário mostra a mensagem de erro, mas o campo $tipo_dcto_fiscal não volta selecionado.

Tentei o seguinte código:

 

<?php
if ($_SERVER['REQUEST_METHOD'] == "POST"){

$tipo_dcto_fiscal = $_POST ["tipo_dcto_fiscal"];
$numero_dcto_fiscal = $_POST ["numero_dcto_fiscal"];

foreach($numero_dcto_fiscal as $item){
   if (empty($item)){
   $erro=1;
   $msg_erro = "<center><b><font color=#FF0000>Verifique o campo Número Documento Fiscal!</font></b></center>";
   }
}

foreach($tipo_dcto_fiscal as $item){
   if (empty($item)){
   $erro=1;
   $msg_erro = "<center><b><font color=#FF0000>Verifique o campo Tipo Documento Fiscal!</font></b></center>";
   }
}

}
?>

<td><select name="tipo_dcto_fiscal[]" id="tipo_dcto_fiscal[]" onfocus="mudacor(this,'yellow')" onblur="mudacor(this,'white')" onkeypress="return handleEnter(this, event)">
<option value="">-- Selecionar --</option>
<?php
   $Sql = "SELECT ... FROM ....";
   $Resultado = executa($Sql);
while ($linha = pg_fetch_array($Resultado)){
$id_tipo_dcto = $linha["id_tipo_dcto_fiscal"];
$tipo_dcto = $linha["tipo_dcto_fiscal"];
   if ($_POST ["tipo_dcto_fiscal[]"] == $id_tipo_dcto)
   echo "<option value='$id_tipo_dcto' selected = 'selected'>$tipo_dcto</option>";
   else
   echo "<option value='$id_tipo_dcto'>$tipo_dcto</option>";
}
?>
</select></td>

 

Mas não está retornando o dado selecionado.

 

Alguém teria alguma dica?

 

Já procurei em vários tópicos mas não consegui resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom vi rapidamente aqui pq você esta usando array nos inputs?/

 

ex>> <input name="doc_tipo[]" />

 

geralmente você poderia fazer assim ex. form. contato

 

<input name="contato[nome]" />
<input name="contato[email]" />
<input name="contato[site]" />

 

na verificação

 



$contato = $_REQUEST['contato'];

if (empty($contato[nome])){
   $erro=1;
   echo "<center>nome obrigatorio!</center>";
   echo "<center><input type = 'button' value = 'Voltar' name = 'btnVoltar' Onclick = 'javascript:history.go(-1)'></center>";
   exit;
   }

 

no proprio form você coloca assim

 

<input name="contato[nome]" value="<?=$contato[nome]?>" />

 

acho que deu pra você entender neh..

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando array pois vou digitar mais de um dado em cada campo.

 

Imagino q da forma q estou fazendo deva estar correto também. Caso não esteja, por favor me corrijam.

 

if ($_SERVER['REQUEST_METHOD'] == "POST"){

foreach($tipo_dcto_fiscal as $item){
   if (empty($item)){
   $erro=1;
   $msg_erro = "<center><b><font color=#FF0000>Verifique o campo Tipo Documento Fiscal!</font></b></center>";
   }
}

 

Estou tendo grande dificuldades para manter os dados digitados/selecionados nos campos, quando acontece algum erro.

 

Alguém teria alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei o código,

 

if ($_SERVER['REQUEST_METHOD'] == "POST"){

if (!empty($tipo_dcto_fiscal)) { // Se array nao esta vazio
foreach($tipo_dcto_fiscal as $item){
   if (empty($item)){
   $erro=1;
   $msg_erro = "<center><b><font color=#FF0000>Verifique o campo Tipo Documento Fiscal!</font></b></center>";
   }
 }
}
else { // Caso array esteja vazio
   $erro=1;
   $msg_erro = "<center><b><font color=#FF0000>Verifique Detalhes do Auxilio!</font></b></center>";
}

 

mas continuo com problemas para manter os dados já digitados, quando acontece algum problema.

 

Alguém teria alguma dica?

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.