为foreach和index.php提供的无效参数未显示任何内容

问题描述

我尝试使用PHP,HTML,CSS对网站进行编程,但是我是一个初学者。最初,我仅使用CSS和HTML对网站进行编程,因此效果很好。但是,当我尝试使用PHP,HTML对同一网站进行编程时,我遇到了几个问题。和带有MVC模型的CSS。 When I execute my website this shows nothing: 另外,我还有另一个问题:

为foreach()提供的参数无效。

型号代码

<?PHP

function muestra($DB)
{
    $categorias = NULL;
    $sql = 'SELECT id,`nombre`,`imagen` FROM categoria';
    $stmt = $DB->prepare($sql);
    $stmt->execute();
    $categorias = $stmt->fetchAll();
    return $categorias;
}
?>

控制器代码

<?PHP
    require_once(__DIR__.'/../model/conexioBD.PHP');
    require_once(__DIR__ . '/../model/modelo_categorias.PHP');

    $DB = conexio();
    //$DB = conecta();
    $categorias = muestra($DB);

    include(__DIR__.'/../views/vista_categorias.PHP');

?>

查看代码

    <!DOCTYPE html>
    
    <html lang="es">
    <head>
        <Meta charset="UTF-8">
        <title>Categorias</title>
        <link rel="stylesheet" type="text/css" href="css/categorias.css">
    </head>
    <body>
    <div class="navigation">
        <ul>
            <li><a href="#">Principal</a></li>
            <li><a href="#">Categorias</a></li>
            <li><a href="#">Productos</a></li>
            <li><a href="#">Carrito</a></li>
            <li><a href="#">Perfil</a></li>
            <li><a href="#">Contacto</a></li>
    
        </ul>
    </div>
    
    <div class="paginaCategorias">
    
        <div class="grid-contenidor">
            <?PHP foreach ($categorias as $categoria) :?>
                <article class="categorias-llista" id=<?PHP echo $categoria['id'];?>>
                    <a class="categorias-titulo" href="#"><?PHP echo $categoria['nombre'];?></a>
                    <div class="categorias-imagen">
                        <a href="#">
                            <img width="300" height="169" alt="categoria" src= <?PHP echo $categoria['imagen']; ?>/></a>
                    </div>
                </article>
                <?PHP endforeach; ?>
        </div>
    </div>
    </body>
    </html>

index.PHP代码

<?PHP


    if(!isset($_GET['accio'])){
        error_log("error");
    }else{
        $accio = $_GET['accio'];
        switch ($accio)
        {

            default:
                include __DIR__.'/controllers/control_categorias.PHP';
                break;
        }
    }

?>

解决方法

您需要将?accio=val添加到您的URL。

在索引文件中,查看if / else块。它正在检查$_GET中的内容,如果未设置accio,它将不会显示您的页面。我不知道该参数的用途,并且似乎在您的代码的其他地方也没有使用它。

<?php
    if(!isset($_GET['accio'])){
        error_log("error");
    }else{
        $accio = $_GET['accio'];
        switch ($accio)
        {
            default:
                include __DIR__.'/controllers/control_categorias.php';
                break;
        }
    }
?>

由于似乎未使用$accio,因此您可以将其用作索引。

<?php
    include __DIR__.'/controllers/control_categorias.php';
?>