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

foreach checkbox


three

Pergunta

Hallo Leute!

Estou tentando implementar uma selecao em checkbox para categorias de posts de um blog em CakePHP.

Em resumo, acho que o Cake está escrevendo o valor de cada check box um em cima do outro porque o resultado final na array fornece apenas 1 elemento que os valores variam em 0 e 2, os valores do último checkbox. =´)

Se alguém já passou por algo parecido e tiver alguma dica, será de graaaaaande ajuda.

Abaixo trechos dos códigos do Cake que ajudam a entender o que está acontecendo:

Abracos,

Three®

pr($categories) answer:

Array
(
    [1] => automotive
    [4] => banking and finance
    [5] => construction
    [6] => consulting
    [7] => energy
    [3] => study case
    [2] => telecom
)

-----------------------------------------------------------------------------

Trecho do código no View/news_posts/manage

   <table>    
       <tr> 
       <td>Categories:</td>
       <td><? foreach ($categories as $id=>$name)
          {
             echo $name;
             echo $html->checkbox('CategoriesNewsPost/category_id', $name, array('value'=> $id, 'id' => $name.'_'), true);
             echo '<br />';                
          } ?>
       </td> 
       </tr> 
   </table>

-----------------------------------------------------------------------------

Código retirado do script

<table>    
<tr> 

<td>Categories:</td>
<td>
automotive<input type="hidden" name="data[CategoriesNewsPost][category_id]"  value="0" id="automotive__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="1" id="automotive_" /><br />

banking and finance<input type="hidden" name="data[CategoriesNewsPost][category_id]"  value="0" id="banking and finance__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="4" id="banking and finance_" /><br />

construction<input type="hidden" name="data[CategoriesNewsPost][category_id]"  value="0" id="construction__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="5" id="construction_" /><br />

consulting<input type="hidden" name="data[CategoriesNewsPost][category_id]"  value="0" id="consulting__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="6" id="consulting_" /><br />

energy<input type="hidden" name="data[CategoriesNewsPost][category_id]"  value="0" id="energy__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="7" id="energy_" /><br />

study case<input type="hidden" name="data[CategoriesNewsPost][category_id]"  value="0" id="study case__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="3" id="study case_" /><br />

telecom<input type="hidden" name="data[CategoriesNewsPost][category_id]"  value="0" id="telecom__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="2" id="telecom_" /><br />

</td>

</tr> 
</table>

-----------------------------------------------------------------------------
parte do código no controller:

<?php
        if(!empty($this->data))
        {
        pr($this->data);
            if($this->NewsPost->validates($this->data))
            {

              if ($this->NewsPost->save($this->data))
              {
                // if Save and Continue Button
                    $this->set('done', 'true');
                    $this->set('newspost_id', $this->NewsPost->getID());
                    $this->NewsPost->saveField('user_id', $userlogged['id']);
                    
                    
                    foreach ( $this->data['CategoriesNewsPost'] as $data)
                    {    
                        if ($data['category_id'] != 0)
                        {
                        $this->CategoriesNewsPost->id = null;
                        $this->CategoriesNewsPost->saveField('news_post_id',$this->NewsPost->getLastInsertID());
                        $this->CategoriesNewsPost->saveField('category_id',$this->data['CategoriesNewsPost']['category_id']);
                        }
                    }             
                    
                // if Save Button +
                    $this->redirect('/news_posts/index');
                // if Publish Button +
                    //$this->NewsPost->saveField('draft', '0');        
              }
            }
            else
            {
                $this->validateErrors($this->Comments); //set the values for the tagErrorMsg
            }

?>

-----------------------------------------------------------------------------

pr($this->data) answer:

Array
(
    [NewsPost] => Array
        (
            [title] => Test 6
            [resume] => 
            [message] => 

Test 6

            [attached_path] => 
            [allow_comment] => 1
            [publish] => 0
        )

    [CategoriesNewsPost] => Array
        (
            [category_id] => 2
        )

)

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

tu queres e que cada check box fique com um valor diferente este valor vem da base de dados?

<form method="post" action="ceck.php">

<?php

while($res = mysql_fetch_assoc($query)){

echo $res['nome'];?><input type=checkbox" name="ceck[]" value="<?php echo $res['valor];?>"/>

<?php } ?>

<label>

<input type="submit" name="Submit" value="Submit" />

</label>

</form>

depois para receber estes dados pode ser assim

<?php

if(empty($_POST['ceck'])){

echo("Por favor selecione um campo");

exit();

}

foreach($_POST['ceck'] as $che){

echo $che;

?>

<br/>

<?php

} ?>

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...