2013-08-03 70 views
0

我經常收到「通知:未定義指數:......」我想我知道爲什麼我只是不知道如何解決它。我有一個html表單頁面,其中包含所有僅在需要時才向用戶顯示消息的「if」語句。我將這個html頁面包含在一個具有$ _SESSION變量的控制器php頁面上,該變量從我的後端php腳本獲取變量,該腳本處理數據庫操作。修復未定義指數

因此,爲了使其更容易明白這裏是我的邏輯爲我建立的頁面流量:HTML(表單頁面將數據發送到)---> PHP(用於處理數據庫等頁面..然後重定向用戶)---> PHP(控制器頁面顯示的數據給用戶,html頁面被包括在這裏)---> HTML(與原來的表格頁面現在顯示正確的數據到用戶)

但每當如果要不然在html中的語句沒有實現我得到一個關於該變量的未定義索引的通知...下面是我的html和控制器的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'; 
?> 

回答

0

你得到Notice: Undefined index:當你訪問一個未設置陣列的關鍵。

考慮你的頭腳本,我想這就是你得到的通知。

你可以儘量避免這樣的:

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

這裏如果moznost沒有設置,你會得到-1


只是一個側面說明:
這不是一個很好的做法,英國和斯洛文尼亞組合(如果我猜對)。
如果您保留所有英文代碼,只會翻譯用戶實際可見的內容,您會做得最好。

+0

呀它斯洛文尼亞,感謝您的回答。我得到了我的控制器php是的通知。小心解釋爲什麼?我的變量是在我的主php中設置的,它將數據添加到$ moznost中......或者至少我認爲是這樣,無論如何,你對「set」有什麼意思? – Matic

+0

那麼,如果你的$ _SESSION中沒有'moznost'鍵,你會得到這個通知。您可以嘗試通過在代碼中添加少量「echo」來確定通知的確切位置。例如,你可以在'包含'之後在'SessionRead'之後放置'echo';'/ html/gozd.html';' - 這樣,你會看到*發生了通知的地方。 – MightyPork

+0

其實它可以發生在你的任何數組中,所以你還應該檢查'$ i ['napadalec']'和類似的行爲是不是你注意到的原因。 – MightyPork