I can not show data requested by query, it shows the query

0

I try to show data stored in a db, I am working php as mvc and when I show the screen with the relevant queries it shows me the query and not the data, then I leave a photo.

class.Conexion.php

<?php

class Conexion extends mysqli {

    public function __construct(){
        parent::__construct('localhost','root','123','nielsendb_temp');
        $this->query("SET NAMES utf8;");
        $this->connect_errno ? die('ERROR: Datos incorrectos en /core/models/class.Conexion.php'): null;

    }

    public function rows($x){
        return mysqli_num_rows($x);
    }

    public function recorrer($x){
        return msqli_fetch_array($x);
    }

    public function liberar($x){
        return mysqli_free_result($x);
    }

    public function preparada(){
        return mysqli_stmt_init();
    }
    public function conectar(){
        return mysqli_query();
    }
}

?>

indexControler.php

<?php

include('core/models/class.Conexion.php');


$template = new Smarty();
$template->display('home/index.tpl');

?>

index.tpl

   {include 'overall/header.tpl'}
    {include 'overall/menu.php'}
    {include 'overall/carrusel.tpl'}  
    {include 'overall/contenedor.php'}
    {include 'overall/footer.tpl'}

menu.php

<body>
    <div class="wrapper">
    <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
        <ul class="navbar-nav mr-auto">
            <img class="navbar-brand" src="/noticias/img/n1.png" style="width: 150px;height: 50px;">

            <?php
            $db = new Conexion();
            alert($db);
                $rscons= $db->mysqli_query("Select admin from tblusuario");

                $rs=mysqli_fetch_array($rscons);
                if ($rs["admin"]==1)
                {
                    $obtenermenu= $db->mysqli_query("Select idopcion,descripcion,glyphicon from tblnoticias_menu order By PosI");
                    while($menu=mysqli_fetch_array($obtenermenu))
                    {
                        $submenu= $db->mysqli_query("Select idsubmenu,url,descripcion,glyphicon from tblsubmenu where idopcion='$menu[idopcion]' and estado=1 Order By PosS");
                        if(mysqli_num_rows($submenu)>0) 
                        {
                            ?>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                <i class="fa <?php echo $menu['glyphicon']; ?>"></i><span><?php echo utf8_encode($menu['descripcion']); ?></span> <i class="fa fa-angle-left pull-right"></i>
                            </a>

                    <ul class="dropdown-menu">
                        <?php
                            while($row1=mysqli_fetch_array($submenu))
                            {
                                ?>

                            <li>
                                <a href="<?php echo " ../../ ".$row1['url'];?>"><i class="fa fa-circle-o"></i><?php echo utf8_encode($row1['descripcion']); ?></a>
                            </li>

                            <?php
                            }
                            ?>
                    </ul>
                </li>
                <?php
                        }
                    }
                }else{
                    $obtenermenu= $db->mysqli_query("Select M.idopcion,M.descripcion,glyphicon from tblperfilesuser P inner Join tblmenu M On P.Idopcion=M.IdOpcion Group By M.idopcion,M.descripcion Order By PosI");
                    while($menu=mysqli_fetch_array($obtenermenu))
                    {
                        $submenu= $db->mysqli_query("Select S.idsubmenu,S.url,S.descripcion,glyphicon from tblperfilesuser P inner Join tblsubmenu S On P.idopcion=S.idopcion And P.idSubmenu=S.IdSubMenu where P.idopcion='$menu[idopcion]' And  estado=1 Order By PosS");
                        if(mysqli_num_rows($submenu)>0)
                        {
                            ?>
                    <li class="nav-item">
                        <a href="#">
                                <i class="fa <?php echo $menu['glyphicon']; ?>"></i><span><?php echo utf8_encode($menu['descripcion']); ?></span> <i class="fa fa-angle-left pull-right"></i>
                            </a>

                        <ul class="navbar-nav">
                            <?php
                            while($row1=mysqli_fetch_array($submenu))
                            {
                                ?>

                                <li>
                                    <a href="<?php echo " ../../ ".$row1['url'];?>"><i class="fa fa-circle-o"></i><?php echo utf8_encode($row1['descripcion']); ?></a>
                                </li>

                                <?php
                            }
                            ?>
                        </ul>
                    </li>
                    <?php
                        }
                    }
                }
            ?>
        </ul>

    </nav>
    <?php
        $db->close();

?>
  </div>
    
asked by felipe andrade 25.08.2017 в 16:36
source

1 answer

0

I do not use Smarty but reading the documentation we found {include_php} .

  

{Include_php} is obsolete, it is recommended to use plugins   to correctly isolate the presentation of the application code.   As of Smarty 3.1, the {include_php} tags are only   available on SmartyBC.

It is NOT recommended to use php code in Smarty views. In fact it is obsolete and should be avoided.

If you still want to use it, the index.tpl file should look like this:

index.tpl

