-rafael- 1 Denunciar post Postado Fevereiro 21, 2010 olá uso uma consulta para "preencher" uma select box do meu form. o detalhe é que uso os mesmos valores para varias select box. tem como pegar o resultado da mesma consulta para todas? ou tenho q repetir a consulta varias vezes (8 no total)? aqui vai o codigo da select box: <select name="teste" class="CaixaTexto"> <?php while($dados = mysql_fetch_assoc($query)) { ?> <option value="<?php echo $dados['idnivel'];?>"><?php echo $dados['descnivel'];?></option> <?php };?> </select> obrigado Compartilhar este post Link para o post Compartilhar em outros sites
macielcr7 9 Denunciar post Postado Fevereiro 21, 2010 Você terá que colocar sim em todos os selects...... Ou então você fazia a consulta php em outra pagina e colocava um include nos selects...... http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif :huh: :lol: http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Fevereiro 21, 2010 ola, obrigado! mas essa do include eu nem sei como faz... se puder dar um exemplo... obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Quelipe 15 Denunciar post Postado Fevereiro 21, 2010 Vamos para a POO, e aproveitar todos os códigos: Salve o arquivo abaixo como montaCombo.php <?php class montaCombo { private $sql; private $result; private $dados; public function getCombo() { $this->sql = "Aqui sua consulta"; $this->result = mysql_query($this->sql); echo "<select name='teste' class='CaixaTexto'>"; while($this->dados = mysql_fetch_assoc($this->result)) { echo "<option value=".$this->dados['idnivel'].">"; echo $this->dados['descnivel']; echo "</option>"; } echo "</select>"; } } ?> Na página que você vai exibir o combo faz assim: <?php include "montaCombo.php"; include "sua conexao"; $combo = new montaCombo(); $combo->getCombo(); ?> Qualquer dúvida estamos aí. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Fevereiro 21, 2010 a ideia dele do include vai dar no mesmo.....eh so separacao de pagina, eu prefiro a primeira ideia pra economizar recurso de servidor... Compartilhar este post Link para o post Compartilhar em outros sites
macielcr7 9 Denunciar post Postado Fevereiro 22, 2010 como o igor disse... é melhor você usar a 1ª opção não custa nada enocomiza mais espaço no servidor faça o codigo nos 8 selects.!' a ideia dele do include vai dar no mesmo.....eh so separacao de pagina, eu prefiro a primeira ideia pra economizar recurso de servidor... Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Fevereiro 22, 2010 Faça um Select só. Depois só usa o While mais 7 vezes. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 22, 2010 eu hein?! o <select> é sempre o mesmo? só que 8 vezes iguais ?? guarde a string dele numa variável php, e dê echo 8 vezes. Com certeza será muito melhor do que include, usar + 7 whiles, refazer a consulta.. Compartilhar este post Link para o post Compartilhar em outros sites
macielcr7 9 Denunciar post Postado Fevereiro 22, 2010 Opa.!' ESSA TBM É UMA BOA IDEIA MUITO MENOS TRABALHO..... MAIS CARA EXPLICA O POR QUE DE 8 SELECTS IGUAIS.... QUAL O OBJETIVO ? eu hein?! o <select> é sempre o mesmo? só que 8 vezes iguais ?? guarde a string dele numa variável php, e dê echo 8 vezes. Com certeza será muito melhor do que include, usar + 7 whiles, refazer a consulta.. Compartilhar este post Link para o post Compartilhar em outros sites
Geraldo França 0 Denunciar post Postado Fevereiro 22, 2010 Rafael, O que o amigo Quelipe fez foi trabalhar da maneira correta. Ele te deu o exemplo prático e funcional. Não irá mudar em nada no processamento do servidor. Um código em POO com certeza ficará maior do que o seu. Mas, por outro lado, será um código melhor compreendido por outro desenvolvedores do que um código não Orientado a Objetos. É uma maneira um pouco mais demorada de programar, porém, muito mais organizada. Fica a critério de cada um. Eu escolheria o código que o Quelipe passou. Só uma pergunta: se você tiver que mudar uma condição na instrução, terá que sair em página por página mudando ? Com a classe você irá mudar a condição somente na classe. Abraço. Geraldo P. França Compartilhar este post Link para o post Compartilhar em outros sites
Quelipe 15 Denunciar post Postado Fevereiro 22, 2010 Bom, pelo que entendi você quer um select com os mesmos valores, mas não é um select igual ao outro, pois suponho que você terá que mudar o id e o name do select, senão não teria a necessidade de mais de um combo. Então seria inviável fazer com include, se terás que mudar o id e name do select, pois, como você mudaria isso? Ou armazenar em uma variável, como você mudaria esses valores? A solução mais vantajosa seria usar uma classe para resolver seu problema: <?php class montaCombo { private $sql; private $result; private $dados; // esse método receberá um parametro que será o id e name do seu select: public function getCombo($name) { $this->sql = "Aqui sua consulta"; $this->result = mysql_query($this->sql); echo "<select name='$name' class='CaixaTexto'>"; while($this->dados = mysql_fetch_assoc($this->result)) { echo "<option value=".$this->dados['idnivel'].">"; echo $this->dados['descnivel']; echo "</option>"; } echo "</select>"; } } ?> Quando você instanciar o objeto e executar o método, irá passar o name do select: <?php include "montaCombo.php"; include "sua conexao"; $combo = new montaCombo(); $combo->getCombo("teste1"); ?> Agora quero montar outro combo na mesma página com outro name: <?php $combo->getCombo("teste2"); ?> E assim sucessivamente. Com essa base que te passei você fará com que seu combo fique dinâmico, podendo alterá-lo passando apenas os parâmetros necessários. Atenciosamente, Edimilson Quelipe Compartilhar este post Link para o post Compartilhar em outros sites
koga021 0 Denunciar post Postado Fevereiro 22, 2010 De somente um select, guarde o resultado em um array, e depois e so escrever novamente esse array em algum lugar de sua escolha. while (array<> final do array) { echo array i++ } tranquilo Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Medrado 1 Denunciar post Postado Fevereiro 22, 2010 Eu usaria a dica do koga021 substituindo o while pelo foreach Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Fevereiro 22, 2010 Opa.!' ESSA TBM É UMA BOA IDEIA MUITO MENOS TRABALHO..... MAIS CARA EXPLICA O POR QUE DE 8 SELECTS IGUAIS.... QUAL O OBJETIVO ? o objetivo é preencher uma tabela de permições para os usuarios valor - item 1 - Sem acesso 2 - acesso somente 3 - acesso e alteração 4 - acesso alteraçao e exclusão existem 8 setores diferentes, por isso os 8 selects. uma pessoa nao pode ter acesso a determinado setor, mas pode ter acesso total a outro. quanto as classes... sou bem novo em php, nao tenho muita noção de como usar as classes. <?php $combo->getCombo("teste2"); ?> por exemplo essa parte: como colocaria ela no select? agradeço a todas a respostas! Compartilhar este post Link para o post Compartilhar em outros sites
macielcr7 9 Denunciar post Postado Fevereiro 22, 2010 então é melhor você repetir o codigo 8 vezes..... já que você é novo em php.... aii mais na frente... você muda ..... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Quelipe 15 Denunciar post Postado Fevereiro 23, 2010 Quando você executar esse método ele já irá gerar o combo. Para ficar mais claro para você, vamos esquecer POO e usar uma função: <?php function montaCombo($nomeCombo) { $sql = "SUA CONSULTA"; $result = mysql_query($sql); echo "<select name ='$nomeCampo'>"; while($dados = mysql_fetch_assoc($result) { echo "<option value =".$dados['idnivel'].">"; echo $dados['descnivel']; echo "</option>"; } echo "</select>"; } // salve esse arquivo como funcao.php e chame por include na página que irá usá-lo // ou escreva-o na própria página que precisa usar o combo ?> Na página onde irá montar o combo você faz assim: <?php include "sua conexao"; include "funcao.php"; // repara que você executa a funcao passando o nome do combp que você quer montaCombo("teste1"); montaCombo("teste2"); ?> Qualquer coisa estamos aí Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Fevereiro 25, 2010 OK consegui!!! fiz da forma que o Quelipe postou e funcionou!!! muito obrigado a todos que colaboraram!!! Compartilhar este post Link para o post Compartilhar em outros sites