Ir para conteúdo
Fórum Script Brasil
  • 0

função para validar checkbox


Carlos Rocha

Pergunta

Pessoal.

Boa tarde!

Tenho a função abaixo:

function filtrar_array_por_valor2($array, $index, $value) {
   if(is_array($array) && count($array) > 0) {
     foreach(array_keys($array) as $key) {
       $temp[$key] = $array[$key][$index];

      if ($temp[$key] = $value) {
         $newarray[$key] = $array[$key];
       }
     }
   }
   return $newarray;
 }

      $dados = filtrar_array_por_valor2($_POST, 'marcado', on);
print_r($dados);
A ideia aqui é: Tenho um form que postarei abaixo e ele tem alguns campos. Dente eles, um que é uma checkbox. Por estar dentro de um while, essa checkbox, acada laço do while, ganha um novo name
<input type=checkbox name=\"{$i}[marcado]\">
Nisso, quando o form é enviado, a checkbox vira uma array. Eu gostaria de saber, quais checkbox foram maracadas e deletar da array os indices que não foram marcadas. Tentei da forma acima, mas ele retorna todo os índices. Veja o código do form:
echo "<form action=\"carrinho.php?op=adicionar\" name=\"adcionaumaum[$id]\"  method=\"post\">";
      $i=0;          
     while(list($id, $nome_produto, $preço, $foto, $quantidadecaixa, $descricao, $nome_fornecedor, $razao_fornecedor, $idfornece,$nome_grupo) = mysql_fetch_row($sql2)){        
      echo "<input type=\"hidden\" name=\"id_prod\" value=\"$id\">
            <input type=\"hidden\" name=\"id_fornece\" value=\"$id_fornece\">";            

    include("../global/funcoes_php/foto_ver.php");
     $icone = "<img border=0 src=../img/saiba_mais.png  alt='Saiba Mais'>";                        
         
     echo "<tr>
              <td align=center>$foto2</td>
              <td align=let>$nome_produto</td>
              <td align=let>$nome_grupo</td>
              <td align=center><a href='?acao=saibamais&id=$id&id_fornece=$id_fornece'>$icone</a></td>
              <td align=right>$quantidadecaixa</td>
              <td align=left>R$ <input type=\"text\" name=\"{$i}[novo_preco]\" id=\"{$i}[novo_preco]\" value=\"$preço\" size=\"08\" style=\"text-align:right\" onKeyPress=\"return(MascaraMoeda(this,'','.',event))\"></td>
              <td align=center> <input type=\"text\" name=\"{$i}[novo_imposto]\" id=\"{$i}[novo_imposto]\" value=\"0\" size=\"08\" style=\"text-align:center\" onKeyPress=\"BloqueiaLetras();\"> %</td>
             <input type=\"hidden\" name=\"{$i}[preco_novo]\" id=\"{$i}[preco_novo]\" value=\"\">
               <td align=let><input type=checkbox name=\"{$i}[marcado]\"></td>
              <td align=center valign=\"middle\">
<a href=\"#\" onclick=\"this.href=' carrinho.php?op=adicionar&id_produto=$id&id_fornece=$id_fornece&imposto='+document.getElementById('{$i}[novo_imposto]').value+'&novopreco='+calculo(document.getElementById('{$i}[novo_preco]').value,document.getElementById('{$i}[novo_imposto]').value);\" > Enviar </a>
              </td>
            </tr>";
                 $i++;                                               
                               }    
                echo "
                 <tr>
                     <td align=center valign=\"middle\" colspan=8 height=50>
                       <input type=\"submit\" value=\"Enviar todos os ítens\">
                     </td>
                 </tr> 
                </table>
              </form>
                    ";
                                   }
     ?>

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

tenho ma função que verifica campos enviados por POST mas que seus campos rodam dentro de um while.

Desta forma, quando enviados, esses campos viram um array de campos.

Um deles, é uma checkbox.

então o array se compõe de todos os campos enviados. E, este array, em cada linha do while, ganha um índice.

Daí, quando esse form é enviado, gotaria de filtrar quais laços do while foram enviados, filtrando pelo checkbox que foi maracado. ou seja, se o checkbox foi maracado, os outros campos do form me interessam, se não foi maracado, nõ interessam.

A funçao é essa:

<?
function filtrar_array_por_valor($array, $index, $value) {
   if(is_array($array) && count($array) > 0) {
     foreach(array_keys($array) as $key) {
       $temp[$key] = $array[$key][$index];

      if ($temp[$key] = $value) {
         $newarray[$key] = $array[$key];
       }
     }
   }
   return $newarray;
 }
?>
Estou chamando ela assim:
$dados = filtrar_array_por_valor($_POST, 'marcado', 'on');
       print_r($dados);
Mas, mesmo assim não esta filtrando. Onde esta o erro? O problema estava aqui: Não é assim:
if ($temp[$key] = $value) {
é assim:
if ($temp[$key] == $value) {

Grato a todos

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...