How to display data correctly from array using smarty?
When my consult return only one row, thats ok...
But when return more than one row my table crash
Output (second image and the error)
<table class="table-filtro">
<thead>
<tr>
<th class="nome-quarto">TIpo</th>
<th>N° Quarto</th>
<th>Label</th>
<th class="th-periodo" title="14 th April 2011">14</th>
<!--<th class="th-periodo">14 de April de 2011</th>-->
<th class="th-periodo" title="15 th April 2011">15</th>
<!--<th class="th-periodo">15 de April de 2011</th>-->
<th class="th-periodo" title="16 th April 2011">16</th>
<!--<th class="th-periodo">16 de April de 2011</th>-->
<th class="th-periodo" title="17 th April 2011">17</th>
<!--<th class="th-periodo">17 de April de 2011</th>-->
<th class="th-periodo" title="18 th April 2011">18</th>
<!--<th class="th-periodo">18 de April de 2011</th>-->
<th class="th-periodo" title="19 th April 2011">19</th>
<!--<th class="th-periodo">19 de April de 2011</th>-->
<th class="th-periodo" title="20 th April 2011">20</th>
<!--<th class="th-periodo">20 de April de 2011</th>-->
<th class="th-periodo" title="21 th April 2011">21</th>
<!--<th class="th-periodo">21 de April de 2011</th>-->
</tr>
</thead>
<tbody>
<tr>
<td class="nome-quarto">Standard</td>
<td>01</td>
<td>Quarto padrão</td>
<td><img title="01 -- 14 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 14 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 14 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 15 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 15 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 15 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 16 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 16 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 16 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 17 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 17 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 17 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 18 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 18 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 18 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 19 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 19 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 19 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 20 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 20 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 20 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 21 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 21 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 21 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
</tr>
<tr>
<td class="nome-quarto">Standard</td>
<td>05</td>
<td>Deluxe </td>
<td><img title="01 -- 14 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 14 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 14 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 15 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 15 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 15 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 16 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 16 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 16 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 17 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 17 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 17 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 18 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 18 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 18 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 19 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 19 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 19 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 20 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 20 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 20 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 21 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 21 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 21 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
</tr>
<tr>
<td class="nome-quarto">Standard</td>
<td>80</td>
<td>Quarto novo </td>
<td><img title="01 -- 14 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 14 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 14 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 15 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 15 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 15 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 16 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 16 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 16 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 17 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 17 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 17 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 18 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 18 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 18 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 19 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 19 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 19 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 20 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
开发者_如何学C <td><img title="05 -- 20 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 20 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
<td><img title="01 -- 21 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="05 -- 21 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/verde.jpg"></td>
<td><img title="80 -- 21 de April de 2011" src="http://casasbrancas.com.br/reservas/images/cubos/amarelo.jpg"></td>
</tr>
</tbody>
</table>
Template html code
<table class="table-filtro">
<thead>
<tr>
<th class="nome-quarto">TIpo</th>
<th>N° Quarto</th>
<th>Label</th>
{foreach from=$numeros item="estoque"}
<th class="th-periodo" title='{$estoque.reserva_checkin|date_format:"%e th %B %Y"}'>{$estoque.reserva_checkin|date_format:"%e"}</th>
<!--<th class="th-periodo">{$estoque.reserva_checkin|date_format:"%e de %B de %Y"}</th>-->
{/foreach}
</tr>
</thead>
<tbody>
{foreach from=$listar item="estoque"}
<tr>
<td class="nome-quarto">{$estoque.tipo_nome}</td>
<td>{if $estoque.quarto_numero|count_characters eq '1'}0{$estoque.quarto_numero}{else}{$estoque.quarto_numero}{/if}</td>
<td>{$estoque.quarto_descricao}</td>
{foreach from=$datas item="estoque"}
<td><img title="{if $estoque.quarto_numero|count_characters eq '1'}0{$estoque.quarto_numero}{else}{$estoque.quarto_numero}{/if} -- {$estoque.reserva_checkin|date_format:"%e de %B de %Y"}" src="http://{$smarty.server.SERVER_NAME}/reservas/images/cubos/{if $estoque.reserva_status eq '3'}vermelho{elseif $estoque.reserva_status eq '2'}amarelo{else}verde{/if}.jpg" /></td>
{/foreach}
</tr>
{/foreach}
</tbody>
</table>
The PHP function
function datas($data, $dias, $tipo) {
$inicio = strtotime($data);
$edia = date('d', $inicio);
$emes = date('m', $inicio);
$eano = date('Y', $inicio);
$db = new DBConfig();
$db->config();
$db->conn();
$smarty_array = array();
while($i <= $dias) {
$today = strtotime(date('Y-m-d',mktime(0,0,0,date($emes),date($edia)+$i,date($eano))));
$query = mysql_query("SELECT * FROM quartos AS quartos
INNER JOIN tipos AS tipos
LEFT JOIN reservas AS reservas
ON quartos.quarto_tipo = tipos.tipo_id
AND quartos.quarto_numero = reservas.reserva_quarto_id
AND ".$today." BETWEEN reservas.reserva_checkin AND reservas.reserva_checkout
WHERE quartos.quarto_tipo = '".$tipo."'
GROUP BY quartos.quarto_id HAVING Count(*) >= 1") or die(mysql_error());
while($row = mysql_fetch_assoc($query)){
if (empty($row["reserva_status"])) {
$row["reserva_status"] = "0";
}
$row["reserva_checkin"] = $today;
$smarty_array[] = $row;
}
$i++;
}
$db->close();
return $smarty_array;
}
Array
Smarty_Variable Object (3)
->value = Array (24)
0 => Array (15)
quarto_id => "12"
quarto_tipo => "1"
quarto_numero => "1"
quarto_descricao => "Quarto padrão"
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "4"
reserva_quarto_id => "1"
reserva_valor => "1600"
reserva_status => "1"
reserva_cliente_id => "62"
reserva_checkin => 1302757200
reserva_checkout => "1303534800"
reserva_obs => "Aguardando pagamento"
1 => Array (15)
quarto_id => "15"
quarto_tipo => "1"
quarto_numero => "5"
quarto_descricao => "Deluxe "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => null
reserva_quarto_id => null
reserva_valor => null
reserva_status => "0"
reserva_cliente_id => null
reserva_checkin => 1302757200
reserva_checkout => null
reserva_obs => null
2 => Array (15)
quarto_id => "26"
quarto_tipo => "1"
quarto_numero => "80"
quarto_descricao => "Quarto novo "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "3"
reserva_quarto_id => "80"
reserva_valor => "3000"
reserva_status => "2"
reserva_cliente_id => "58"
reserva_checkin => 1302757200
reserva_checkout => "1305090000"
reserva_obs => "Aguardando pagamento"
3 => Array (15)
quarto_id => "12"
quarto_tipo => "1"
quarto_numero => "1"
quarto_descricao => "Quarto padrão"
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "4"
reserva_quarto_id => "1"
reserva_valor => "1600"
reserva_status => "1"
reserva_cliente_id => "62"
reserva_checkin => 1302843600
reserva_checkout => "1303534800"
reserva_obs => "Aguardando pagamento"
4 => Array (15)
quarto_id => "15"
quarto_tipo => "1"
quarto_numero => "5"
quarto_descricao => "Deluxe "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => null
reserva_quarto_id => null
reserva_valor => null
reserva_status => "0"
reserva_cliente_id => null
reserva_checkin => 1302843600
reserva_checkout => null
reserva_obs => null
5 => Array (15)
quarto_id => "26"
quarto_tipo => "1"
quarto_numero => "80"
quarto_descricao => "Quarto novo "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "3"
reserva_quarto_id => "80"
reserva_valor => "3000"
reserva_status => "2"
reserva_cliente_id => "58"
reserva_checkin => 1302843600
reserva_checkout => "1305090000"
reserva_obs => "Aguardando pagamento"
6 => Array (15)
quarto_id => "12"
quarto_tipo => "1"
quarto_numero => "1"
quarto_descricao => "Quarto padrão"
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "4"
reserva_quarto_id => "1"
reserva_valor => "1600"
reserva_status => "1"
reserva_cliente_id => "62"
reserva_checkin => 1302930000
reserva_checkout => "1303534800"
reserva_obs => "Aguardando pagamento"
7 => Array (15)
quarto_id => "15"
quarto_tipo => "1"
quarto_numero => "5"
quarto_descricao => "Deluxe "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => null
reserva_quarto_id => null
reserva_valor => null
reserva_status => "0"
reserva_cliente_id => null
reserva_checkin => 1302930000
reserva_checkout => null
reserva_obs => null
8 => Array (15)
quarto_id => "26"
quarto_tipo => "1"
quarto_numero => "80"
quarto_descricao => "Quarto novo "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "3"
reserva_quarto_id => "80"
reserva_valor => "3000"
reserva_status => "2"
reserva_cliente_id => "58"
reserva_checkin => 1302930000
reserva_checkout => "1305090000"
reserva_obs => "Aguardando pagamento"
9 => Array (15)
quarto_id => "12"
quarto_tipo => "1"
quarto_numero => "1"
quarto_descricao => "Quarto padrão"
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "4"
reserva_quarto_id => "1"
reserva_valor => "1600"
reserva_status => "1"
reserva_cliente_id => "62"
reserva_checkin => 1303016400
reserva_checkout => "1303534800"
reserva_obs => "Aguardando pagamento"
10 => Array (15)
quarto_id => "15"
quarto_tipo => "1"
quarto_numero => "5"
quarto_descricao => "Deluxe "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => null
reserva_quarto_id => null
reserva_valor => null
reserva_status => "0"
reserva_cliente_id => null
reserva_checkin => 1303016400
reserva_checkout => null
reserva_obs => null
11 => Array (15)
quarto_id => "26"
quarto_tipo => "1"
quarto_numero => "80"
quarto_descricao => "Quarto novo "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "3"
reserva_quarto_id => "80"
reserva_valor => "3000"
reserva_status => "2"
reserva_cliente_id => "58"
reserva_checkin => 1303016400
reserva_checkout => "1305090000"
reserva_obs => "Aguardando pagamento"
12 => Array (15)
quarto_id => "12"
quarto_tipo => "1"
quarto_numero => "1"
quarto_descricao => "Quarto padrão"
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "4"
reserva_quarto_id => "1"
reserva_valor => "1600"
reserva_status => "1"
reserva_cliente_id => "62"
reserva_checkin => 1303102800
reserva_checkout => "1303534800"
reserva_obs => "Aguardando pagamento"
13 => Array (15)
quarto_id => "15"
quarto_tipo => "1"
quarto_numero => "5"
quarto_descricao => "Deluxe "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => null
reserva_quarto_id => null
reserva_valor => null
reserva_status => "0"
reserva_cliente_id => null
reserva_checkin => 1303102800
reserva_checkout => null
reserva_obs => null
14 => Array (15)
quarto_id => "26"
quarto_tipo => "1"
quarto_numero => "80"
quarto_descricao => "Quarto novo "
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "3"
reserva_quarto_id => "80"
reserva_valor => "3000"
reserva_status => "2"
reserva_cliente_id => "58"
reserva_checkin => 1303102800
reserva_checkout => "1305090000"
reserva_obs => "Aguardando pagamento"
15 => Array (15)
quarto_id => "12"
quarto_tipo => "1"
quarto_numero => "1"
quarto_descricao => "Quarto padrão"
tipo_id => "1"
tipo_nome => "Standard"
tipo_foto => "03f9efa3b682512c74a9275656622b03.jpg"
reserva_id => "4"
reserva_quarto_id => "1"
reserva_valor => "1600"
reserva_status => "1"
reserva_cliente_id => "62"
reserva_checkin => 1303189200
reserva_checkout => "1303534800"
reserva_obs => "Aguardando pagamento"...
In your nested foreach
you're using item="estoque"
twice.
For the line:
{foreach from=$datas item="estoque"}
you need to use a different name for item
to avoid the loops overwriting each others' values.
see if this works for your also are you getting smarty error or any other error for that matter ?
<table class="table-filtro">
<thead>
<tr>
<th class="nome-quarto">TIpo</th>
<th>N° Quarto</th>
<th>Label</th>
{foreach from=$numeros item="estoque_1"}
<th class="th-periodo" title='{$estoque.reserva_checkin|date_format:"%e th %B %Y"}'>{$estoque_1.reserva_checkin|date_format:"%e"}</th>
<!--<th class="th-periodo">{$estoque.reserva_checkin|date_format:"%e de %B de %Y"}</th>-->
{/foreach}
</tr>
</thead>
<tbody>
{foreach from=$listar item="estoque_2"}
<tr>
<td class="nome-quarto">{$estoque.tipo_nome}</td>
<td>{if $estoque_2.quarto_numero|count_characters eq '1'}0{$estoque_2.quarto_numero}{else}{$estoque_2.quarto_numero}{/if}</td>
<td>{$estoque.quarto_descricao}</td>
{foreach from=$datas item="estoque_3"}
<td><img title="{if $estoque_3.quarto_numero|count_characters eq '1'}0{$estoque_3.quarto_numero}{else}{$estoque_3.quarto_numero}{/if} -- {$estoque_3.reserva_checkin|date_format:"%e de %B de %Y"}" src="http://{$smarty.server.SERVER_NAME}/reservas/images/cubos/{if $estoque_3.reserva_status eq '3'}vermelho{elseif $estoque_3.reserva_status eq '2'}amarelo{else}verde{/if}.jpg" /></td>
{/foreach}
</tr>
{/foreach}
</tbody>
</table>
精彩评论