{include 'overall/header.tpl'}
{include_php file='overall/menu.php'}
{include 'overall/carrusel.tpl'}  
{include_php 'overall/contenedor.php'}
{include 'overall/footer.tpl'}

The correct way would be to make the queries in the controller indexControler.php and pass the results to the view to traverse them.

Something like this:

indexControler.php

<?php

include('core/models/class.Conexion.php');
$db = new Conexion();

// creamos un array para las opciones del menu
$menuOption = array();

$rscons= $db->mysqli_query("Select admin from tblusuario");
$rs=mysqli_fetch_array($rscons);

if ($rs["admin"]==1){
    $obtenermenu= $db->mysqli_query("Select idopcion,descripcion,glyphicon from tblnoticias_menu order By PosI");
    while($menu=mysqli_fetch_array($obtenermenu))
    {
        // supongo que el id es un entero poreso me aseguro de que asi sea para no tener problemas
        $idMenu = (int) $menu['idopcion'];
        $submenu = $db->mysqli_query("Select idsubmenu,url,descripcion,glyphicon from tblsubmenu where idopcion=".$idMenu." and estado=1 Order By PosS");
        if(mysqli_num_rows($submenu)>0) 
        {
            // añadimos el submenu al menu principal
            $menu['submenu'] = mysqli_fetch_all($submenu, MYSQLI_ASSOC);
        }

        // volcamos el menu y submenu a $menuOption
        $menuOption['menu'] = $menu;
        // indicamos se es admin o no
        $menuOption['admin'] = true;
    }
}
else{
    // esto es casi lo mismo que antes pero adaptando las consultas
    $obtenermenu= $db->mysqli_query("Select M.idopcion,M.descripcion,glyphicon from tblperfilesuser P inner Join tblmenu M On P.Idopcion=M.IdOpcion Group By M.idopcion,M.descripcion Order By PosI");
    while($menu=mysqli_fetch_array($obtenermenu))
    {
        $idMenu = (int) $menu['idopcion'];
        $submenu= $db->mysqli_query("Select S.idsubmenu,S.url,S.descripcion,glyphicon from tblperfilesuser P inner Join tblsubmenu S On P.idopcion=S.idopcion And P.idSubmenu=S.IdSubMenu where P.idopcion=".$idMenu." And  estado=1 Order By PosS");
        if(mysqli_num_rows($submenu)>0) 
        {
            $menu['submenu'] = mysqli_fetch_all($submenu, MYSQLI_ASSOC);
        }

        $menuOption['menu'] = $menu;
        $menuOption['admin'] = false;        
    }   
}

$db->close();

$template = new Smarty();
// asignamos el array para tenerlo disponible en la vista
$template->assign('menuOption', $menuOption);

$template->display('home/index.tpl');


// es mejor no cerrar los archivos que solo contienen php
//?>

index.tpl

{include 'overall/header.tpl'}
// menu debe ser .tpl en lugar de .php
{include 'overall/menu.tpl'}
{include 'overall/carrusel.tpl'} 

// este archivo lo tendras que corregir
//{include 'overall/contenedor.php'}

{include 'overall/footer.tpl'}

menu.php

We use the Smarty syntax to go through the array we passed in the controller

<body>
  <div class="wrapper">
    <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
        <ul class="navbar-nav mr-auto">
            <img class="navbar-brand" src="/noticias/img/n1.png" style="width: 150px;height: 50px;">
            {if $menuOption["admin"] eq true}
                {foreach key=clave item=menu from=$menuOption}
                    <li class="nav-item dropdown">
                        <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                            <i class="fa {$menu['glyphicon']}"></i><span>{$menu['descripcion']}</span> <i class="fa fa-angle-left pull-right"></i>
                        </a>
                        <ul class="dropdown-menu">
                            {foreach key=subClave item=subMenu from=$menu['submenu']}
                                <li>
                                    <a href="../../{$subMenu['url']}"><i class="fa fa-circle-o"></i>{$subMenu['descripcion']}</a>
                                </li>
                            {/foreach}
                        </ul>
                    </li>
                {/foreach}
            {else}
                {foreach key=clave item=menu from=$menuOption}
                    <li class="nav-item">
                        <a href="#">
                            <i class="fa {$menu['glyphicon']}"></i><span>{$menu['descripcion']}</span> <i class="fa fa-angle-left pull-right"></i>
                        </a>
                        <ul class="navbar-nav">
                            {foreach key=subClave item=subMenu from=$menu['submenu']}
                                <li>
                                    <a href="../../{$row1['url']}"><i class="fa fa-circle-o"></i>{$row1['descripcion']}</a>
                                </li>
                            {/foreach}
                        </ul>
                    </li>
                {/foreach}
            {/if}
        </ul>
    </nav>
  </div>
  

It is possible that these script contain some error, I could not prove them.

    
answered by 26.08.2017 / 02:07
source