Ir para conteúdo

POWERED BY:

Arquivado

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

allex_carvalho

[Resolvido] Manter combo box selecionado ao clicar em editar.

Recommended Posts

Bom dia pessoal...

 

Estou com um problema. No form tenho alguns checkbox. Quando clica em editar as informações cadastradas precisam aparecer marcadas como foi feito na inserção.

 

Vejam como está:

 

<?php
echo "
   <p class=\"cat\">
       <input type=\"checkbox\" name=\"selecionaCat[]\" value=\"".$rsCategoria->idCategoria."\" style=\"width:13px !important;\" />
       <label>".$rsCategoria->nomeCategoria." </label>
   </p>
";
?>

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
//levando em conta que temos um array com todos os ids selecionados, seguindo o padrão abaixo:
$selecionados = array(1,5,7,8,9,10,50);
printf('
       <p class="cat">
           <input type="checkbox" name="selecionaCat[]" value="%d" %s style="width:13px !important;" />
           <label>%s</label>
       </p>
',
$rsCategoria->idCategoria,
in_array( $rsCategoria->idCategoria , $selecionados ) ? 'checked="checked"' : '',
$rsCategoria->nomeCategoria
);

 

O código está auto-explicativo, mas se restarem dúvidas, não deixe de perguntar. Não testei, mas acho que é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem Matheus, estou sim com um problema em entender o processo. Os checkbox são para listar categorias e subcategorias. Como é para cadastrar noticias e não será preciso listar em relatorio depois do que vem de qual categoria e subcategoria, fiz para inserir várias categorias em um só campo da tabela, separando os itens cadastrados por : veja só:

 

<div id="selecionarCategorias">
           <p class="tituloCategorias">Selecione a Categoria:</p>
           <?php
			$idsCat				= explode(":",$row->categoriaNoticias);
			$selecionados		= $idsCat;
			$idsSubCat			= explode(":",$row->idSubCategoria);
			$sqlCategoria		= "SELECT * FROM categoria";
			$qrCategoria		= mysql_query($sqlCategoria);
			while($rsCategoria = mysql_fetch_object($qrCategoria)) {
		?>
			<p class=\"cat\">
				<input type="checkbox" name="selecionaCat[]" value="<?=$rsCategoria->idCategoria?>" style="width:13px !important;" />
				<label><?=$rsCategoria->nomeCategoria?></label>
			</p>
			<?php 
			$sqlSubCategoria	= "SELECT * FROM subcategoria WHERE idCategoria =".$rsCategoria->idCategoria;
			$qrSubCategoria		= mysql_query($sqlSubCategoria);
               while($rsSubCategoria = mysql_fetch_object($qrSubCategoria)) {
				echo "
			<p class=\"subCat\">
				 <input type=\"checkbox\" name=\"selecionaSubCat[]\" value=\"".$rsSubCategoria->idSubCategoria."\" style=\"width:13px !important;\" />  
				<label> ".$rsSubCategoria->nomeSubCategoria."</label>
			</p>
			";
				}
			}
		?>
       </div><!--selecionarCategorias-->

 

Não entendi bem como ficaria a lógica da coisa ai.

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites
fiz para inserir várias categorias em um só campo da tabela, separando os itens cadastrados por :

gambiarra total isso hein?!

 

Uma modelagem correta, seria:

TABLE categoria

id, nome

 

TABLE noticia

id, titulo, texto

 

TABLE noticia_categoria

id_categoria, id_noticia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma modelagem correta, seria:

TABLE categoria

id, nome

 

TABLE noticia

id, titulo, texto

 

TABLE noticia_categoria

id_categoria, id_noticia

 

Inicialmente tinha pensado em algo semelhante. Porém... Como não tenho muita prática (na verdade nunca fiz) 2 inserts, achei mais prático do outro jeito. Mais vamos lá. Para a estrutura acima ainda tenho outra tabela. A tabela categoria é fixa (o cliente não cadastrará e nem excluirá nada nela), já as subcategorias sim, ela será toda dinamica. Então, vamos ver se a lógica é essa:

Duas tabelas, categoria e subcategoria;

Noticias contendo o titulo, texto e uma imagem para destaque;

