0

运行代码时,我不断收到此通知:

Notice: Undefined offset: 1 in C:\Users\Walid\xampp\htdocs\Inl3\Filmer-PHP.php on line 83

它在这条线上抱怨:

echo '<li>'.'<a href="Filmer-PHP.php?name=' .$lineSplit[0].  '">'.$lineSplit[0].'<span>'.$lineSplit[1].'</span>'.'</a>'.'</li>';

我认为它在 $lineSplit[1] 上抱怨。我真的不知道为什么它会抱怨,尽管代码工作正常,因为它是一个通知。但它出现在我的屏幕上,我不知道如何解决它。

完整代码:

<!DOCTYPE html>

<html>

<head>
<title>Inlämning3</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="jQuery.js" >
</script>
<script type="text/javascript" src="valideraFilmer.js" >
</script>


</head>

<body>

<?php
// Skriva film och info till en textfil
if( isset ($_POST['name'])){
    $name = $_POST['name'];
    $grade = $_POST['options'];
    $link = $_POST['link'];
    $pic = $_POST['pic'];
    $story = $_POST['story'];

    $myFile = "filmer.txt";
    $handle = fopen($myFile, 'a');

    if(!empty($name)){
        fwrite($handle, $name. ";");
        fwrite($handle, $grade. ";");
        fwrite($handle, $link. ";");
        fwrite($handle, $pic. ";");
        fwrite($handle, $story. "\n");
        fclose($handle);
    }
}
?>

<div id="page">
    <?php
        include("header.php");
    ?>
    <div id="leftbar">
        <form id="form" method="post" action="Filmer-PHP.php" >
            <fieldset>
                <legend>Lägg till en film:</legend>
                Titel:
                <br><input type="text" name="name" id="name"><br>
                Betyg:
                <br><select id="options" name="options">
                    <option value="0">Välj betyg här...</option>
                    <option value="*"> *</option>
                    <option value="**"> **</option>
                    <option value="***"> ***</option>
                    <option value="****"> ****</option>
                    <option value="*****"> *****</option>                       
                </select>
                <br>
                Länk till imdb:
                <br><input type="text" name="link" id="link"><br>
                Länk till bild:
                <br><input type="text" name="pic" id="pic"><br>
                Filmens handling:
                <br><textArea cols="20" rows="3" name="story" id="story"></textarea><br>
                <br><input type="submit" name="button" value="Spara film" id="button">
            </fieldset>
        </form>
    </div>
    <div id="rightbar">
        <h2>Filmer</h2>

        <?php
        // Läsa av och visa titel och betyg
            $readin = file('filmer.txt');
            $ul = '<ul id="films">';
            echo $ul;
            foreach($readin as $fName){
                $lineSplit = explode(";", $fName);
                echo '<li>'.'<a href="Filmer-PHP.php?name=' .$lineSplit[0]. '">'.$lineSplit[0].'<span>'.$lineSplit[1].'</span>'.'</a>'.'</li>';
            }
        ?>

        <?php
        // Läsa av och visa detaljerad info om filmer
            if(isset($_GET['name'])){
                $name = $_GET['name'];
                $readin = file('filmer.txt');
                $lineSplit = explode(";", $name);
                echo $name;
            }
        ?>

    </div>
        <?php
            include("footer.php");
        ?>
</div>

</body>

</html>
4

3 回答 3

1

您正在尝试从您的阵列中访问一个不存在的密钥。

我有两种解决方案:

  1. 查看您的值是否可用于issetarray_key_exists
  2. 用于error_reporting(E_ALL ^ E_NOTICE)隐藏通知
于 2013-03-12T17:12:16.257 回答
0

您的文件中可能是一个空行,您可以通过替换以下代码来避免通知:

'<span>'.$lineSplit[1].'</span>'

对于这个:

'<span>'.(isset($lineSplit[1])?$lineSplit[1]:'').'</span>'

那是在实际使用它之前检查你的第二个数组元素是否存在。

于 2013-03-12T17:06:06.633 回答
0
            $lineSplit = explode(";", $fName, 2);
            if ($lineSplit == FALSE) { // Or !$lineSplit
            } elseif (count($lineSplit) != 2) {
            } else {
                echo '<li>'.'<a href="Filmer-PHP.php?name=' .$lineSplit[0]
                     . '">'.$lineSplit[0].'<span>'.$lineSplit[1]
                     .'</span>'.'</a>'.'</li>';
            }
于 2013-03-12T17:15:31.017 回答