Ir para conteúdo

Arquivado

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

flavialieggio

huahuahuaaa

Recommended Posts

Ola galera, :)

 

tenho duas pagina que monta um combo atraves de consulta no banco de dados e sao iguais.

Na primeira pagina escolho o nivel de usuario nessa combo e que gravo no banco mandando o resultado para a segunda. Na segunda pagina tenho a mesma combo so que eu queria que o primeiro <option selected> dessa combo fosse de acordo com esse codigo nivel.

 

DUVIDA:

Como posso fazer isso? :huh:

 

trabalho assim:

 

//CONSULTA QUE FAÇO PRA TRAZER O COD_NIVEL DE USUARIO DE ACORDO COM O FORMULARIO QUE TA MONTANDO
$consulta = "SELECT cod_nivel, upper(descricao) descricao from nivel where cod_nivel = $cod_usuario";
$dados = mysql_query($consulta, $conexao);
while($rows = mysql_fetch_array($dados))
{
	$cod_nivel_usuario 	= $rows[cod_nivel];
	$desc 				= $rows['descricao'];
}


/////////////////////////////////

function combo($select,$chave,$texto,$_type)
{

	include("conexao");

	$resultado = mysql_query($select,$conexao);
	if ($linha = mysql_fetch_array($resultado)) 
	{
		  do
		{
			  if ($_type == 'combo')
			{
				$retorno.= "<option value='".$linha[$chave]."'>".$linha[$texto]."</option>";
			}
			else
			{
				  $retorno.= $linha[$chave]."#".$linha[$texto]."#";
		}
}

e dai monta mais embaixo assim:

if (($_SESSION[nivel] == 1) || ($_SESSION[nivel] == 15))
{
 $combo1 = combo('select cod_nivel,upper(descricao) descricao from nivel order by descricao ','cod_nivel','descricao','combo'); 
} else
{
 $combo1 = combo('select cod_nivel,upper(descricao) descricao from nivel where cod_nivel = '.$_SESSION['nivel'].' order by descricao ','cod_nivel','descricao','combo'); 
}
.
.
//PARTE HTML
<select name="usuario" value = "<?= $linha['cod_nivel'] ?>">
   <?=$combo1?> 
</select>

Como poderia montar essa consulta??

 

Enorme abraço a todos!!

Flávia

Compartilhar este post


Link para o post
Compartilhar em outros sites

ajax.

 

da uma olhadinha na seção de scripts daqui que tem esse codigo pronto. dai voce pode analiza-lo e entender o que foi feito, mas isso não é complicado não. rs. qualquer duvida posta aqui que ajudados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola de novo pessoal e Diego,

 

Nao poderei usar ajax :(

Tem que ser algo bem simples baseado na logica acima..... Algum parametro a mais na função.. nao sei bem, mas nao poderei fugir muito disso dai.... :(

 

Alguma ideia para esse raciocinio quebrado?...rsrss... :)

 

Abraços

Flávia

Compartilhar este post


Link para o post
Compartilhar em outros sites

então. voce vai poder usar pelo menos javascript?

 

porque sem javascript eu sinceramente não sei como fazer isso.

 

uma vez que o php apenas gera o codigo no servidor. ações no lado cliente devem ser implementadas em javascript.

 

ou seja, o que iriamos fazer: o php preenche o primeiro combo com as informações, e quando houver uma mudança nele o segundo combo seria carregado de acordo com o primeiro.

não precisa ser exatamente ajax, daria pra fazer um javascript que recarregue a pagina quando houver uma mudança qualquer no primeiro combo.

 

eu agora to meio perdido é no seguinte: eu entendi direito o que você quer? minha linha de raciocio é essa mesma, quer dizer, voce ta querendo é preencher um combo de acordo com o valor selecionado no primeiro?

 

ate

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Diego, mas minha duvida e mais simples do que isso... a segunda combo nao carrega de acordo com a primeira... :)

 

Vamos la

 

Tenho pagina 1 de formulario com uma combo de niveis de usuario --- aperto GRAVAR e entao ela grava o formulario para aquele nivel de usuario

 

Na pagina 2 e para montar as questoes do formulario ou alterar, mas nela tambem tem a combo de nivel de usuarios

 

O que eu quero fazer:

Que atraves da consulta desse codigo do usuario na combo, o primeiro item da combo seria o codigo que foi gravado de nivel de usuario para aquele formulario

 

Ou seja, <option selected>o codigo de nivel gravado para esse formulario em primeiro</option>

e o resto a baixo dele..

 

E nao estou conseguindo por na pratica esse raciocinio naquela função!!

 

Abraços

Flávia

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah entendi.

 

uai. simples demais.

 

insere o codigo normalmente no banco de dados e depois recupera com mysql_insert_id() (que recupera o codigo da ultima inserção).

 

resolve?

 

 

e como na pagina 1 voce vai cadastrar o codigo e na pagina 2 voce vai apenas exibir o codigo, não poder ser um input não editavel ao inves de um combo? (acho que ficaria mais elegante se não precisar de edição).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola diego,

 

e como na pagina 1 voce vai cadastrar o codigo e na pagina 2 voce vai apenas exibir o codigo, não poder ser um input não editavel ao inves de um combo? (acho que ficaria mais elegante se não precisar de edição).

Nao da, pois na pagina 2 tem a função de alteração desses dados tambem!!!

 

Bom eu nao conheço essa função mysql_insert_id(), vou dar uma pesquisada no manual, mas voce tem algum modelo pratico??

 

Enorme abraço e muito obrigada por toda atenção!

Flávia

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo:

 

mysql_query("INSERT INTO form (data, evento) VALUES ('10-03-2008', 'evento teste')", $conexao);

$id_do_registro_inserido = mysql_insert_id($conexao);

 

Qualquer duvida posta ae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Diego ... ola pessoal ...

 

Tava aqui pensando e na verdade eu nao to sabendo fazer isso. Veja bem:

 

eu tenho consulta que me traz o nivel de usuario que pode acessar o formulario de acordo com o que foi cadastrado anteriormente:

$consulta = "SELECT cod_nivel, upper(descricao) descricao from nivel where cod_nivel = $cod_usuario";
$dados = mysql_query($consulta, $conexao);
while($rows = mysql_fetch_array($dados))
{
	$cod_nivel_usuario 	= $rows[cod_nivel];
	$desc 				= $rows['descricao'];
}

Tenho a função que monta a combo:

function combo($select,$chave,$texto,$_type)
{
	
	include("../../inc/banco_mysql.php");

	$resultado = mysql_query($select,$conexao);
	if ($linha = mysql_fetch_array($resultado)) 
	{
		  do
		{
			  if ($_type == 'combo')
			{
				$retorno.= "<option value='".$linha[$chave]."'>".$linha[$texto]."</option>";
			}
			else
			{
				  $retorno.= $linha[$chave]."#".$linha[$texto]."#";
		}
}	  
  while ($linha = mysql_fetch_array($resultado));
  return $retorno;
} 
}

e nessa função tenho que por o parametro para ele começar a exibir os dados no <option> comecando pelo $cod_nivel_usuario que me traz a 1ª consulta.....

 

Como??? nao to conseguindo ver isso.. por no codigo essa raciocinio!!!!

Abraço a todos!!!!

Flávia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Diego,

 

Beleza vou postar

 

<?PHP
session_start(); 
include("../../inc/banco_mysql.php");

$nivel 	= $_SESSION[nivel];
$titulo = $_GET['titulo'];

//CONSULTA TODO O CODIGO DO FORMULARIO, TITULO.. DADOS EM GERAL
$select = "SELECT cod_formulario, titulo, cod_usuario, data_inicio, data_fim FROM formulario_tit WHERE titulo = '$titulo'";
$resultado = mysql_query($select, $conexao);
while($linhas = mysql_fetch_array($resultado))
{
	$cdform 		= $linhas[cod_formulario];
	$tit_form 		= $linhas['titulo'];
	$cod_usuario	= $linhas[cod_usuario];
	$data_inicio 	= $linhas['data_inicio'];
	$data_fim 		= $linhas['data_fim'];
}

//CONSULTA O CODIGO DE NIVEL DE USUARIO ESPECIFICO PARA ESSE FORMULARIO
$consulta = "SELECT cod_nivel, upper(descricao) descricao from nivel where cod_nivel = $cod_usuario";
$dados = mysql_query($consulta, $conexao);
while($rows = mysql_fetch_array($dados))
{
	$cod_nivel_usuario 	= $rows[cod_nivel]; //O CODIGO QUE EU QUERO QUE APARECA EM PRIMEIR NA COMBO
	$desc 				= $rows['descricao'];//DESCRICAO DESSE CODIGO
}

//FUNCAO QUE POPULA A COMBO!

function combo($select,$chave,$texto,$_type)
{
	
	include("../../inc/banco_mysql.php");

	$resultado = mysql_query($select,$conexao);
	if ($linha = mysql_fetch_array($resultado)) 
	{
		  do
		{
			  if ($_type == 'combo')
			{
				$retorno.= "<option value='".$linha[$chave]."'>".$linha[$texto]."</option>";
			}
			else
			{
				  $retorno.= $linha[$chave]."#".$linha[$texto]."#";
		}
}	  
  while ($linha = mysql_fetch_array($resultado));
  return $retorno;
} 
}

include("../../inc/banco_mysql.php");

//AQUI SE MONTA A CONSULTA QUE TRAS OS DADOS EM GERAL PARA POPULAR A COMBO EM GERAL DE ACORDO COM O USUARIO LOGADO

if (($_SESSION[nivel] == 1) || ($_SESSION[nivel] == 15))
{
 $combo1 = combo('select cod_nivel,upper(descricao) descricao from nivel order by descricao ','cod_nivel','descricao','combo'); 
} else
{
 $combo1 = combo('select cod_nivel,upper(descricao) descricao from nivel where cod_nivel = '.$_SESSION['nivel'].' order by descricao ','cod_nivel','descricao','combo'); 
}
?>
<html>
<link rel="stylesheet" type="text/css" href="../../formato.css" /> 
<head>
<p></p>
<p></p>
<table align="center">
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="3" color="#000000">Está faltando alguma questão? Clique aqui:<a href="tela1.php">Incluir questão</a></font></td>
</table>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<div align="center">
<table width="595" border="0">
  <tr>
	<td width="18%"> </td>
	<td width="63%">
<table width="100%" border="0">
  <tr>
	<td bgcolor="#A4A8DB"><div align="center" class="style1"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">MONTANDO SEU FORMULÁRIO:</font></div></td>
  </tr>
</table>
<br>
<form action="send_form.php" name="formx1" method="post" onSubmit="SelectAll();">	
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
	<td colspan="2" bgcolor="#F9F9FF"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000"><b>Título do Formulário:</b></font>	  <div align="center"></div></td>
	</tr>
  <tr>
	<td colspan="2">
	<?PHP
	if($_GET['operacao'] == 'alt'){
	?>
	<div align="left"><input type="text" name="titu" size="75" value="<?=$titulo?>" onKeyUp="CaixaAlta(this)"></div>
	<?PHP 
	}
	else{
	 echo"<center><h4>".$tit_form."</h4></center>";
	}
	?>
	</td>
	</tr>
  <?PHP
  if($nivel == 1 || $nivel == 15){
  ?>
  <tr>
	<td colspan="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">Quais usuários poderão ver:</font>
<!-- A COMBO QUE QUERO POPULAR-->
	<select name="usuario" value = "<?= $linha['cod_nivel'] ?>">
	<?=$combo1?> 
	</select>
	</td>
  </tr>
  <?php // mod2
  }
  ?>
  <tr>
	<td height="10" colspan="2"></td>
  </tr>
	<tr>
	<td height="20">
	<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">Data de início:</font> 	<input type="text" name="data_inicio" size="10" maxlength="10" value="<?= ConverteData($data_inicio)?>">
	</td>
	<td>
	<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">Data de final:</font> 
	<input type="text" name="data_fim" size="10" maxlength="10" value="<?= ConverteData($data_fim)?>">
	</td>
	</tr>
  <tr>
	<td height="20" colspan="2"></td>
  </tr>
  <tr>
	<td colspan="2" bgcolor="#F9F9FF"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000"><b>Questões:</b></font></td>
  </tr>
  <tr>
	<td colspan="2"><table width="100%" border="0">
	  <tr>
		<td colspan="2">
		<select id="menu_pai" name="menu_pai" size="5" multiple>
		 <?PHP
		 $consulta =  "SELECT * from questoes where nivel = $nivel";
		 $resultado = mysql_query($consulta,$conexao);
		 while ($row = mysql_fetch_array($resultado)){
			echo "<option value='".$row['cod_questao']."'>".$row['descricao']."</option>";
		 }
		 ?>
		</select>		</td>
		<tr>
		<td width="29%">
		<input type="button" onClick="movimento('menu', 'passar', 'menu_pai')" value="Adicionar">		
		</td>
		<td width="71%">
		<input type="button" onClick="movimento('menu_pai', 'passar', 'menu')" value="Remover">
		<input type="button" onClick="java script:SelectAll('menu[]');" value="teste">
		</td>
		<tr>
		<td colspan="2">		</td>
		<tr>
		<td colspan="2">
		<select id="menu" name="menu[]" size="5" multiple>
		<?php
		$operacao = $_GET['operacao'];
		if ($operacao == 'alt') {
		 	$consulta =  "SELECT  a.cod_questao, a.descricao, b.cod_formulario, b.cod_questao from questoes a, formulario b where a.cod_questao = b.cod_questao and b.cod_formulario = $cdform";
		 	$resultado = mysql_query($consulta,$conexao);
		 		while ($row = mysql_fetch_array($resultado))
		 		{
					echo "<option value='".$row['cod_questao']."'>".$row['descricao']."</option>";
		
				}
		}
		?> 
		</select>		
		
		</td>
	  </tr>
		<tr>
		  <td>
		<a href="#" onClick="movimento('menu', 'cima')">Para cima
		<!--<img src="seta-cima.gif" />--></a>		  </td>
		  <td>
		  <a href="#" onClick="movimento('menu', 'baixo')">Para baixo
		<!-- <img src="seta-baixo.gif" />--></a>		 </td>
		</tr>
	</table>	</td>
  </tr>
  <tr>
	<td colspan="2">
	  <div align="center">
	  <?PHP 
	  if($_GET['operacao'] == 'alt'){
		echo "<input type='hidden' name='pagina_nome' value='alt'>";
	  }else{
		echo "<input type='hidden' name='pagina_nome' value='inc_formulario'>";
	  }
	   ?>
		<input type="hidden" name="nivel" value="<?=$nivel?>">
		  <input type="hidden" name="pagina_destino" value="index.php">
		<input type="hidden" name="cod_formulario" value="<?=$cdform?>">
		<input type="hidden" name="titulo" value="<?=$tit_form?>">
		<input type="submit" value="GRAVAR">
		</div>
		</td>
	</tr>
</table>
</form>
<div align="center"><a href="index.php">Voltar</a></div>
</td>
<td width="19%"> </td>
</tr>
</table>
</div>
</body>
</html>

Ta ai o codigo todo!!! completo com as funções e a <select> que e pra popular

 

Abraços e desculpa ai, mas eu realmente nao to conseguindo colocar no codigo a logica..

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

//PARTE HTML

<select name="usuario" value = "<?= $linha['cod_nivel'] ?>">

<?=$combo1?>

</select>

 

 

Boa noite pelo que entendi você faz uma consulta no banco, apartir desta consulta você mostra o resultado em um combo, você deseja que na 2ºConsulta a primeira ainda fique selecionada não perda...

 

você pode usar:

 

<? if($linha['cod_nivel']==$_POST['cod_nivel']){ print 'selected'; } ?>">

 

se a opção que você selecionou no combo e mandou via post, for igual o que você pegou ele printa selected...

 

//axo que é isso que você quer....

<select name="usuario" value = "<?= $linha['cod_nivel'] ?>" <? if($linha['cod_nivel']==$_POST['cod_nivel']){ print 'selected'; } ?>">

<?=$combo1?>

</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Amoroso

 

Nao deu certo essa logica.. nao printa o selecionado....

 

Alguma sugestao a mais gente??

To precisando de uma ajuda urgente.... :unsure:

 

Enorme abraço!

Flávia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Flavia.

 

Coloquei um pequeno if dentro da sua função combo.

 

 

function combo($select,$chave,$texto,$_type) {
	include("../../inc/banco_mysql.php");
	$resultado = mysql_query($select,$conexao);
	if ($linha = mysql_fetch_array($resultado)) {
		do {
			if ($_type == 'combo') {
				$retorno.= "<option value='".$linha[$chave];
				// condição para verificar se o nivel atual é o mesmo do postado e colocar uma tag de selected
				if( $linha['cod_nivel'] == $_POST['cod_nivel']) {
					$retorno .= " selected=\"selected\" ";
				}
				$retorno .= "'>".$linha[$texto]."</option>";
			}
			else {
				$retorno.= $linha[$chave]."#".$linha[$texto]."#";
			}
		}
		while ($linha = mysql_fetch_array($resultado));
		return $retorno;
	}
}

 

veja se resolve. qualquer duvida posta ae.

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.