Ir para conteúdo

POWERED BY:

Arquivado

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

pulao

[Resolvido] problema com for dentro de outro for

Recommended Posts

boa tarde estou tendo problema com um for dentro de outro que não esta terminando

 

$pessoais = explode(',',$pessoais);
            $verifica = count($pessoais);

			 $nomes = mysql_fetch_array($consulta);
			 $verifica_consulta = count($nomes);

			 for($i=0;$i<=$pessoais;$i++){
                          for ($b=0;$b<=$nomes;$b++){	             
			  print '
	              <tr><td><font face="Verdana, Geneva, sans-serif" size="2">'.$pessoais[$i].'</font><font face="verdana" size=2></td>
	              <td><input type="text" name="nome" size="50" value='.$nomes[$b].' class="campos" ></tr></td>';

				if ( ($i == $verifica) or ($b == $verifica_consulta ) )
				break;

				}
			}	

 

estou usando para contar o numero de dados da consulta o count e para pegar o array da consulta estou usando o mysql_fetch_array

desde ja agradeço atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

he tinha reparado nisso tb

 

tenta com as count

 


$pessoais = explode(',',$pessoais);
                   $verifica = count($pessoais);

                                $nomes = mysql_fetch_array($consulta);
                                $verifica_consulta = count($nomes);

                                for($i=0;$i<=$verifica ;$i++){
                          for ($b=0;$b<=$verifica_consulta;$b++){               
                                 print '
                             <tr><td><font face="Verdana, Geneva, sans-serif" size="2">'.$pessoais[$i].'</font><font face="verdana" size=2></td>
                             <td><input type="text" name="nome" size="50" value='.$nomes[$b].' class="campos" ></tr></td>';

                                       if ( ($i == $verifica) or ($b == $verifica_consulta ) )
                                       break;

                                       }
                               }       

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o seguinte tenho um for um for que vai inserir o nome do campo e outro que vai colocar valor em cada input value=$teste[$i]

o primeiro for esta funcionando o segundo nao está, queria saber uma forma de criar um for dentro do outro para um criar uma tabela de forma automatica

 

no caso o value é extraido da tabela do banco de dados e estou usando o

mysql_fetch_array

que cria um array com valores da tabela daí o

 for

é feito com eles

 

caso alguem tenha outra forma de fazer isso espero dicas !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

$pessoas vem do banco também?

nao $pessoais é um array dessa forma $pessoais = 'nome,cpf,telefone,endereço,obs';

Compartilhar este post


Link para o post
Compartilhar em outros sites

loop dentro do outro é desnecessário para esse caso, insira os nomes manualmente(nome,cpf,telefone,endereço,obs), afinal não tantos assim e faça um loop apenas nas linhas da consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom simplificando tudo isso aqui o que eu quero fazer é isso

tenho uma tabela onde ela mostra dados cadastrados no banco de dados para alteração ou confirmação do usuario.

a tabela se montará atraves de dados de uma string que terá um explode para dividi-la nas partes que compem o

<input type="text">

o primeiro valor corresponde ao nome do campo, o segundo ao valor do campo e o terceiro ao tamanho do campo

eu quero dar o explode para usar isso sem necessidade de ir na tabela e mudar caso eu queira mudar algo so mudarei nessa string e ja era

<?php 
$pessoais = 'Nome do aluno-nome-50,
 CPF-cpf-15,
 RG-rg-14,
 UF-uf-2,
 Cidade-cidade-50,
 Endereço-endereco-50,
 Número-numero-5,
 CEP-cep-10,
 Telefone-telefone-20,
 Celular-celular-20,
 OBS-obs-50';

   $pessoais = explode(',', $pessoais);
   //vou medir o tamanho do array para conseguir para-lo sem loop
     $tamanho = count($pessoais);

