Jump to content

[Solucionado]Consulta mysql en pagina nueva de prestashop


Recommended Posts

Hola a todos, como esta.

 

Aquí molestandoles de nuevo, jeje, pero debo solucionar estos inconvenientes.

 

El problema es que siguiendo varios tutoriales cree una pagina nueva en prestashop con 3 archivos

 

* prueba2.php  ---  ubicado en la raiz

* Prueba2Controller.php  ---  ubicado en la carpeta controller

* chorizos.tpl  ---  ubicado en la carpeta del tema

 

 

la pagina funciona si quiero mostrar cualquier variable me la muestra, pero debo mostrar una consulta a la base de datos.

 

Siguiendo un tutorial tengo el siguiente codigo:

 

Prueba2Controller.php

 

public function consulta($params)
    {
        parent::consulta();
        global $smarty;
        
        $sql='SELECT * FROM sv_address_categories';
        $query=mysql_query($sql);
        
        $x=0;
        while($row=mysql_fetch_array($query))
        {
            $datos[$x]=array($col['sv_address_id'], $col['sv_monto']);
            $x++;
        }
        mysql_close();
        
        self::$smarty->assign(array(
            'datos' => $datos
        ));
    }
 
 
chorizos.tpl
 
<div id="prueba" class="block">
    <h4>MONTOS</h4>
    <div class="block_content">
    <table border="0" cellspacing="5" cellpadding="5">
        {foreach key=key name=outer item=dato from=$datos}
        <tr class="">
            {foreach key=key item=item from=$dato}
            <td align="left">{$item['sv_address_id']}</td>
            <td align="left">{$item['sv_monto']}</td>
            {/foreach}
        </tr>
        {/foreach}
    </table>
    </div>
</div>
 
 
Este código lo saque de un tutorial, pero al ver en la web me sale el siguiente error:
 
Notice: Undefined index: datos in /var/www/html/catalogotaski/cache/smarty/compile/e6/cb/f7/e6cbf75943a02de230a0b60130534a62a3d68628.file.chorizos.tpl.php on line 51Notice: Trying to get property of non-object in /var/www/html/catalogotaski/cache/smarty/compile/e6/cb/f7/e6cbf75943a02de230a0b60130534a62a3d68628.file.chorizos.tpl.php on line 51
 
 
Alguien que me pueda ayudar por favor.
 
Estoy usando prestashop 1.5
 
Gracias.

 

Edited by shadowwolfone (see edit history)
Link to comment
Share on other sites

La variable que estas usando en el while no veo que la utilizes en nada dentro de este.

Es decir la info que estas sacando de la BD no la usas dentro del while si te estas basando en un ejemplo tal vez no hayas cambiado correctamente esa parte.

 

Si puedes adjuntar el codigo completo te podria ayudar mejor.

 

Saludos

Link to comment
Share on other sites

Hola como estas gracias por tu respuesta.

Te publico el código completo que tengo pero en si es solo eso.

 

Prueba2Controller.php

 

<?php
class Prueba2ControllerCore extends FrontController
{
 
    public function process()
    {
        parent::process();
       
        $sql='SELECT * FROM sv_address_categories';
        $query=mysql_query($sql);
        
        $x=0;
        while($row=mysql_fetch_array($query))
        {
            $yo[$x]=array($col['sv_address_id'], $col['sv_monto']);
            $x++;
        }
        //declaramos las variables para smarty
        self::$smarty->assign(array(
            'yo' => $yo
        ));
    }
    
        public function displayContent()
    {
        parent::displayContent();
        //definimos el tpl que muestra la página
        self::$smarty->display(_PS_THEME_DIR_.'chorizos.tpl');
    }
}
 
 
 
Chorizos.tpl
 
{capture name=path}{l s='Prueba'}{/capture}
{include file="$tpl_dir./breadcrumb.tpl"}
<h1>{l s='Prueba'}</h1>
 
<!--mostramos nuestra variable-->
 
<div id="prueba" class="block">
    <h4>MONTOS</h4>
    <div class="block_content">
    <table border="0" cellspacing="5" cellpadding="5">
        {foreach key=key name=outer item=dato from=$datos}
        <tr class="">
            {foreach key=key item=item from=$dato}
            <td align="left">{$item['sv_address_id']}</td>
            <td align="left">{$item['sv_monto']}</td>
            {/foreach}
        </tr>
        {/foreach}
    </table>
    </div>
</div>
 
 
Eso es todo lo que tengo y como comentaba lo saque de un post así que lo único que cambie fueron las tablas de la base de datos.
 
Ademas tengo en la raiz un archivo php con el siguiente codigo:
 
Prueba2.php
 
<?php
/**
 * This file will be removed in 1.6
 * You have to use index.php?controller=page_name instead of this page
 *
 * @deprecated 1.5.0
 */
 
require(dirname(__FILE__).'/config/config.inc.php');
Tools::displayFileAsDeprecated();
 
Tools::redirect('index.php?controller=prueba2'.((count($_GET) || count($_POST)) ? '&'.http_build_query(array_merge($_GET, $_POST), '', '&') : ''), __PS_BASE_URI__, null, 'HTTP/1.1 301 Moved Permanently');
 
La verdad no soy programador así que no entiendo muy este tema.
 
Si alguien me puede ayudar, ya que si logro que funcione esto debo cambiar a la consulta real que es sumamente complicada.
 
Gracias.
Edited by shadowwolfone (see edit history)
Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...