Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

-rafael-

[Resolvido] pegar os dados da mesma consulta varias vezes

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.