Ir para conteúdo

POWERED BY:

Arquivado

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

programador_master

Acrescentar +1 ao valor da div a cada retorno do loop

Recommended Posts

Me peguei num sinuca de bico agora e não sei mesmo como sair :(

No código abaixo, tenho um um loop for que me retorna as categorias cadastradas no bd, que é onde monto meu menu. É um menu dropdow daqueles que quando ativo a 'li' ele desce e mostra as outras opções. Só que pra funcionar preciso colocar um id crescente pra cada li. Preciso somar +1 ao id da li, toda vez que o loop passar pela li class menukey, assim o primeiro ficaria com id 1 o segundo 2 e assim seria até finalizar todo processo.

Ai que tá, como eu faço isso? Segue o código abaixo:

 

   <ul id="menu">
   	<li class="menukey" id="menu1"><h3><a href=""><?php echo $categoria; ?></a></h3>
       	<div class="joga-pra-baixo">
       	<ul class="submenu">

<?php	

$_query3 = $sql->select($sql1);		
$_row3 = $sql->num_row($sql1);

//VERIFICA SE VOLTOU ALGO 		
if($_row3 > 0){	

for($i=0; $i<$_row3; $i++){				
	$id_sub = mysql_result($_query3, $i, "id2"); 				
	$sub_ = mysql_result($_query3, $i, "subCat");	
?>

<?php
	echo '<li><a href="pesquisar/'.$functions->removeAcentos2($sub_,"-").'">'.$sub_.'</a></li>';	

if($i >= 2){
	$i = 100;

	echo '<li class="mostra-mais"><a href="#">Mais '.$categoria.'</a></li>';

		}
	}
?>
	</ul>
       </div>
</li>
</ul>

 

Conto com ajuda de vocês do fórum, pois estou perdido e sem rumo, pensei em algo como iniciar um for na li com $i inicial valendo 1, mas é só um palpite, php ainda não é meu forte, então se alguém se abilitar, toda ajuda será bem-vinda. Enquanto isso vou tentando ver o que consigo por aqui.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom brother... o que tu pode fazer... se foi isso que eu intendi... eh fazer mais um loop começando antes dessa <li class="menukey"> com contatenar o valor da variavel iniciada no loop com o nome da div... que ai ai div vai assumir um valor diferente a cada loop...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jonatã Cioni, teria o mesmo efeito do que acrescentar mais uma variável no for.

 

<?php	
  for( $i = 0 , $x = 0 ; $i < 20 ; ++ $i , ++ $x ) {
		 echo $i , '|' , $x , '<br />';
  }

 

Saída:

0|0
1|1
2|2
3|3
4|4
5|5
6|6
7|7
8|8
9|9
10|10
11|11
12|12
13|13
14|14
15|15
16|16
17|17
18|18
19|19

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto menos loops melhor. Se você pode juntar tudo em um só, pra que complicar mais?

 

//Exemplo:
$i = 17;
$i++; //soma 1
echo $i; //Retorna "18"

//Aí você pode aproveitar o código que os colegas aí passaram:

for($h=0,$j=1; $h<$_row3; $h++,$j++){

   echo 'Loop '.$h.', que pertence a div '.$j.'<br />';

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom... como o menu dele tem submenus, não irá funcionar... com um loop dentro do outro...sim

 

simplismente por isso:

 

for($i=0,$j=0;$i<5;$i++,$j++){
  echo $i.' - '.$j;
}

 

saida:

0 - 0
1 - 1
2 - 2
3 - 3
4 - 4
5 - 5

 

e com um loop dentro do outro:

 

for($i=0;$i<5;$i++){
  echo 'Menu - '.$i;
  for($j=0;$i<5;$j++){
     echo 'Menu - '.$i.'/ Submenu - '.$j;
  }
  echo '<br>';
}

 

saida:

Menu 0 - Submenu 0
Menu 0 - Submenu 1
Menu 0 - Submenu 2
Menu 0 - Submenu 3
Menu 0 - Submenu 4

Menu 1 - Submenu 0
Menu 1 - Submenu 1
Menu 1 - Submenu 2
Menu 1 - Submenu 3
Menu 1 - Submenu 4

Menu 2 - Submenu 0
Menu 2 - Submenu 1
Menu 2 - Submenu 2
Menu 2 - Submenu 3
Menu 2 - Submenu 4

Menu 3 - Submenu 0
Menu 3 - Submenu 1
Menu 3 - Submenu 2
Menu 3 - Submenu 3
Menu 3 - Submenu 4

Menu 4 - Submenu 0
Menu 4 - Submenu 1
Menu 4 - Submenu 2
Menu 4 - Submenu 3
Menu 4 - Submenu 4

 

entenderam o pq de um loop dentro do outro para menu???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eai Andrey, beleza cara. mudei só no loop e no menu msm, ficou assim:

 

<ul id="menu">
<li class="menukey" id="<?php echo 'menu'.$x; ?><h3><a href=""><?php echo $categoria; ?></a></h3>
<div class="joga-pra-baixo">
<ul class="submenu">

<?php	

$_query3 = $sql->select($sql1);		
$_row3 = $sql->num_row($sql1);

//VERIFICA SE VOLTOU ALGO 		
if($_row3 > 0){	

for($i=0, $x=1; $i<$_row3; $i++, $x++){				
$id_sub = mysql_result($_query3, $i, "id2"); 				
$sub_ = mysql_result($_query3, $i, "subCat");	
?>

<?php
echo '<li><a href="pesquisar/'.$functions->removeAcentos2($sub_,"-").'">'.$sub_.'</a></li>';	

if($i >= 2){
$i = 100;

echo '<li class="mostra-mais"><a href="#">Mais '.$categoria.'</a></li>';

}
}
?>
</ul>
</div>
</li>
</ul>

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, vou testar aqui então e ver como vai ficar, dai posto o resultado aqui :joia:

 

Fala Andrey, cara fiz assim:

 


<?php	

$_query3 = $sql->select($sql1);		
$_row3 = $sql->num_row($sql1);

//VERIFICA SE VOLTOU ALGO 		
if($_row3 > 0){	

for($i=0, $x=1; $i<$_row3; $i++, $x++){				
$id_sub = mysql_result($_query3, $i, "id2"); 				
$sub_ = mysql_result($_query3, $i, "subCat");
echo '<ul id="menu">';
echo '<li class="menukey" id="'.$x.'"><h3><a href="">'.$categoria.'</a></h3>';
echo '<div class="joga-pra-baixo">';
echo '<ul class="submenu"><h3>';

?>

<?php
echo '<li><a href="pesquisar/'.$functions->removeAcentos2($sub_,"-").'">'.$sub_.'</a></li>';	

if($i >= 2){
$i = 100;

echo '<li class="mostra-mais"><a href="#">Mais '.$categoria.'</a></li>';

}
}
?>
</ul>
</div>
</li>
</ul>

 

Essa foi a última forma que tentei, mas em todas elas perco a formatação do menu. Não tem como tornar essa variáveel ai tipo universal q asi da pra usar ela fora do loop. O que você acha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque isto fora do for:

echo '<ul id="menu">';

ID's não se repetem.

 

Agora ficou um pouco confuso xD

É porque a parte que irá se repetir é exatamente o id

echo '<li class="menukey" [color="#FF0000"]id="'.$x.'"[/color]><h3><a href="">'.$categoria.'</a></h3>';
[code]

Fiz de outro jeito, criei um 'for' antes do loop existente que ficou assim:
[code]
<ul id="menu">

<?php for($s=1; $s<=6; $s++){ ?>

<li class="menukey" id="menu<?php echo $s; ?>"><h3><a href="">

<?php }?>

<?php echo $categoria; ?></a></h3>
<div class="joga-pra-baixo">
<ul class="submenu">
...

 

Ele tá retornando algum valor, mas parece que quem recebe os valores é só o primeiro item do menu...estranho não? Sei disso porque alterei a propriedade visibility dos submenus, e agora o primeiro item do menu aparece repetindo 6x, que o é limite do 'for' lá de cima $s<=6. Deu pra entender? Ao invés de atrbuir o valor de 1 à 6, nessa sequencia, pra cada item do menu, na verdade os valores vao todos pra um so item da lista, que é o primeiro. Logo o mouser over nos outros menus, abre 6x o primeiro. :mellow:

Não sei se expliquei direito minha cabeça ta quase explodindo por causa disso. Se precisar eu posto o restante do código... :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera boa tarde!

 

Estou com um problema parecido com esse, só que é o inverso eu preciso somar quantos resultados positivos essa consulta teve, segue o código:

 

 

$seleciona1 = mysql_query("SELECT * FROM tbl_produtos WHERE id_categoria = '$idCategoria' AND qtd > 0 ORDER BY nome ASC") or die(mysql_error());
while($res_comentarios = mysql_fetch_array($seleciona1)){ // início da rotina

 

 

$mate_combo = mysql_query("SELECT * FROM produtos_combo WHERE id_produ_pai = '$res_comentarios[cod]'") or die(mysql_error());
$contar_mate_combo = mysql_num_rows($mate_combo);

 

while($mate_combo1 = mysql_fetch_array($mate_combo)){
$seleciona = mysql_query("SELECT * FROM tbl_produtos WHERE qtd > $mate_combo1[qtd_combo] AND cod = $mate_combo1[id_produto_ind]") or die(mysql_error());
$seleciona12 = mysql_fetch_array($seleciona);
$contar1 = mysql_num_rows($seleciona);
echo"$contar1";echo'/';
}
}
}
O resultado esta assim:
0/1/
0/1/
0/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
1/1/
só que o que eu preciso é pegar a soma de cada dupla dessa
ex.:
0+1 = 1
1 + 1 = 2
galera estou desesperado já tentei de tudo! valeu conto com ajuda de vcs!

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.