rfamelli 0 Denunciar post Postado Novembro 16, 2009 pessoal, to precisando fazer um slide de imagens em javascript que integra com php puxando as imagens do banco. No entanto surge um problema. Quando faço while, ele pega inclusive a vírgula depois do colchete e faz com que não funcione. Como eu faço isso? Como faço o loop, sendo que a última linha não pega a vírgula? Alguem me help? Obrigada desde já! <script type="text/javascript"> var mygallery2=new fadeSlideShow({ wrapperid: "fadeshow2", //ID of blank DIV on page to house Slideshow dimensions: [190, 111], //width/height of gallery in pixels. Should reflect dimensions of largest image imagearray: [<? php while($row = mysql_fetch_array($result)) { ?> [<? echo "$row['nome']"?>.jpg, "link.php", "", ""], <?} ?> //<--no trailing comma after very last image element! ], displaymode: {type:'manual', pause:2500, cycles:0, wraparound:false}, persist: false, //remember last viewed slide and recall within same session? fadeduration: 500, //transition duration (milliseconds) descreveal: "always", togglerid: "fadeshow2toggler" }) </script> Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Novembro 16, 2009 <script type="text/javascript"> var mygallery2=new fadeSlideShow({ wrapperid: "fadeshow2", //ID of blank DIV on page to house Slideshow dimensions: [190, 111], //width/height of gallery in pixels. Should reflect dimensions of largest image imagearray: [<?php while($row = mysql_fetch_array($result)) { ?> [<? echo $row['nome']; ?>.jpg, "link.php", "", ""],<?php } ?> //<--no trailing comma after very last image element! ], displaymode: {type:'manual', pause:2500, cycles:0, wraparound:false}, persist: false, //remember last viewed slide and recall within same session? fadeduration: 500, //transition duration (milliseconds) descreveal: "always", togglerid: "fadeshow2toggler" }) </script> Tente agora.! você separou o <? de php, tem que ser junto. <?php. E no seu echo $row['nome'], você não colocou o ponto e vírgula no final, e colocou aspas duplas. Eu retirei, não é necessário. E na chaves que fecha o WHILE você colocou assim <? } ?>, ele não estava identificando como PHP. Então eu coloquei <?php } ?>. Ok ? Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Novembro 16, 2009 Eu aconselho você colocar todos os dados primeiro em um array: <?php while($rows = mysql_fetch_array($result)) { $dados = $rows; } ?>Agora que você tem todos os registros você os conta: $num_regs = count($dados);Agora você tem o numero de registros, ou seja, você tem o número do ultimo registro.Sendo assim, quando for o ultimo numero você não exibe a virgula. Para fazer isso você vai precisar de uma variavel que armazena o numero da iteração atual: $i = 1; foreach($dados as $row): echo $row['nome']; if($i != $num_regs) // Se o numero da iteração atual for diferente ao numero total de registros entra no IF echo ','; $i++; // Iterador endforeach; Bom, é algo do tipo, estuda aí e adapta =D Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Novembro 16, 2009 Separa o codigo php do javascript fica bem melhor, no caso ali poderia usar ajax mas para corrigir seu problema, você pode pegar todos os dados do banco guardar num array e depois ai sim passar a virgula do jeito certo sem sobrar uma no final imagearray: [<?php while($row = mysql_fetch_array($result)) { ?> $arr[] = ".[".$row['nome'].".jpg, \"link.php\", \"\", \"\"]"; <?php } $imgs = implode(",", $arr); echo $imgs; ?> ], ... Compartilhar este post Link para o post Compartilhar em outros sites
rfamelli 0 Denunciar post Postado Novembro 16, 2009 Separa o codigo php do javascript fica bem melhor, no caso ali poderia usar ajax mas para corrigir seu problema, você pode pegar todos os dados do banco guardar num array e depois ai sim passar a virgula do jeito certo sem sobrar uma no final imagearray: [<?php while($row = mysql_fetch_array($result)) { ?> $arr[] = ".[".$row['nome'].".jpg, \"link.php\", \"\", \"\"]"; <?php } $imgs = implode(",", $arr); echo $imgs; ?> ], ... Valeu pessoal,muito obrigada pela ajuda. Fabio acho que é esse o caminho. mas com este código está dando o erro Warning: implode() [function.implode]: Invalid arguments passed in /home/storage/2/b1/6b/r2consulting/public_html/index.php on line 51 O que é isso? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Novembro 16, 2009 como nao da para eu testar apenas te mostrei como seria mas tenta dar um print_r para saber como esta o array print_r($arr); Compartilhar este post Link para o post Compartilhar em outros sites
rfamelli 0 Denunciar post Postado Novembro 16, 2009 como nao da para eu testar apenas te mostrei como seria mas tenta dar um print_r para saber como esta o array print_r($arr); Fiz o print_r e nao printou nada mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Novembro 16, 2009 Então nao esta montando nada dentro do while testa se a consulta esta retornando algum valor ou faz assim só pra você testar imagearray: [<?php $i = 0; while($row = mysql_fetch_array($result)) { ?> $i++; $arr[] = ".[".$row['nome'].".jpg, \"link.php\", \"\", \"\"]"; <?php } echo $i; $imgs = implode(",", $arr); echo $imgs; ?> ], se o resultado do $i for 0 você tem certeza que o while esta nao retornando nada Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Novembro 17, 2009 Então nao esta montando nada dentro do while Talvez declarar a matriz antes do while possa ajudar: $arr = array(); while($row = mysql_fetch_array($result)) { $arr[] = sprintf( '["%s.jpg","link.php", "", ""]' , $row[ 'nome' ] ); } // Se existir alguma imagem na matriz, mostramos. if ( count( $arr ) ){ echo implode( ',' , $arr); } else { echo 'A matriz está vazia.'; } Compartilhar este post Link para o post Compartilhar em outros sites
rfamelli 0 Denunciar post Postado Novembro 17, 2009 Fabio, agora deu certo! Muito obrigada pela ajuda! Abraços Compartilhar este post Link para o post Compartilhar em outros sites