Ir para conteúdo

POWERED BY:

Arquivado

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

Freisleben

[Resolvido] Como trazer o dado num combo sem repetir os dados

Recommended Posts

Bom dia Pessoal,

 

Sei que é uma duvida basica, mais como eu posso fazer para no momento que trago os dados na tela para o usuario Editar, na Lista ele não trazer o dado repetido, e sim trazer selecionado o dado do banco.

 

Olha só como estou tentando fazer.

 

Trecho que carrego os dados em variaveis.

 

<?php
//Pego o ID que foi passado pela URL

$idOs = $_GET['id'];
$acao = $_GET['acao'];


//SELECT pega todas as OS que esto com status EM HOMOLOGAO
include'lib/conexao.php';
$sql = "SELECT id_os, num_os, titulo, razao, cnpj, tab_ambiente.ambiente, tab_cad_os.id_ambiente, dta_abertura,dta_encerra,tab_emissor.emissor, tab_status_os.status_os, tab_descricao_os.descricao_os, causa, solucao
FROM tab_cad_os, tab_ambiente, tab_emissor,tab_descricao_os,tab_status_os
WHERE tab_cad_os.id_ambiente = tab_ambiente.id_ambiente AND tab_cad_os.id_emissor = tab_emissor.id_emissor AND tab_cad_os.id_status_os = tab_status_os.id_status_os AND tab_cad_os.id_desc_os = tab_descricao_os.id_desc_os AND tab_cad_os.id_status_os = 3 AND id_os = '$idOs'";
$query = mysql_query($sql);

While ($linha = mysql_fetch_array($query)) {
		//$id_os       = $linha['id_os'];
		$numOs       = $linha['num_os'];
		$titulo      = $linha['titulo'];
		$razao       = $linha['razao'];
		$cnpj        = $linha['cnpj'];
		$idAmbiente  = $linha['id_ambiente'];
		$ambiente    = $linha['ambiente'];
		$dtaAbertura = $linha['dta_abertura'];
		$dtaEncerra  = $linha['dta_encerra'];
		$emissor     = $linha['emissor'];
		$statusOs    = $linha['status_os'];
		$descricaoOs = $linha['descricao_os'];
		$causa       = $linha['causa'];
		$solucao     = $linha['solucao'];
}

?>

 

Trecho que quero que lista traga o dado sem se repetir.

 

<select name="ambiente" id="ambiente" class="opcoes">
	<option value="0">Selecione</option>
	
<?php

//Conecta ao Banco de Dados
include'lib/conexao.php';

if($acao = "editar"){
echo "<option value=\"$idAmbiente\" selected=\"selected\">$ambiente</option>";
}

$consulta = mysql_query("SELECT * FROM tab_ambiente");
while ($dados = mysql_fetch_array($consulta)) {
 	echo("<option value='".$dados['id_ambiente']."'>".$dados['ambiente']."</option>");
}
?>
	
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi.....você quer que o ambiente do cara venho selecionado??

 

Se for isso, no while que você usa pra criar as opções, coloca um If.

 

if($dados[ambiente]==$ambiente_usuario)
{
   echo("<option value='".$dados['id_ambiente']."' selected>".$dados['ambiente']."</option>");
}
else
{
   echo("<option value='".$dados['id_ambiente']."'>".$dados['ambiente']."</option>");
}

SetaMB

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o que está acontecendo é que na lista está trazendo para mim assim

 

Ambiente 4 (Ambiente que foi selecionado)

Ambiente 2

Ambiente 3

Ambiente 4

 

Como poderia fazer o array?

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça assim:

 

$consulta = mysql_query("SELECT * FROM tab_ambiente GROUP BY ambiente ASC");
while ($dados = mysql_fetch_array($consulta)) {
        echo("<option value='".$dados['id_ambiente']."'>".$dados['ambiente']."</option>");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu problema não é para listar os dados, e sim quando o usuario usar a função editar eu carrego os dados nos campos ipunt value="<?php echo $nomeDaVariavel ?>", porem com o combo eu também trago mais ele fica repedito, pois faço da maneira abaixo, gostaria que o valor da lista aparece apenas uma vez!!

 

<?php
//Conecta ao Banco de Dados
include'lib/conexao.php';

if($acao = "editar"){
echo "<option value=\"$\" selected=\"selected\">$emissor</option>";
}

$consulta = mysql_query("SELECT * FROM tab_emissor order by emissor");

while ($dados = mysql_fetch_array($consulta)) {
echo("<option value='".$dados['id_emissor']."'>".$dados['emissor']."</option>");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o problema tá no primeiro WHILE. Você tem que definir um array de valores e usar o foreach. Veja:

 

<select name="ambiente" id="ambiente" class="opcoes">
        <option value="0">Selecione</option>
        
<?php

//Conecta ao Banco de Dados
include'lib/conexao.php';

if($acao = "editar"){
echo "<option value=\"$idAmbiente\" selected=\"selected\">$ambiente</option>";
}

$consulta = mysql_query("SELECT * FROM tab_ambiente");
while ($dados = mysql_fetch_array($consulta)) {
$info[] = array(
 'id_ambiente' => $dados['id_ambiente'],
 'ambiente'    => $dados['ambiente'],
);

}
 foreach($info as $informacao) {
         echo("<option value='".$informacao['id_ambiente']."'>".$informacao['ambiente']."</option>");
}
?>
        
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa disto tudo. Só assim que já resolve.

 

$consulta = mysql_query("SELECT * FROM tab_emissor order by emissor");

while ($dados = mysql_fetch_array($consulta)) 
{
    $selected = (isset($idAmbiente) && $dados['id_emissor'] == $idAmbiente) ? 'selected="selected"' : '';
    echo '<option value="'.$dados['id_emissor'].'" '.$selected.' >'.$dados['emissor'].'</option>';
}

Carlos Eduardo

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.