jcalebe 0 Denunciar post Postado Março 17, 2011 Olá! Tenho um código que gera duas arrays. Preciso que um foreach imprima o resultado das duas, pois a tabela que tenho tem duas colunas. O código: while($row = mysql_fetch_assoc($query)){ $titulo[] = $row['titulo']; $id[] = $row['id']; } As arrays geradas são {var_export()}: $titulo = array ( 0 => 'Galeria 1', 1 => 'Galeria 1', 2 => 'Galeria1', 3 => 'Galeria 3', 4 => 'Galeria 12', 5 => 'Galeria 13', 6 => 'Galeria 12', 7 => 'Galeria 4', 8 => 'Galeria 1', ); $id = array ( 0 => '1', 1 => '2', 2 => '3', 3 => '4', 4 => '5', 5 => '6', 6 => '7', 7 => '8', 8 => '9', ); Obrigado! :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Março 17, 2011 pq você não monta a tabela dentro do próprio while caso contrario pode fazer um só array, utilizando o id como índice do array while($row = mysql_fetch_assoc($query)){ $titulo[$row['id']] = $row['titulo']; } Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Março 17, 2011 Não testei, mas seria algo assim while( $res = mysql_fetch_array($query) ) { $titulo[$res['id']] = $res['titulo']; } Depois você faz apenas um foreach resgatando o id e o titulo -> respectivamente. foreach( $titulo as $chave => $valor ) { echo 'Id: ' . $chave . ' - Titulo: ' . $valor . '<br>'; } Seria +- isso, não precisa criar 2 arrays, não testei, mas é p/ funcionar. :thumbsup: ====================== Desculpa, não vi que o amigo Victor havia postado. Compartilhar este post Link para o post Compartilhar em outros sites
jcalebe 0 Denunciar post Postado Março 17, 2011 Não é imprimir 2 resultados, e sim quatro! 2 de $titulo e 2 de $id. Veja: while( $res = mysql_fetch_array($query) ) { $titulo[$res['id']] = $res['titulo']; } foreach($titulo as $idd=>$titl){ //Imprime um resultado echo $idd.' - '.$titl.'<br />'; //1 - Galeria 15<br /> //Agora como eu imprimo o próximo resultado do array aqui? //2 - Galeria 17<br /> } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Março 17, 2011 o foreach vai varrer todas as posições do array você testou esse código?? Compartilhar este post Link para o post Compartilhar em outros sites
Jaime_Pinheiro 0 Denunciar post Postado Março 17, 2011 $result = array(); while($array = mysql_fetch_array($query)) { $result[] = $array ; } foreach ($result as $array) echo "Id: $array[id] - Título: $array[titulo]<br />"; OU $result = array(); while($object = mysql_fetch_object($query)) { $result[] = $object; } foreach ($result as $object) echo "Id: {$object->id} - Título: {$object->titulo}<br />"; Compartilhar este post Link para o post Compartilhar em outros sites
jcalebe 0 Denunciar post Postado Março 18, 2011 Vocês não entenderam! Eu tenho uma tabela que tem duas colunas e n linhas. A organização é essa: <table> <tbody> <?php while( $res = mysql_fetch_array($query) ) { $titulo[$res['id']] = $res['titulo']; } /*Loop aqui */ ?> <tr> <td><?php /* Resultado 1 */ ?></td> <td><?php /* Resultado 2 */ ?></td> </tr> <?php /* Fim do loop */ ?> </tbody> </table> Neste exemplo, o primeiro loop do foreach deve imprimir os índices 1 e 2 do array $titulo! No próximo loop, ele vai imprimir os índices 3 e 4, e assim sucessivamente. Mas o problema é que não consigo montar um loop que possa imprimir 2 índices diferentes de um array em cada loop. Abraços! :ninja: Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Março 18, 2011 olha se isso resolve $res = mysql_fetch_assoc($query); echo "<table><tr> <td>id: {$res['id']} - titulo: {$res['titulo']}</td>"; $cont = 1; while( $res = mysql_fetch_assoc($query) ) { echo $cont % 2 == 0 ? "</tr><tr>" : ""; echo "<td>id: {$res['id']} - titulo: {$res['titulo']}</td>"; $cont++; } echo "</tr></table>"; Compartilhar este post Link para o post Compartilhar em outros sites
jcalebe 0 Denunciar post Postado Março 18, 2011 @Victor, não funcionou. Vejam o que tenho até agora, e se podem ajudar. Preciso adiantar o ponteiro interno do loop em + 1, após imprimir o primeiro resultado. O problema está na linha 39(comentei): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Slideshow!</title> <link rel="stylesheet" type="text/css" href="css/base.css" media="screen" /> </head> <body> <h1><p style="text-align:center;">ÁLBUM DE IMAGENS</p></h1> <br /> <table align="center" id="gall" cellpadding="0" cellspacing="0"> <tbody> <tr> <td>Nome</td> <td>Nome</td> </tr> <?php require_once('conect.php'); $sql = 'SELECT * FROM `dados` '; $query = mysql_query($sql); $titulo = array(); $id = array(); while($row = mysql_fetch_assoc($query)){ $dado[$row['id']] = $row['titulo']; } foreach($dado as $id => $titulo){ ?> <tr> <td><a href="galeria.php?id=<?php echo $id; ?>"><?php echo $titulo; ?> <img align="center" src="./thumbs/<?php echo $id; ?>.jpg" /></a></td> /* Linha 39: Não consigo fazer este next() funcionar */ <?php if(next() === false){echo'<td>-</td>'; break;}?> <td><a href="galeria.php?id=<?php echo $id; ?>"><?php echo $titulo; ?> <img align="center" src="./thumbs/<?php echo $id; ?>.jpg" /></a></td> </tr> <?php } ?> </tbody> </table> <p style="font-size:8pt;text-align:left;">Galeria de Imagens - <?php echo date('Y'); ?></a></p> </body> </html> <?php @mysql_close($conexao); ?> Abraços. B) Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Março 18, 2011 eu até quero entender!! mas para que você quer adiantar o índice no array se ele vai ser imprimido na próxima volta do loop?? Compartilhar este post Link para o post Compartilhar em outros sites
jcalebe 0 Denunciar post Postado Março 18, 2011 já resolvi, substituí o foreach por um while(true): (só para com o break) <table align="center" id="gall" cellpadding="0" cellspacing="0"> <tbody> <tr id="tit"> <td>Nome</td> <td></td> <td>Nome</td> <td></td> </tr> <?php require_once('conect.php'); $sql = 'SELECT * FROM `dados` '; $query = mysql_query($sql); $titulo = array(); $id = array(); while($row = mysql_fetch_assoc($query)){ $id[] = $row['id']; $titulo[] = $row['titulo']; } $total = count($id)-1; while(true){ if(!isset($id[$total])) break; ?> <tr> <td><a href="galeria.php?id=<?php echo $id[$total]; ?>"><?php echo $titulo[$total]; ?></a></td> <td><a href="galeria.php?id=<?php echo $id[$total]; ?>"><img align="center" src="./thumbs/<?php echo $id[$total]; ?>.jpg" /></a></td><?php $total--; if(!isset($id[$total])){echo'<td>-</td><td></td>'; break;}?> <td><a href="galeria.php?id=<?php echo $id[$total]; ?>"><?php echo $titulo[$total]; ?></a></td> <td><a href="galeria.php?id=<?php echo $id[$total]; ?>"><img align="center" src="./thumbs/<?php echo $id[$total]; ?>.jpg" /></a></td> </tr> <?php $total--; } ?> </tbody> Abraços. :skull: :ninja: Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Março 18, 2011 dá para melhorar bastante esse código Compartilhar este post Link para o post Compartilhar em outros sites
jcalebe 0 Denunciar post Postado Março 18, 2011 dá para melhorar bastante esse código então dá uma ajuda aê! :joia: Tá tão cavernoso assim, é? :o Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Março 18, 2011 tipo você ta usando array desnecessariamente, já poderia tá usando o 1º loop para exibir o resultado, é só uma questão de adaptação. loops e condições gastam muito processamento, ainda mais as duas juntas, quanto menos utiliza melhor para o desempenho da aplicação. Compartilhar este post Link para o post Compartilhar em outros sites
jcalebe 0 Denunciar post Postado Março 18, 2011 Foi isso que perguntei desde o início! Mas nenhuma das respostas que me deram funcionou, então tive que inprovisar esse código. Mesmo que ele sendo um cuzamento de um tijolo com uma tartaruga alejada, foi o único que consegui. Você reparou que cada loop escreve 2 índices (o segundo é $var--; que o primeiro) diferentes de dois arrays diferentes até consumir todo o array? Exemplo: while(){ loop1-> escreve 6 e 5 loop2-> escreve 4 e 3 loop3-> escreve 2 e 1 break; } []'s Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Março 18, 2011 era só adaptar o post #8 Compartilhar este post Link para o post Compartilhar em outros sites
jcalebe 0 Denunciar post Postado Março 18, 2011 não consegui adaptar! você pode me dar um exemplo em código? Compartilhar este post Link para o post Compartilhar em outros sites
jcalebe 0 Denunciar post Postado Março 19, 2011 É, consegui melhorar a gambiarra a ponto de deixar de ser uma gambiara. Resolvido. Compartilhar este post Link para o post Compartilhar em outros sites