Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde galera, estou com um probleminha no meu projetinho!
Fiz o formulario com o Zend_Form, só que ao preencher ele deixa muito option
<option value=""></option>
mais no banco ha dados... alguém pode me ajudar?
$om = new Zend_Form_Element_Select('id_om');
$om->setLabel('Om:')
->setRequired(true)
->addFilter('StripTags')
->addValidator('NotEmpty');
$table_om = new Application_Model_Om();
foreach ($table_om->fetchAll() as $e) {
$om->addMultiOption($e->id_om, $e->om);
}
abaixo meu model:
class Application_Model_Om extends Zend_Db_Table_Abstract
{
protected $_name = 'om';
protected $_primary = array('id_om');
}
saida na tela... na verdade era pra todos está preenchido!
<select name="id_om" id="id_om">
<option value="" label="" selected="selected"></option>
<option value="1" label="DEC / DOC">DEC / DOC</option>
<option value="23473" label=""></option>
<option value="3319" label=""></option>
<option value="3400" label=""></option>
<option value="3509" label=""></option>
<option value="3608" label=""></option>
<option value="3707" label=""></option>
<option value="3806" label=""></option>
<option value="3913" label=""></option>
<option value="4002" label=""></option>
<option value="4101" label=""></option>
<option value="4119" label=""></option>
<option value="4127" label=""></option>
<option value="34744" label=""></option>
<option value="39925" label="DEC">DEC</option>
<option value="4" label="DGUARIBA">DGUARIBA</option>
<option value="2" label="Cia E FPaz HAITI">Cia E FPaz HAITI</option>
<option value="46706" label="DOC">DOC</option>
<option value="3004" label=""></option>
<option value="28001" label="Cia Cmdo 1GEC">Cia Cmdo 1GEC</option>
<option value="23085" label=""></option>
<option value="28100" label=""></option>
<option value="3" label="DG">DG</option>
</selectBom dia Carlos, como sempre você me ajudando rsrsrsrs
Seguinte pelo debug amigo, deu certo... trouxe todos os dados na tabela:
Id => 1 e valor => DEC / DOC
Id => 23473 e valor => 2º GEC
Id => 3319 e valor => 1º BEC
Id => 3400 e valor => 2º BEC
Id => 3509 e valor => 3º BEC
Id => 3608 e valor => 4º BEC
Id => 3707 e valor => 5º BEC
Id => 3806 e valor => 6º BEC
Id => 3913 e valor => 7º BEC
Id => 4002 e valor => 8º BEC
Id => 4101 e valor => 9º BEC
Id => 4119 e valor => 10º BEC
Id => 4127 e valor => 11º BEC
Id => 34744 e valor => 21ª Cia E Cnst
Id => 39925 e valor => DEC
Id => 4 e valor => DGUARIBA
Id => 2 e valor => Cia E FPaz HAITI
Id => 46706 e valor => DOC
Id => 3004 e valor => 7º B E CMB
Id => 28001 e valor => Cia Cmdo 1GEC
Id => 23085 e valor => 1º GEC
Id => 28100 e valor => Cia Cmdo 2ºGEC
Id => 3 e valor => DG
mais no Select, ele traz os dados, só que vazio rsrsrsrs tu acredita? hahuahuahua olha meu code:
$om = new Zend_Form_Element_Select('id_om');
$om->setLabel('Om:')
->setRequired();
$om->addMultiOption('', '');
$table_om = new Application_Model_Om();
foreach ($table_om->fetchAll() as $e) {
$om->addMultiOption($e->id_om, $e->om);
}
Rapz,
Estava testando aqui, puxei outra coluna do banco e funcionou... será o caractere "ª" e o "º" q está trabalhando ?
2º GEC - NÃO TRAZ
1º BEC - NÃO TRAZ
2º BEC - NÃO TRAZ
3º BEC - NÃO TRAZ
4º BEC - NÃO TRAZ
5º BEC - NÃO TRAZ
6º BEC - NÃO TRAZ
7º BEC - NÃO TRAZ
8º BEC - NÃO TRAZ
9º BEC - NÃO TRAZ
10º BEC - NÃO TRAZ
11º BEC - NÃO TRAZ
21ª Cia E Cnst - NÃO TRAZ
DEC - TRAZ
DGUARIBA - TRAZ
Cia E FPaz HAITI - TRAZ
DOC - TRAZ
7º B E CMB - NÃO TRAZ
Cia Cmdo 1GEC - TRAZ
1º GEC - NÃO TRAZ
Cia Cmdo 2ºGEC - NÃO TRAZ
Olha, pode até ser. Tenta escapar antes de jogar no select. Algo assim:
$om->addMultiOption($e->id_om, $this->view->escape($e->om));
Acho que é isto. Tenta aí e veja o que acontece.
Carlos Eduardo
Carlos,
Sou iniciante no Zend, coloquei o e:
$om->addMultiOption($e->id_om, $this->view->escape($e->om));
só que quando executo agora, fica tudo em branco, na view tem que fazer algo??
minha view:
<?php echo $this->form; ?>Não era para precisar não. Aqui eu testei e funcionou normalmente... Estranho.
Você está usando UTF-8 ou ISO?
Carlos Eduardo
Carlos,
Estou usando ISO, mudei pro UTF-8 e em branco a pagina, usando o:
$om = new Zend_Form_Element_Select('id_om');
$om->setLabel('Om:')
->setRequired();
$om->addMultiOption('', '');
$table_om = new Application_Model_Om();
foreach ($table_om->fetchAll() as $e) {
$om->addMultiOption($e->id_om, $this->view->escape($e->om));
}É... então é este o motivo do problema só acontecer com você, porque comigo não acontece. Uso UTF-8 em tudo (desde banco de dados, até codificação dos arquivos passando pela definição de UTF-8 no framework e na abertura da conexão).
Como você está utilizando ISO em tudo, os dados foram gravados no banco em ISO (imagino eu), acredito que você deverá fazer algum tipo de tratamento nos dados antes de jogar para o select. Tente jogar um htmlentities antes de jogar no Select. Algo assim:
foreach ($table_om->fetchAll() as $e) {
$om->addMultiOption($e->id_om, htmlentities ($this->view->escape($e->om)));
}
Ou algo assim.
Carlos Eduardo
Bom dia Carlos,
Algo errado com o:
foreach ($table_om->fetchAll() as $e) {
$om->addMultiOption($e->id_om, htmlentities ($this->view->escape($e->om)));
}
esse $this->view->escape($e->om);
quando coloco assim:
foreach ($table_om->fetchAll() as $e) {
$om->addMultiOption($e->id_om, htmlentities($e->om));
}
assim funciona, mais transformando os caracteres especiais em html:
<option value="23473" label="2º GEC">2º GEC</option>
<option value="3319" label="1º BEC">1º BEC</option>
<option value="3400" label="2º BEC">2º BEC</option>
<option value="3509" label="3º BEC">3º BEC</option>
<option value="3608" label="4º BEC">4º BEC</option>
<option value="3707" label="5º BEC">5º BEC</option>
<option value="3806" label="6º BEC">6º BEC</option>
<option value="3913" label="7º BEC">7º BEC</option>
<option value="4002" label="8º BEC">8º BEC</option>
<option value="4101" label="9º BEC">9º BEC</option>
<option value="4119" label="10º BEC">10º BEC</option>
<option value="4127" label="11º BEC">11º BEC</option>
lebrando que na view eu apenos chamo o form:
$this->form;
abraços e vlw!
Uhn... então imagino que no banco os valores estejam gravados assim:
2º GEC
Se for isto mesmo, tive uma ideia agora, que seria desabilitar o escape do label. Algo assim:
$om = new Zend_Form_Element_Select('id_om');
$om->setLabel('Om:')
->setRequired()
->setOptions ( array ('escape' => false ) );
$om->addMultiOption('', '');
$table_om = new Application_Model_Om();
foreach ($table_om->fetchAll() as $e) {
$om->addMultiOption($e->id_om, $e->om);
}
Veja se resolve.
Carlos Eduardo
Estranho, porque e princípio está tudo OK. Faça um debug dos dados antes de inserir no Select. Algo assim:
foreach ($table_om->fetchAll() as $e) {
Por este código que você mostrou, o problema só pode estar nos dados gravados do banco. A não ser que exista outro código antes ou depois disto.
-------------------------
$om->setLabel('Om:') ->setRequired();Carlos Eduardo