0

スクリプトに問題があります。数年前に Uni で割り当て用に作成されたもので、当時は正常に機能していましたが、この通知を受け取りませんでした。現在、すべてのフィールドで「通知: 未定義のインデックス」が表示されています。

変数の宣言に失敗したことと関係があると読んだことがありますが、 isset を訴える必要がありますか? しかし、それをコードに実装する方法はまだわかりません。

コードは次のとおりです。

<?php
require 'server.php';

$results = $dbh->prepare('SELECT * FROM details WHERE id = :id');
$results->execute(array(
     ':id' => $_GET['id'],
     ));

if (isset($_POST['submit'] )) header("Location: template/header.php"); {
    $update = $dbh->prepare('UPDATE details SET firstname = :firstname, surname = :surname, houseno = :houseno, street = :street, town= :town,
           county = :county, postcode = :postcode,  mobile = :mobile, nickname = :nickname, website = :website,
           homephone = :homephone WHERE id = :id');
    $update->execute(array(
        ':id' => $_POST['id'],
        ':firstname' => $_POST['firstname'],
        ':surname' => $_POST['surname'],
        ':houseno' => $_POST['houseno'],
        ':street' => $_POST['street'],
        ':town' => $_POST['town'],
        ':county' => $_POST['county'],
        ':postcode' => $_POST['postcode'],
        ':mobile' => $_POST['mobile'],
        ':nickname' => $_POST['nickname'],
        ':website' => $_POST['website'],
        ':homephone' => $_POST['homephone'],    
    ));

    $row = $results->fetch();
}

require 'template/header.php';
?>

問題を解決する方法についてのアイデアはありますか? 画像はこちら:

https://dl.dropbox.com/u/10062971/phpnotice.JPG

4

2 に答える 2

0

コードは意味をなさない:が設定されている場合、変数$_POST['submit'] )を使用するコードが設定されていない場合に実行されるように、別のページにリダイレクトします。POST$_POST['submit'] )

これはphpにどのように見えるかです:

if (isset($_POST['submit'] ))
{
   header("Location: template/header.php");
}

$update = $dbh->prepare('UPDATE details SET firstname = :firstname, surname = :surname, houseno = :houseno, street = :street, town= :town,
       county = :county, postcode = :postcode,  mobile = :mobile, nickname = :nickname, website = :website,
       homephone = :homephone WHERE id = :id');
$update->execute(array(
    ':id' => $_POST['id'],
    ':firstname' => $_POST['firstname'],
    ':surname' => $_POST['surname'],
    ':houseno' => $_POST['houseno'],
    ':street' => $_POST['street'],
    ':town' => $_POST['town'],
    ':county' => $_POST['county'],
    ':postcode' => $_POST['postcode'],
    ':mobile' => $_POST['mobile'],
    ':nickname' => $_POST['nickname'],
    ':website' => $_POST['website'],
    ':homephone' => $_POST['homephone'],    
));

$row = $results->fetch();

いったい何のためのheader呼びかけなのだろうか。

ちなみに、おそらく次のようなものが必要です。

require 'server.php';

if (isset($_POST['submit'] ))
{
  $update = $dbh->prepare('UPDATE details SET firstname = :firstname, surname = :surname, houseno = :houseno, street = :street, town= :town,
       county = :county, postcode = :postcode,  mobile = :mobile, nickname = :nickname, website = :website,
       homephone = :homephone WHERE id = :id');
  $update->execute(array(
    ':id' => $_POST['id'],
    ':firstname' => $_POST['firstname'],
    ':surname' => $_POST['surname'],
    ':houseno' => $_POST['houseno'],
    ':street' => $_POST['street'],
    ':town' => $_POST['town'],
    ':county' => $_POST['county'],
    ':postcode' => $_POST['postcode'],
    ':mobile' => $_POST['mobile'],
    ':nickname' => $_POST['nickname'],
    ':website' => $_POST['website'],
    ':homephone' => $_POST['homephone'],    
  ));

  // show message or something
}
else
{
  // normal get request, nothing posted
  $results = $dbh->prepare('SELECT * FROM details WHERE id = :id');
  $results->execute(array(':id' => $_GET['id'],
     ));
  $row = $results->fetch();

  // show rest of the page
}
于 2012-10-06T17:27:32.713 に答える
0

またはissetでインデックスを使用する前に、それらが存在するかどうかを確認するために使用します。 $_POST$_GET

if (isset($_GET['id'])) {
  $results->execute(array(
    ':id' => $_GET['id'],
  ));
}

...

':id' => isset($_POST['id']) ? $_POST['id'] : '',
':firstname' => isset($_POST['firstname']) ? $_POST['firstname'] : '',
// and so on
...
于 2012-10-06T18:15:26.843 に答える