Este fórum é para dúvidas onde a base da questão é a linguagem PHP.
Moderador: web
por robinhobn Offline » Seg Jan 02, 2012 7:17 pm
|
Uma dúvida. Tentei aqui e não sei onde estou errando. Tenho 2 tabelas: A primeira, com os valores dos checkbox. Exemplo: • check1 • check 2 • check 3 E tenho uma outra tabela que contem um campo "check": check1,check2 É um form de edição. Fiz um explode no campo check e com um foreach tenho os valores separadamente. O problema que quando faço a comparação, deveria ficar o check 1 e check 2 selecionados e não está funcionando. Pode me dar uma dica?

robinhobn
VETERANO
Mensagens: 149
Registrado em: Qua Set 09, 2009 12:17 am
|
por web Offline » Seg Jan 02, 2012 8:13 pm
Então você tem os valores fixos da consulta:
• check1 • check 2 • check 3
E quer comparar com os valores "explodidos" e mostrar checados ou não?

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por robinhobn Offline » Ter Jan 03, 2012 9:35 am
Exato. Os valores são fixos, mas vem de uma tabela do banco também. E quero comparar com outra tabela. Os que conferem ficam selecionados.

robinhobn
VETERANO
Mensagens: 149
Registrado em: Qua Set 09, 2009 12:17 am
|
por web Offline » Ter Jan 03, 2012 3:08 pm
Montei uma base para você adaptar.
Você tem que criar um array com os valores que há no bd para comparar com os valores do checkbox, através da função.
- Código: Selecionar todos
<?php function no_array($valor) { $Array = array('sim', 'talvez'); if(in_array($valor, $Array)) { return 'checked="checked"'; } } ?>
<input type="checkbox" name="campo" value="sim" <?php echo no_array('sim'); ?>> <input type="checkbox" name="campo" value="nao" <?php echo no_array('nao'); ?>> <input type="checkbox" name="campo" value="talvez" <?php echo no_array('talvez'); ?>>

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por robinhobn Offline » Qua Jan 04, 2012 12:06 am
Pois então. Dê uma olhada e veja o que estou fazendo errado.
- Código: Selecionar todos
<?php function verifica($ver) { $compara = explode(",",$tabela); //Aqui tenho o valor para compara. exemplo $tabela = check1,check3 if (in_array($ver, $compara)) { return 'checked="checked"'; }}
$sql = "SELECT * FROM checks"; $qry = mysql_query($sql); while ($res = mysql_fetch_array($qry)){ $valor = $linha['check']; //Aqui listo as opções de checks. Exemplo: check1 - check2 - check3 ?> <input type="checkbox" name="txt_pgto[]" <?php echo verifica($valor); ?>/> <?php echo $valor;?> <?php } ?>
Não rolou. Deveria ficar selecionados neste exemplo: check1 e check3. Deve ser simples, problema de aprendiz. hehe...

robinhobn
VETERANO
Mensagens: 149
Registrado em: Qua Set 09, 2009 12:17 am
|
por web Offline » Qua Jan 04, 2012 1:02 pm
while ($res = mysql_fetch_array($qry)){ $valor = $linha['check']; //Aqui listo as opções de checks. Exemplo: check1 - check2 - check3
De onde vem $linha? Deveria ser referente ao while, $res

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por robinhobn Offline » Qua Jan 04, 2012 4:37 pm
Eu que digitei errado ali. Está listando as opções certinho e pegando os resultados das duas tabelas, mas é como se não le o resultado do explode, pois se eu colocar escrito tipo $array = array("check1", "check3"); Vai beleza. Mas pelo resultado do explode não.

robinhobn
VETERANO
Mensagens: 149
Registrado em: Qua Set 09, 2009 12:17 am
|
por web Offline » Qua Jan 04, 2012 4:42 pm
É porque $tabela está sendo criado fora da função, e não deve estar como global.
Com base no exemplo que postei, testa dessa forma
- Código: Selecionar todos
<?php $tabela = "sim,talvez";
function no_array($valor) { global $tabela; $Array = explode(',', $tabela); if(in_array($valor, $Array)) { return 'checked="checked"'; } } ?>
Adapta para seu caso.

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por robinhobn Offline » Qua Jan 04, 2012 9:14 pm
Beleza agora funcionou. Bem isso mesmo.

robinhobn
VETERANO
Mensagens: 149
Registrado em: Qua Set 09, 2009 12:17 am
|
por web Offline » Qua Jan 04, 2012 9:23 pm

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
Voltar para PHP
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes
|
|
|