Ir para conteúdo

Arquivado

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

WagnerFilho

CLASS=“active” de acordo com um tab selecionado

Recommended Posts

Olá!

Tenho a intenção de criar um bloco de notas, onde será inserido um título e uma nota.

Para cada nota inserida, será criado um tab.

Eu quero clicar sobre o tab e carregar o título e a nota em um input e área de texto automaticamente.

Para recuperar os valores estou usando o seguinte código:

<?php
$this->db->order_by('id' , 'desc');
$this->db->where('usuario_id' , $this->session->userdata('id'));
$this->db->where('usuario_nome' , $this->session->userdata('usuario_nome'));
$nota = $this->db->get('nota')->result_array();
?>

Porem não estou conseguindo exibir no bloco somente do id clicado(tab selecionada).

Para cada nota, está sendo exibido um bloco(Ver imagem de exemplo).

Abaixo está todo o código que estou utilizando até então:

<?php 
	$this->db->order_by('id' , 'desc');
	$this->db->where('usuario_id' , $this->session->userdata('id'));
	$this->db->where('usuario_nome' , $this->session->userdata('usuario_nome'));
	$nota = $this->db->get('nota')->result_array();
?>

<div class="row">
    <div class="col-sm-4">
	    <ul class="nav tabs-vertical" style="">		
<?php foreach ($nota as $row){?>
		    <li class="active">
			    <a href="#<?php echo $row['id'];?>" data-toggle="tab"> <i class=""></i> <?php echo $row['titulo'];?> </a>
			</li>
<?php }?>
		</ul>
	</div>
	<div class="col-sm-8">
    <div class="tab-content" style="width: 70%;">
<?php 
$counter = 0;
foreach ($nota as $row):
$counter++;
?>
		<div class="tab-pane active"
					" id="<?php echo $row['id'];?>">		    
			<div id="sample" class="ruledpaper ">
			    <div class="form-group" style="margin: 0px;">
				    <div class="col-md-12" style="padding:0px; background-color: #FFFCEE; font-size: 5px;">
    	                <input type="text" class="form-control" rows="14" style="padding: 5px; border:0px; background-color: #fff6cc; font-size: 18px;" name="titulo" placeholder="Título" value="<?php echo $row['titulo'];?>">
					</div>
				</div>
				<hr style="margin: 0px;" />
				<div class="form-group">
				    <div class="col-md-12" style="padding:0px;">
					    <textarea  maxlength="60" class="ruledpaper form-control" rows="" cols="" style="padding: 5px; border:0px; min-height: 350px;" name="nota" placeholder="Digite o texto....."><?php echo $row['nota'];?></textarea>
    	            </div>
    	        </div>
        </div>
<?php endforeach;?>
    </div>	
	</div>
	</div>

Acredito que deve existir algum código para ativar e desativar a class em:

<li class="código para ativar classe">
    <a href="#<?php echo $row['id'];?>" data-toggle="tab"> <i class=""></i> <?php echo $row['titulo'];?> </a>
</li>

E outro código para ativar class em:

<div class="tab-pane código para ativar classe" ...

Não sei exatamente o que deve ser feito e nem como fazer.
Podem me ajudar?

Vejam imagem de como está hoje:https://i.stack.imgur.com/4oAgx.png

Vejam como eu desejo: https://i.stack.imgur.com/zivb6.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer exibir a nota 3 só se for clicado no referente a ela?

basta você fazer uma requisição pela URL (get)

Segue a lógica:

Se a URL for igual a ?seenota=2

$id = $this->obterID("seenota") // aqui ele recebe o id

Consulta-> WHERE ... = $id

Acho que apenas isso resolve seu problema :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que pelo seu código, você está setando todos como ACTIVE.

Peguei seu código e o otimizei um pouco.

