Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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:
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.
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 />
}
?>o foreach vai varrer todas as posições do array
você testou esse código??
$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 />";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:
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>";@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)
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??
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:
dá para melhorar bastante esse código
>
dá para melhorar bastante esse código
então dá uma ajuda aê! :joia:
Tá tão cavernoso assim, é? :o
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.
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
era só adaptar o post #8
não consegui adaptar!
você pode me dar um exemplo em código?
É, consegui melhorar a gambiarra a ponto de deixar de ser uma gambiara.
Resolvido.
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)){