修复未定义的索引

时间:2013-08-03 21:53:25

标签: php html mysql

我经常收到“通知:未定义的索引:......”我想我知道为什么我只是不知道如何修复它。我有一个html表单页面,其中包含所有这些“if”语句,只在需要时向用户显示消息。我将这个html页面包含在一个控制器php页面上,该页面上有$ _SESSION变量,它从我的后端php脚本中获取处理数据库操作的变量。

因此,为了更容易理解这里是我正在构建的页面的逻辑流程:HTML(表单页面将数据发送到)---> PHP(处理数据库等的页面然后将用户重定向到)---> PHP(向用户显示数据的控制器页面,此处包含html页面)---> HTML(带有表单的原始页面现在向用户显示正确的数据)

但无论何时if或else语句都没有实现,我都会收到关于该变量未定义索引的通知......下面是我的html和controller php页面。让我们说if(!$_POST and $poskodbe != '0')语句已经完成,因为没有人点击提交按钮,很好,一切都没问题,但我收到第二个else if ($poskodbe == '0'){text($moznost);的通知,上面写着“通知:未定义的索引:moznost”。为什么呢?

HTML:

<html>
<body>
    <?php if(!$_POST and $poskodbe != '0') { ?>
    <p>Presenetil<?php text($spol); ?> te je <?php text($monster); ?> !</p>
<form action='../php/gozd.php' method='post'>
    <input type='submit' name='action' value='Napadi' /> ali 
    <input type='submit' name='action' value='Pobegni' />
            <input type='hidden' name='monster' value= '<?php text($monster); ?>' />
</form>
    <?php } 

    else if ($poskodbe == '0'){text($moznost); ?> 
    <p><a href='../php/start.php'>Odpravi se proti domu</a></p> 
    <?php } 

    else { ?>        
    <ul><?php foreach ($combat as $turns => $i) { ?>
        <li> <p><strong><?php text($i['napadalec']); ?></strong>
             <?php text(' napade '); ?><strong><?php text($i['branilec']); ?></strong>
             <?php text(' in mu napravi poškodbe za ') ?><strong><?php text($i['damage']); ?></strong>
             <?php text(' točk zdravja '); } ?> </p></li> 
    </ul>

    <?php if(isset ($zmaga)) { ?> 
    <p>Pregnal si <strong><?php text($monster_ime); ?></strong>! 
       V naglici je za seboj pustil <strong><?php text($cekini); ?></strong> cekinov, ki jih seveda pobereš.</p>
    <p><a href='../php/gozd.php'>Raziskuj dalje</a></p>
    <?php } ?>

    <?php if(isset ($zguba)) { ?>
    <p>Podlegel si poškodbam <strong><?php text($monster_ime); ?></strong>.</p>
    <?php } ?>

    <p><a href='../php/start.php'>Odpravi se proti domu</a></p>
    <?php } ?>        

</body>

</html>

PHP:

<?php

session_start();
include 'razno.php';
include 'stats.php';

$monster = $_SESSION['monster'];
$spol = $_SESSION['spol'];
$poskodbe = $_SESSION['poskodbe'];
$moznost = $_SESSION['moznost'];
$combat = $_SESSION['combat'];
$turns = $_SESSION['poskodbe'];

include '../html/gozd.html';
?>

1 个答案:

答案 0 :(得分:0)

当您访问未设置的数组键时,您将获得Notice: Undefined index:

考虑到你的标题脚本,我认为这是你收到通知的地方。

您可以尝试避免这样:

$moznost = isset($_SESSION['moznost']) ? $_SESSION['moznost'] : -1;

如果未设置moznost,您将获得-1


只是旁注:
将英语和斯洛文尼亚语结合起来并不是一个好习惯(如果我猜对了) 如果您将所有代码保留为英语,只翻译用户实际可见的内容,您将做​​得最好。