E a tabela noticia_categoria (para fazer a busca de quais categorias/subcategorias estão cadastradas as noticias?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia. Fiz algumas mudanças no sistema seguindo as sugestões de vocês. Agora as tabelas estão assim:

 

noticias

--idNoticias

--dataNoticias

--tituloNoticias

--textoNoticias

--imgNoticias

 

categoria

--idCategoria

--nomeCategoria

 

subcategoria

--idSubCategoria

--idCategoria

--nomeSubCategoria

 

noticiascategoria

--idNoticiasCategorias

--idNoticias

--noticiasCategorias

 

noticiassubcategorias

--idNoticiasSubCategorias

--idNoticias

--noticiasSubCategorias

 

A parte que imprime os combo box está assim:

 

<div id="selecionarCategorias">
           <p class="tituloCategorias">Selecione a Categoria:</p>
           <?php
			$sqlCategoria		= "SELECT * FROM categoria";
			$qrCategoria		= mysql_query($sqlCategoria);
			while($rsCategoria = mysql_fetch_object($qrCategoria)) {
		?>
			<p class="cat">
				<input type="checkbox" name="selecionaCat[]" value="<?=$rsCategoria->idCategoria?>" style="width:13px !important;" />
				<label><?=$rsCategoria->nomeCategoria?></label>
			</p>
			<?php 
			$sqlSubCategoria	= "SELECT * FROM subcategoria WHERE idCategoria =".$rsCategoria->idCategoria;
			$qrSubCategoria		= mysql_query($sqlSubCategoria);
               while($rsSubCategoria = mysql_fetch_object($qrSubCategoria)) {
		?>
			<p class="subCat">
				<input type="checkbox" name="selecionaSubCat[]" value="<?=$rsSubCategoria->idSubCategoria?>" style="width:13px !important;" />  
				<label> <?=$rsSubCategoria->nomeSubCategoria?></label>
			</p>
		<?php
				}
			}
		?>
       </div><!--selecionarCategorias-->

 

Agora, como deixar os combo box selecionados quando clicar em editar?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai precisar de duas tabelas no SELECT: categria e noticiascategoria, com o WHERE apontando para o ID da noticia.

 

existem já alguns outros tópicos sobre esse assunto.. mas é bem simples..

durante o loop em que você cria os checkboxs, você vai vendo se aquele item atual da iteração, está na tabela noticiascategoria ou não, e atribui um checked="checked" ao html do input.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opaw... Fiz o seguinte:

 

<p class="tituloCategorias">Selecione a Categoria:</p>
           <?php
			$sqlCategoria		= "SELECT * FROM categoria";
			$qrCategoria		= mysql_query($sqlCategoria);
			while($rsCategoria = mysql_fetch_object($qrCategoria)) {
				$sqlEditarCat	= "SELECT * FROM categoria INNER JOIN noticiascategorias WHERE categoria.idCategoria = noticiascategorias.noticiasCategorias AND idNoticias =".$id;
				$qrEditarCat	= mysql_query($sqlEditarCat) or die(mysql_error());
				$rsEditarCat	= mysql_fetch_object($qrEditarCat);
				$catsEditar = $rsEditarCat->noticiasCategorias;
				$itensCatsEditar = $catsEditar ? "checked=\"checked\"" : "";
		?>
			<p class="cat">
				<input type="checkbox" name="selecionaCat[]" value="<?=$rsCategoria->idCategoria?>" <?php $itensCatsEditar ?> style="width:13px !important;" />
				<label><?=$rsCategoria->nomeCategoria?></label>
			</p>

 

Ele só me retorna o primeiro item cadastrado e não seleciona..

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parcialmente foi resolvido, não sei se fiz da maneira correta (não porque não resolveu, rs). Ele está selecionando o primeiro item. Vejam como ficou o código:

 

<?php
			$sqlCategoria		= "SELECT * FROM categoria";
			$qrCategoria		= mysql_query($sqlCategoria);
			while($rsCategoria = mysql_fetch_object($qrCategoria)) {
			$sqlEditarCat   = "SELECT * FROM categoria INNER JOIN noticiascategorias WHERE categoria.idCategoria = noticiascategorias.noticiasCategorias AND idNoticias =".$id;
               $qrEditarCat    = mysql_query($sqlEditarCat) or die(mysql_error());
               $rsEditarCat    = mysql_fetch_object($qrEditarCat);
			$selecionados = array($rsEditarCat->idCategoria);
printf('
       <p class="cat">
           <input type="checkbox" name="selecionaCat[]" value="%d" %s style="width:13px !important;" />
           <label>%s</label>
       </p>
       ',

 

Obrigado pela atenção.

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.