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

存在しない配列からキーにアクセスしようとしています。

私には2つの解決策があります:

  1. 値がissetまたはarray_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>'

これは、実際に使用する前に、2番目の配列要素の存在を確認することです。

于 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 に答える