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.










