pulao 0 Denunciar post Postado Setembro 8, 2011 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
Fabio Pratta 14 Denunciar post Postado Setembro 8, 2011 Amigo posta o codigo todo pra gente entender o que quer esta confuso.. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Setembro 8, 2011 o loop for funciona com controladores numéricos. você está tentando colocar limite comparando com array, não faz sentido. Compartilhar este post Link para o post Compartilhar em outros sites
Fabio Pratta 14 Denunciar post Postado Setembro 8, 2011 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
pulao 0 Denunciar post Postado Setembro 8, 2011 é 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
Victor Cometti 8 Denunciar post Postado Setembro 8, 2011 $pessoas vem do banco também? Compartilhar este post Link para o post Compartilhar em outros sites
alexsandrofm 0 Denunciar post Postado Setembro 8, 2011 Essa linha não seria assim: for($i=0;$i<=count($pessoais);$i++){ Compartilhar este post Link para o post Compartilhar em outros sites
pulao 0 Denunciar post Postado Setembro 8, 2011 $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
Victor Cometti 8 Denunciar post Postado Setembro 8, 2011 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
pulao 0 Denunciar post Postado Setembro 8, 2011 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
Victor Cometti 8 Denunciar post Postado Setembro 8, 2011 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
pulao 0 Denunciar post Postado Setembro 9, 2011 é 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
cesaraugusto 0 Denunciar post Postado Setembro 9, 2011 .kag Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Setembro 9, 2011 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
pulao 0 Denunciar post Postado Setembro 9, 2011 show vou testar !!! Compartilhar este post Link para o post Compartilhar em outros sites
pulao 0 Denunciar post Postado Setembro 9, 2011 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
Victor Cometti 8 Denunciar post Postado Setembro 9, 2011 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
pulao 0 Denunciar post Postado Setembro 9, 2011 e alterei e deixei com < mas ainda nao deu! Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Setembro 9, 2011 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
pulao 0 Denunciar post Postado Setembro 10, 2011 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