Comecei a lidar com PHP recentemente e estou encontrando dificuldades pra inserir o valor dos checkbox no mySql. Estou fazendo um site para controle de um evento de bazares, todo ano tem novas edições com novas lojas participantes. O problema encontra-se na hora de adicionar valores ligando uma determinada Edição do evento com as Lojas participantes dele. Quando eu adiciono uma nova edição eu já adiciono as lojas, e aí está tudo O.K. Mas quando eu vou editar essa edição excluindo as lojas já existentes e adicionando novas, isso não ocorre.
HTML (tirei algumas coisas pra encurtar, no geral as tags tr, td, table, div, form, css e outras que não tinham php)
<? //SELECIONA TODAS AS LOJAS $loja = new Loja(); $lojas = $loja->selecionarTodasLojas("LojNome"); if($lojas != null){ foreach($lojas as $loja){ // VERIFICA SE A EDICAO SELECIONADA POSSUI A LOJA ATUAL $edicaoLoja = new EdicaoLoja(); $edicaoLoja->selecionarEdicoesLojaPorIdLojaIdEdicao($_GET['IdEdicao'],$loja->getId()); if($edicaoLoja->getId() != null){ ?> <td class="meio"><input name="edicaoLoja[IdLoja]" type="checkbox" checked="checked" value="<?=$loja->getId()?>"></td> <? }else{ ?> <td class="meio"><input name="edicaoLoja[IdLoja]" type="checkbox" value="<?=$loja->getId()?>"></td> <? } } } ?> <input type="hidden" name="acao" value="Adicionar"> <input type="submit" name="botao" value="Adicionar" id="botao" class="submit" />
PHP(também tirei algumas coisas, como redirecionamento e mensagens de erro ou sucesso)
$edicaoLoja = new EdicaoLoja(); $edicaoLoja->selecionarEdicaoLojasPorIdEdicao($_GET['IdEdicao']); switch($_POST['acao']) { // ADICIONAR case "Adicionar": if ($_POST['edicaoLoja'] != null){ foreach ($_POST['edicaoLoja'] as $idLoja) { $edicaoLoja = new EdicaoLoja(); $edicaoLoja ->setIdEdicao($_GET['IdEdicao']); $edicaoLoja ->setIdLoja($idLoja); $edicaoLoja ->adicionarEdicaoLoja($edicaoLoja); } } /* Esse é o modelo usado pra inserir as lojas no momento de criação do evento,mas quando ** tento inserir mais lojas depois de já ter criado a edição, esse mesmo método não dá certo ** (na hora de fazer o inserir após criar o evento, eu troquei ali o $_POST['loja'], ** por $_POST['edicaoLoja'], pra bater o name.) **/ if($_POST['loja'] != null){ foreach($_POST['loja'] as $idLoja){ $edicaoLoja = new EdicaoLoja(); $edicaoLoja->setIdEdicao($idEdicao); $edicaoLoja->setIdLoja($idLoja); $edicaoLoja->adicionarEdicaoLoja($edicaoLoja); } } }*/
Poderiam ajudar? Queria tentar terminar hoje o site, já que só falta isso.
Desculpem se estiver meio bagunçado, fiz agora o cadastro no site e é o primeiro tópico, então deve tá ruim de ler pela falta de formatação.
Ah, e não importa quantos checkbuttons eu marque como check, se a quantidade for maior do que 0, o programa adiciona dois registros iguais no banco.
Edição feita por: Juh_, 16/03/2012, 10:10.