// aqui faço um for para rodar a string e ir preenchendo os dados da tabela

        print'
                 <table border="1">
      for($i=0;$i<=$tamanho;$i++){
     print' 
        <tr><td><font face="Verdana, Geneva, sans-serif" size="2">'.$pessoais[$i].'</font></td>
 <td><input type="text" name="'.$variaveis[$i].'" size="'.$tamanhos[$i].'" value="" class="campos" ></td></tr>';
   if  ($i == $tamanho)  
     break;				
 }

     </table>';

// onde tamanhos e variaveis formarao o restante do input type=text
// no caso do valor do campo mostrarei mas quero ver como ficaria esta parte antes...


?>

 

 

podendo substituir 30 linhas de codigo por isso vejo que nao seria desnecessario !!!

 

fico no aguardo de novas ideias !

Compartilhar este post


Link para o post
Compartilhar em outros sites

por isso que te perguntei, só que você passou isso

$pessoais é um array dessa forma $pessoais = 'nome,cpf,telefone,endereço,obs'; 

agora para criar os campos com a sua configuração

...
print '<table border="1">';
for( $i = 0; $i < $tamanho; $i++ ){
   $campo = explode("-",$pessoais);
print' 
       <tr>
		<td>
			<font face="Verdana, Geneva, sans-serif" size="2">
				'.$campo[0].'
			</font>
		</td>
		<td>
			<input type="text" name="'.$campo[1].'" size="'.$campo[2].'" value="" class="campos">
		</td>
	</tr>';                                        
}
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

é entao eu fiz de outro jeito e deu certin tbm criei um for principal com os apelidos daí criei array com os outros valores e deu certo !!!

vcs sabem se tem como eu fazer o mesmo para exibir valores de uma consulta mysql com for?

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso

...
print '<table border="1">';
while ( $linha = mysql_fetch_array( $sql )){
for( $i = 0; $i < $tamanho; $i++ ){
	$campo = explode("-",$pessoais[$i]);
	print' 
	<tr>
		<td>
			<font face="Verdana, Geneva, sans-serif" size="2">
				'.$campo[0].'
			</font>
		</td>
		<td>
			<input type="text" name="'.$campo[1].'[]" size="'.$campo[2].'" value="'.$linha[$i].'" class="campos">
		</td>
	</tr>';                                        
}
}
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

show vou testar !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficou dessa forma

while($mostraAluno = mysql_fetch_array($aluno)){
				  for($i=0;$i<=$pessoais;$i++){				             

				   print '

				  <tr><td><font face="Verdana, Geneva, sans-serif" size="2">'.$pessoais[$i].'</font></td>
				  <td><input type="text" name="'.$variaveis[$i].'"  size="'.$valores[$i].'" value="'.$mostraAluno[$i].'" class="campos" ></td></tr>
				  ';

				 if ($i == $verifica) 
				 break;
	            }
			 }

 

o problema que está criando um campo <input type="text"> a mais sem nenhum valor sendo que ele nao tem referencia com nada... seria problema do for?

Compartilhar este post


Link para o post
Compartilhar em outros sites

a quantidade de campos selecionados na sua consulta tem que ter a mesma quantidade de posições do array

mas o problema pode ser simplesmente aqui

  $i<=$pessoais

 

muda o limite do seu for para

  $i<$pessoais

você começa com 0 e tem que terminar com 1 número a menos da quantidade de posições do array

Compartilhar este post


Link para o post
Compartilhar em outros sites

e alterei e deixei com < mas ainda nao deu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora é com você, a lógica está correta, acerta esses detalhes

 

não há necessidade disso, o loop faz já faz isso

if ($i == $verifica) 
   break;

 

agora que vi, você novamente está colocando uma comparação sem lógica, fazendo comparação de um número com um array, já tinha citado isso anteriormente e você ainda não acertou

  $i<=$pessoais

 

faz a comparação certa

a variável $i com a quantidade de posições do array e não com o próprio array

assim

  $i < $verifica

 

leia no manual, como funciona o loop for

http://php.net/manual/en/control-structures.for.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvi aki fiz o seguinte, veirifquei o tamanho do array com o count daí a variavel que recebe o total coloquei ele com variavel -1 que é o tamanho real do vetor...

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.