dポイントプレゼントキャンペーン実施中!

わからないところがあるので教えて下さい。
(コード)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
w3.org/TR/xhtmll/DTD/xhtmll- transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>PHP入門</title>
</head>

<body>
<?php
require('dbconnect.php');

$page = $_REQUEST['page'];
if($page =='') {
$page =1;
}
$page = max($page, 1);

//最終ページを取得する
$sql ='SELECT COUNT(*) AS cnt FROM my_items';
$recordSet = mysqli_query($db, $sql);
$table = mysqli_fetch_assoc($recordSet);
$maxPage = ceil($table['cnt'] /5);
$page = min($page, $maxPage);
$start = ($page - 1) * 5;
$recordSet = mysqli_query($db, 'SELECT m.name, i.* FROM makers m,
my_items i WHERE m.id=i.maker_id ORDER BY id DESC LIMIT ' . $start . ',5');
?>

<p><a href="input.php">新しい商品を登録する。</a></p>
<table width="100%">
<tr>
<th scope="col">ID</th>
<th scope="col">メーカー</th>
<th scope="col">商品名</th>
<th scope="col">価格</th>
<th scope="col">編集・削除</th>
</tr>
<?php
while($table = mysqli_fetch_assoc($recordSet)) {
?>
<tr>
<td><?php print(htmlspecialchars($table['id'])); ?></td>
<td><?php print(htmlspecialchars($table['name'])); ?></td>
<td><?php print(htmlspecialchars($table['item_name'])); ?></td>
<td><?php print(htmlspecialchars($table['price'])); ?></td>
<td><a href="update.php?id=<?php print(htmlspecialchars($table['id'])); ?>">編集</a>
<a href="delete.php?id=<?php print(htmlspecialchars($table['id'])); ?>" onclick="return confirm('削除してもよろしいですか?');">削除</a>
</td>
</tr>
<?php
}
?>
</table>
<ul class="paging">
<?php
if($page > 1) {
?>
<li><a href="index.php?page=<?php print($page - 1); ?>">前のページへ
</a></li>
<?php
} else {
?>
<li>前のページへ</li>
<?php
}
?>
<?php
if($page < $maxPage) {
?>
<li><a href="index.php?page=<?php print($page + 1); ?>">次のページへ
</a></li>
<?php
} else {
?>
<li>次のページへ</li>
<?php
}
?>
</ul>
</body>

</html>

参考書?はよくわかるPHPの教科書5.5対応なのですが、一番初めにこのファイルを開くと
Notice: Undefined index: page in C:\xampp\htdocs\shop\index.php on line 14っとエラー?が出ます。
次のページ、前のページを押すとエラー?は消えるのですが、とっても気になります。
なるべくなら、エラーを非表示にせずにプログラム内で問題を解決したいのですが・・・
初心者なのでどうして良いかわかりません。
出来れば、とってもわかりやすい解決を出来ればお願いしたいです。(馬鹿なので・・・)
よろしくお願いします。

A 回答 (3件)

最初のページのURLには


「?page=数字」というクエリストリングがないために、
$_REQUEST['page']と書くと
Notice: Undefined indexというエラーが出ます。

$page = $_REQUEST['page'];

$page = isset($_REQUEST['page']) ? $_REQUEST['page'] : "";
と置き換えればエラーは消えます。

三項演算子を使っています。
A ? B : C
と書いたとき、AがtrueならB, falseならCという処理となります。

isset関数で配列インデックスが定義済かどうか確認し、
定義済みならその値を、未定義なら空文字""を$pageに代入しています。

詳しくは下記を参照ください。
http://qiita.com/mpyw/items/2f9955db1c02eeef43ea …
    • good
    • 0
この回答へのお礼

わかりやすい解説ありがとうございます。

お礼日時:2014/10/14 12:43

>Notice: Undefined index: page in C:\xampp\htdocs\shop\index.php on line 14



Noticeは「たいしたことないけど一応気にしておいて」というエラーです
「on line 14」とあるとおりプログラムの14行目でエラーが発生しています。

おそらく14行目は
>$page = $_REQUEST['page'];
だと思います。

これは、「$_REQUEST['page']」が存在しないので、存在しないデータを
$pageに代入しようとしているために発生しています。

考え方は2つ
(1)Noticeは気にする必要がないので、あえて無視する
具体的には「<?php」の直後の行に、以下を書いてNOTICEを表示させない
error_reporting(E_ALL & ~E_NOTICE);

(2)エラーになっている個所を修正する
$page = isset($_REQUEST['page'])?$_REQUEST['page']:"";

のどちらかでよいかと思います。
    • good
    • 0

馬鹿でも初心者でも検索くらいできるよね?



Notice: Undefined index:

これをgoogleに入れただけで一番上にそのままの解決法が出てくるんだけど。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!