0

私は完全な初心者のためにPHPでPHPを学んでいます。第5章のチュートリアルに続いて、いくつかの奇妙なエラーが発生します。データベースにエントリを出力しようとしています。ページをロードすると、"Notice: Undefined index: title in /home/craig/public_html/PHP tutorials/simple blog/index.php on line 42"

そしてまた:

Notice: Undefined index: entry in /home/craig/public_html/PHP tutorials/simple blog/index.php on line 43

ここで、var_dump($ e)を実行すると、次のように出力されます。

array(1) { [0]=> array(4) { ["title"]=> string(13) "I like Cheese" [0]=> string(13) "I like Cheese" ["entry"]=> string(17) "this is some text" [1]=> string(17) "this is some text" } }

私が見る限り、インデックス「title」と「entry」があり、dbからの情報がプルされています。では、なぜこれらの未定義のインデックスエラーが発生するのですか?

必要に応じてindex.phpのコードを次に示します。functions.phpも貼り付けることができますが、正常に機能していることがわかる限りです。

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<?php 
include_once 'inc/functions.inc.php';
include_once 'inc/db.inc.php';

        //open a database connection 
        $db = new PDO(DB_INFO, DB_USER, DB_PASS);

        //Determine if an entry ID was passed in the URL
        $id = (isset($_GET['id'])) ? (int) $_GET['id'] : NULL;

        // load the entries

    $e = retrieveEntries($db, $id);

    //get the fulldisp flag and remove it from the array
    $fulldisp = array_pop($e);

    //saniteze the entry data
    $e = sanitizeData($e);

    ?>
<head>
<meta http-equiv="Content-Type"
content="text/html;charset=utf-8" />
<link rel="stylesheet" href="css/default.css" type="text/css" />
<title> Simple Blog </title>
</head>
<body>
<h1> Simple Blog Application </h1>
<div id="entries">
    <?php 

    // if the full display flag is set, show the entry
    if($fulldisp==1){
    var_dump($e);
    ?>

    <h2> <?php echo $e['title'] ?></h2>
    <p> <?php echo $e['entry']?></p>
    <p class="backlink">
        <a href="./">Back to Latest Entries</a>
        </p>    

        <?php  
    }//end if statement

    //if the full display flag is 0, format linked entry titles 
    else{
        //loop through each entry
        foreach($e as $entry){
        ?>

        <p> <a href="?id=<?php echo $entry['id']?>">
                <?php echo $entry['title'] ?>
        </a>
        </p>
    <?php   
        } //end the foreach loop
    } // end the else
    ?>  




    <p class="backlink">
        <a href="admin.php">Post a new Entry</a>
        </p>
        </div>
    </body>
</html>

表示する項目が1つある場合でも、ループを実行して多数を出力する必要がある場合でも、これらのエラーが発生します。助けてくれてありがとう!

4

1 に答える 1

0

これは、$eが多次元配列であるためです。これは配列の配列です。foreachループでは、$entryは多次元配列$eの各子配列を参照します。条件ステートメントの最初のブランチでは、$ eの最初の配列を実際に参照したいときに、多次元配列$eを参照しています。

代わりにこれを試してください:

if($fulldisp==1){


   $entry=$e[0]; //$entry is now referencing the first entry in $e rather than $e itself
    ?>

    <h2> <?php echo $entry['title'] ?></h2>
    <p> <?php echo $entry['entry']?></p>
    <p class="backlink">
        <a href="./">Back to Latest Entries</a>
        </p>    

        <?php  
}
于 2013-03-10T22:32:30.850 に答える