php- 在 select 一个选项之前切换失败

php- switch fails before i select an option

我在使用 php 开关功能时遇到问题。我知道它一定很简单,但我只是在学习,我似乎无法找到正确的编码方式。 这就是问题所在:当你点击任何选项时它工作正常,但当我第一次加载页面时它会发送错误消息...

<body>
    <?php include ('./header.php')?>

    <section>
        <div class="btn">
            <ul>
                <li><a href="./index.php?opcion=op1">Opcion 1</a></li>
                <li><a href="./index.php?opcion=op2">Opcion 2</a></li>
                <li><a href="./index.php?opcion=op3">Opcion 3</a></li>
            </ul>
        </div>

        <?php 
            if(isset ($_GET['opcion'])) {

            
            switch($_GET['opcion']) {
                case 'op1' :
                    $nombre = 'Magnus Carlsen';
                    $posicion = '1';
                    $puntaje = '2840';
                    $img = './magnus.jpg';
                break;
                case 'op2' :
                    $nombre = 'Ian Nepomniatchi';
                    $posicion = '2';
                    $puntaje = '2812';
                    $img = './nepo.jpeg';
                break;
                case 'op3' :
                    $nombre = 'Ding Liren';
                    $posicion = '3';
                    $puntaje = '2760';
                    $img = './ding.jpg';
                break;
                }
            }
            else {
                
            }
            
            ?>
             <div class="show">
                    <h3><?php echo $nombre?></h2>
                    <h4><?php echo $posicion?></h4>
                    <p><?php echo $puntaje?></p>
                    <div class="contenedor_img">
                        <img src="<?php echo $img ?>" alt="foto">
                    </div>
                </div>

现在,我想“显示”div 不应该在那里...但是当我移动它时它也没有很好地响应...

这是错误:

警告:C:\xampp\htdocs\dashboard\proyectos\PHP\index.php 中第 53 行

中未定义变量 $nombre

警告:C:\xampp\htdocs\dashboard\proyectos\PHP\index.php 中第 54 行

中未定义变量 $posicion

警告:第 55 行 C:\xampp\htdocs\dashboard\proyectos\PHP\index.php 中未定义变量 $puntaje 照片

问题是当表单没有提交的时候,你没有输入你的switch。这意味着您的 $nombre$posicion$puntaje 和很可能 $img 未定义。有两种方法可以解除封锁。

方案一,给这些变量一个默认值

// here you can define your variables
$nombre = 'no number';
$posicion = 'no position';
$puntaje = 'empty';
$img = '';
if (isset ($_GET['opcion'])) {
    switch ($_GET['opcion']) {
        case 'op1' :
            $nombre = 'Magnus Carlsen';
            $posicion = '1';
            $puntaje = '2840';
            $img = './magnus.jpg';
            break;
        case 'op2' :
            $nombre = 'Ian Nepomniatchi';
            $posicion = '2';
            $puntaje = '2812';
            $img = './nepo.jpeg';
            break;
        case 'op3' :
            $nombre = 'Ding Liren';
            $posicion = '3';
            $puntaje = '2760';
            $img = './ding.jpg';
            break;
    }
} else {
}

或者您可以检查用户是否已提交表单,然后再尝试回显变量。您可以通过在 if 语句中包围 html 来做到这一点。

<?php if(isset ($_GET['opcion'])) { ?>
<div class="show">
    <h3><?php echo $nombre?></h2>
        <h4><?php echo $posicion?></h4>
        <p><?php echo $puntaje?></p>
        <div class="contenedor_img">
            <img src="<?php echo $img ?>" alt="foto">
        </div>
</div>
<?php } ?>