Ir para conteúdo

POWERED BY:

Arquivado

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

Lúcio Gomes

[Resolvido] 'checked' em campo select do formulário

Recommended Posts

Pessoal, eu estou me matando aqui com um problema super primário, que não sei o que ocorre que não funciona.

 

Vejam meu código:

 

<?php
//Exemplo: eu acesso a página www.site.com.br/esse_arquivo.php?id_item=2
$id_item = $_GET['id_item'];

$sintaxe = mysql_query('SELECT id_usuario, item FROM itens WHERE id_itens = ' . $id_item);
$registro=mysql_fetch_array($sintaxe);

$sintaxe2 = mysql_query("SELECT * FROM usuarios ORDER BY nome");
?>

<select name="itens" id="itens">
	<option value=''>Selecione um cliente...</option>
  <?php while($registro2=mysql_fetch_array($sintaxe2)) { 
  ?>
	<option value="<?=$registro2['id_usuario']?>" checked="<?php if ($registro2['id_usuario'] == $registro['id_usuario']) { echo 'checked'; } ?>"><?=$registro2['nome']?></option>
  <?php } ?>
</select>

Já fiz o teste do echo e vejam o resultado:

 

echo $registro2['id_usuario']

// exibe: 2

 

echo $registro['id_usuario']

// exibe: 2

 

Logo, se 2 = 2, por que não exibe o "checked"?

 

E pior que se eu digitar algo como:

if ($registro2['id_usuario'] == 2) { echo 'checked'; }

ou

if (2 == $registro['id_usuario']) { echo 'checked'; }

 

Daí funciona e exibe o checked.

Alguém sabe por que está acontecendo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Option não é checked, é selected.

 

Carlos Eduardo

 

Ah sim, realmente, eu confundi no meu exemplo, digitei rapidamente.

Mas mesmo assim, não imprime no html a tag selected. Por isso meu problema deve ser no php, só não sei porque.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rode assim:

<?php
	error_reporting( E_ALL | E_STRICT );
	ini_set('display_errors', TRUE);
	
	
	//Exemplo: eu acesso a página www.site.com.br/esse_arquivo.php?id_item=2
	$id_item = $_GET['id_item'];

	$sql = mysql_query('SELECT id_usuario, item FROM itens WHERE id_itens = ' . $id_item) or die( mysql_error() );
	$registro = mysql_fetch_assoc($sql);

	$sql2 = mysql_query("SELECT id_usuario, nome FROM usuarios ORDER BY nome") or die( mysql_error() );
?>
<select name="itens">
        <option value="">Selecione um cliente...</option>
<?php 
	while( $registro2 = mysql_fetch_assoc($sql2) )
	{
		$selected = ( $registro2['id_usuario']==$registro['id_usuario'] ) ? ' selected="selected"' : '';
		echo '<option value="'.$registro2['id_usuario'].'"'.$selected.'>'.$registro2['nome'].'</option>';
	}
?>
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado William Bruno, agora deu certo.

 

Mas eu só gostaria de entender, por que funciona ao utilizar mysql_fetch_assoc ao invés do mysql_fetch_array?

Eu dei uma pesquisada no manual do php e descobri que mysql_fetch_array($result, MYSQL_ASSOC) é equivalente ao mysql_fetch_assoc - mas só não consegui entender a diferença.

 

http://br.php.net/manual/pt_BR/function.mysql-fetch-assoc.php

http://br.php.net/manual/pt_BR/function.mysql-fetch-array.php

 

E muito obrigado mesmo William.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fetch_array devolve tanto associativo como numerico

 

Como você não precisa de indices numericos, o fetch_assoc é mais rápido para você.

 

E não foi só isso que alterei. Olhe com cuidado.

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.