タイトルのエラーは未定義の配列を参照しようとすると起こってしまいます。SyntaxエラーやWarningに比べればほっといても動いてくれることもあり、致命的ではありませんがエラーは一つでも消しておきたいのが人情というもの。 よくやってしまいがちなのは
<?php if ($_POST['mode'] == 'save' : ?>
何が問題かというと例えば送信というアクションを行ってから値を受け取るフォーム入力だった場合に 一回目にアクセスした時には値が入っていないじゃないか!!ということです。 きちんと二回目以降の処理と切り分けてあげればよいのですが 次のようにisset関数を使うとほとんど変更を加えずに簡単に修正できます。
<?php if (isset($_POST['mode'] && $_POST['mode'] == 'save') : ?>
issetは関数名から予想できるように変数がセットされていてnull値でないかを確認します。