<?php
	$this->db->order_by('id', 'desc');
	$this->db->where('usuario_id', $this->session->userdata('id'));
	$this->db->where('usuario_nome', $this->session->userdata('usuario_nome'));
	$nota = $this->db->get('nota')->result_array();
	$contador = 0;
	foreach ($nota as $row) {
		$classActive .= ($contador == 0) ? "active" : "";
		$divMenu = "<li class=\"" . $classActive . "\"><a href=\"#" . $row['id'] . "\" data-toggle=\"tab\"><i class=\"\"></i>" . $row['titulo'] . "</a></li>";
		$divPanel .= "
	    <div class=\"tab-pane " . $classActive . "\" id=\"" . $row['id'] . "\">		    
			<div id=\"sample\" class=\"ruledpaper\">
			    <div class=\"form-group\" style=\"margin: 0px;\">
				    <div class=\"col-md-12\" style=\"padding:0px; background-color: #FFFCEE; font-size: 5px;\">
    	                <input type=\"text\" class=\"form-control\" rows=\"14\" style=\"padding: 5px; border:0px; background-color: #fff6cc; font-size: 18px;\" name=\"titulo\" placeholder=\"Título\" value=\"" . $row['titulo'] . "\">
					</div>
				</div>
				<hr style=\"margin: 0px;\" />
				<div class=\"form-group\">
				    <div class=\"col-md-12\" style=\"padding:0px;\">
					    <textarea maxlength=\"60\" class=\"ruledpaper form-control\" rows=\"\" cols=\"\" style=\"padding: 5px; border:0px; min-height: 350px;\" name=\"nota\" placeholder=\"Digite o texto...\">" . $row['nota'] . "</textarea>
    	            </div>
    	        </div>
    	    </div>
        </div>";
		$contador++;
	}
?>
<div class="row">
    <div class="col-sm-4">
	    <ul class="nav tabs-vertical">	
	    <?php echo $divMenu; ?>
		</ul>
	</div>
	<div class="col-sm-8">
	    <div class="tab-content" style="width: 70%;">
			<?php echo $divPanel; ?>
	    </div>	
	</div>
</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer exibir a nota 3 só se for clicado no referente a ela?

basta você fazer uma requisição pela URL (get)

Segue a lógica:

Se a URL for igual a ?seenota=2

$id = $this->obterID("seenota") // aqui ele recebe o id

Consulta-> WHERE ... = $id

Acho que apenas isso resolve seu problema :)

Olá, este if eu colocaria onde no código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que pelo seu código, você está setando todos como ACTIVE.

Peguei seu código e o otimizei um pouco.

<?php
	$this->db->order_by('id', 'desc');
	$this->db->where('usuario_id', $this->session->userdata('id'));
	$this->db->where('usuario_nome', $this->session->userdata('usuario_nome'));
	$nota = $this->db->get('nota')->result_array();
	$contador = 0;
	foreach ($nota as $row) {
		$classActive .= ($contador == 0) ? "active" : "";
		$divMenu = "<li class=\"" . $classActive . "\"><a href=\"#" . $row['id'] . "\" data-toggle=\"tab\"><i class=\"\"></i>" . $row['titulo'] . "</a></li>";
		$divPanel .= "
	    <div class=\"tab-pane " . $classActive . "\" id=\"" . $row['id'] . "\">		    
			<div id=\"sample\" class=\"ruledpaper\">
			    <div class=\"form-group\" style=\"margin: 0px;\">
				    <div class=\"col-md-12\" style=\"padding:0px; background-color: #FFFCEE; font-size: 5px;\">
    	                <input type=\"text\" class=\"form-control\" rows=\"14\" style=\"padding: 5px; border:0px; background-color: #fff6cc; font-size: 18px;\" name=\"titulo\" placeholder=\"Título\" value=\"" . $row['titulo'] . "\">
					</div>
				</div>
				<hr style=\"margin: 0px;\" />
				<div class=\"form-group\">
				    <div class=\"col-md-12\" style=\"padding:0px;\">
					    <textarea maxlength=\"60\" class=\"ruledpaper form-control\" rows=\"\" cols=\"\" style=\"padding: 5px; border:0px; min-height: 350px;\" name=\"nota\" placeholder=\"Digite o texto...\">" . $row['nota'] . "</textarea>
    	            </div>
    	        </div>
    	    </div>
        </div>";
		$contador++;
	}
?>
<div class="row">
    <div class="col-sm-4">
	    <ul class="nav tabs-vertical">	
	    <?php echo $divMenu; ?>
		</ul>
	</div>
	<div class="col-sm-8">
	    <div class="tab-content" style="width: 70%;">
			<?php echo $divPanel; ?>
	    </div>	
	</div>
</div>

Poxa, show de bola.

