Foros del Web » Programando para Internet » PHP »

Problema con Foreach y Smarty

Estas en el tema de Problema con Foreach y Smarty en el foro de PHP en Foros del Web. Hola, siempre que consulté algo en este foro no obtuve respuesta a ver si esta vez tengo mas suerte.. Tengo una consulta mysql en php ...
  #1 (permalink)  
Antiguo 31/08/2010, 00:09
 
Fecha de Ingreso: septiembre-2004
Mensajes: 23
Antigüedad: 19 años, 7 meses
Puntos: 0
Problema con Foreach y Smarty

Hola, siempre que consulté algo en este foro no obtuve respuesta a ver si esta vez tengo mas suerte..
Tengo una consulta mysql en php que trato de recoger en smarty pero como debo insertarlo dentro de otro foreach el bucle siempre repite los mismos 2 registros de la consulta.. se que el fallo está en foreach dentro de otro foreach pero es la primera vez que tengo que hacer algo así y no se como enfocarlo..espero tener mas suerte esta vez.. gracias.

<<PHP>>

Código:
function hookHome($params)
	{
		$currentDate = date('m/d/Y');		
		$sql = 'SELECT * ';
		$sql .= 'FROM `ps_category` ';
		$sql .= 'WHERE `active` = 1 ';
		$sql .= 'AND `level_depth` = 1 ';
		$sql .= 'LIMIT 0, 10';
		$result = mysql_query($sql) or die("Query failed : " . mysql_error());
		while ($line = mysql_fetch_assoc($result))
			{
				$valuefecha[] = $line;
			}
		
		global $smarty;
		$category = new Category(1);
		$nb = intval(Configuration::get('HOME_categories_NBR'));
		$smarty->assign('datacontador', $valuefecha);
		$smarty->assign(array(
			'category' => $category,
			'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),
		));
		return $this->display(__FILE__, 'homecategories.tpl');
	}
<< TPL >>

Código:
{foreach from=$categories item=category name=homeCategories}
			{assign var='categoryLink' value=$link->getcategoryLink($category.id_category, $category.link_rewrite)}
				<li class="ajax_block_category {if $smarty.foreach.homeCategories.first}first_item{elseif $smarty.foreach.homeCategories.last}last_item{else}item{/if}">
					<div id="formatcat">
					<img src="{$img_cat_dir}{$category.id_category}-category.jpg" alt="{$category.name}" title="{$category.name}" id="categoryImage">

		<div id="tempo">
            {foreach key=cid item=con from=$datacontador}
            {$con.available_to}
            {/foreach}
	        </div>
				
					
					<div id="localizador"><a href="{$categoryLink}?submenuheader={counter print=true}&variable2={$category.id_category}" title="{$category.name}">{l s='Go to Promotion' mod='homecategories'}</a></div>				
					</div>				
				</li>
				<br />
            {/foreach}
  #2 (permalink)  
Antiguo 31/08/2010, 09:50
 
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires
Mensajes: 31
Antigüedad: 16 años
Puntos: 0
Pregunta Respuesta: Problema con Foreach y Smarty

Mmhh... no entiendo cual es el error que te está haciendo, pero me parece que cuando en php hacés esto:

Código PHP:
while ($line mysql_fetch_assoc($result))
            {
                
$valuefecha[] = $line;
            } 
estás sobreescribiendo el $valuefecha todas las veces, bah... me parece.
  #3 (permalink)  
Antiguo 31/08/2010, 10:44
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Problema con Foreach y Smarty

Cita:
estás sobreescribiendo el $valuefecha todas las veces, bah... me parece.
nope. Está almacenando en un array con claves numéricas (automáticas).

La verdad, no se ayudarte porque no entiendo smarty :o\
  #4 (permalink)  
Antiguo 31/08/2010, 11:16
 
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires
Mensajes: 31
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con Foreach y Smarty

No conocia esa sintaxis, mira vos.

Yo sí uso smarty.
Lo que recomendaria es evitar usar bucles anidados dentro de los templates. Tal vez haciendo una sola consulta SQL cruzando tablas y utilizar {if} para saber si cambio el registro que hace de padre.
  #5 (permalink)  
Antiguo 02/09/2010, 11:18
 
Fecha de Ingreso: septiembre-2004
Mensajes: 23
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Problema con Foreach y Smarty

Bueno ya estoy desesperado con esto, he intentado todo tipo de ejemplos y no hay manera ¿que estoy haciendo mal? mayid dice que estoy sobreescribiendo el $valuefecha pero he puesto mas abajo un print_r($valuefecha); y obtengo esta salida..

Cita:
Array
(
[0] => Array
(
[available_to] => 2010-08-10 00:00:00
)

[1] => Array
(
[available_to] => 2010-09-07 00:00:00
)

)

pero en la parte del tpl con el foreach del ejemplo siempre obtengo los resultados juntos
Cita:
2010-08-10 00:00:00 2010-09-07 00:00:00
estoy seguro que no deberia estar el foreach dentro de otro foreach.. ALGUNA SOLUCIÓN POR FAVOR..
  #6 (permalink)  
Antiguo 02/09/2010, 11:36
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Problema con Foreach y Smarty

Cita:
mayid dice que estoy sobreescribiendo el $valuefecha
Todo lo contrario. Eso lo dijo kokorini. Lo que imprimiste me da la razón: estás creando un array numérico.

Pero insisto en que no se de Smarty, así que no entiendo esos bucles :o(
  #7 (permalink)  
Antiguo 02/09/2010, 13:56
 
Fecha de Ingreso: septiembre-2004
Mensajes: 23
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Problema con Foreach y Smarty

Bueno ya tengo algo conseguido, después de leer y releer el manual de smarty he hecho lo siguiente como dice que puedo referenciar matrices asociativas en variables que son definidas desde PHP especificando la clave realicé el siguiente cambio en el tpl:

Código:
<div id="temporizador">
{assign var="iddate" value="1"}
{$datacontador.$iddate.available_to|date_format:"%m/%e/%Y %H:%M"}
</div>
ahora al no estár en un foreach no me lo recorre con todos los datos y hago la llamada a la variable del array mediante la clave que le asigna la consulta en el php,
hasta aqui bién ahora tengo que asignar un value="1" dinámico osea que me recorra las claves y las asigne .. aqui ya me he perdido.. llevo 5 horas y no puedo pensar mas.. a ver si tengo suerte y alguien me ilumina.. gracias.

Etiquetas: foreach, smarty
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:26.