Mas acho que está faltando alguma coisa na linha 10.

Pois está retornando erro.

Parse error: syntax error, unexpected '"></i>"' (T_CONSTANT_ENCAPSED_STRING) in C:\Program Files (x86)\VertrigoServ\www\ci_adminlte\application\views\admin\resources\notas.php on line 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

:rolleyes:



A PHP Error was encountered

Severity: Notice


Message: Undefined variable: classActive


Filename: resources/notas.php


Line Number: 8




A PHP Error was encountered

Severity: Notice


Message: Undefined variable: divPanel


Filename: resources/notas.php


Line Number: 25


Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, recomendo você estudar um pouco de PHP. Com o básico do básico você resolve isso...

<?php

	$classActive = "";
	$divPanel = "";

	$this->db->order_by('id', 'desc');
	$this->db->where('usuario_id', $this->session->userdata('id'));
	$this->db->where('usuario_nome', $this->session->userdata('usuario_nome'));
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está certo, Maykel.
Algo simples, poderia ter feito e não fiz.

Achei que com teu código, não seria simplesmente isto.

Outro ponto.
Dá forma que está o teu código.

Está mostrando todos os blocos, mas somente um tab.

Veja a imagem como exemplo:Nota.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,
Resolvido da seguinte forma, excluí a linha 14.

$divMenu = "<li class=\"" . $classActive . "\"><a href=\"#" . $row['id'] . "\" data-toggle=\"tab\"><i class=\"\"></i>" . $row['titulo'] . "</a></li>";

E incluí o código na linha 37.

<?php foreach ($nota as $row){?>
	<li class="">
		<a href="#<?php echo $row['id'];?>" data-toggle="tab"> <i class=""></i> <?php echo $row['titulo'];?> </a>
	</li>
<?php }?>

Como ficou:

<?php

    $classActive = "";
	$divMenu = "";
	$divPanel = "";
	
	$this->db->order_by('id', 'asc');
	$this->db->where('usuario_id', $this->session->userdata('id'));
	$this->db->where('usuario_nome', $this->session->userdata('usuario_nome'));
	$nota = $this->db->get('nota')->result_array();
	$contador = 0;
	foreach ($nota as $row) {
		$classActive .= ($contador == 0) ? "active" : "inactive";
		//$divMenu = "<li class=\"" . $classActive . "\"><a href=\"#" . $row['id'] . "\" data-toggle=\"tab\"><i class=\"\"></i>" . $row['titulo'] . "</a></li>";
		$divPanel .= "
	    <div class=\"tab-pane " . $classActive . "\" id=\"" . $row['id'] . "\">		    
			<div id=\"sample\" class=\"ruledpaper\">
			    <div class=\"form-group\" style=\"margin: 0px;\">
				    <div class=\"col-md-12\" style=\"padding:0px; background-color: #FFFCEE; font-size: 5px;\">
    	                <input type=\"text\" class=\"form-control\" rows=\"14\" style=\"padding: 5px; border:0px; background-color: #fff6cc; font-size: 18px;\" name=\"titulo\" placeholder=\"Título\" value=\"" . $row['titulo'] . "\">
					</div>
				</div>
				<hr style=\"margin: 0px;\" />
				<div class=\"form-group\">
				    <div class=\"col-md-12\" style=\"padding:0px;\">
					    <textarea maxlength=\"60\" class=\"ruledpaper form-control\" rows=\"\" cols=\"\" style=\"padding: 5px; border:0px; min-height: 350px;\" name=\"nota\" placeholder=\"Digite o texto...\">" . $row['nota'] . "</textarea>
    	            </div>
    	        </div>
    	    </div>
        </div>";
		$contador++;
	}
?>
<div class="row">
    <div class="col-sm-4">
	    <ul class="nav tabs-vertical">
		<?php foreach ($nota as $row){?>
		    <li class="">
			    <a href="#<?php echo $row['id'];?>" data-toggle="tab"> <i class=""></i> <?php echo $row['titulo'];?> </a>
			</li>
        <?php }?>
		</ul>
	</div>
	<div class="col-sm-8">
	    <div class="tab-content" style="width: 70%;">
			<?php echo $divPanel; ?>
	    </div>	
	</div>
</div>

Resolveu 100%

Muito obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
×

Informação importante

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