※ ChatGPTを利用し、要約された質問です(原文:「未定義の変数」の定義について(PHP))
未定義の変数の定義について(PHP)
このQ&Aのポイント
「未定義の変数」の表示を消す方法についてご教示ください。
下記のコードで「未定義の変数」というエラーが表示されます。このエラーを取り除く方法を教えてください。
PHPのコードで「Notice: Undefined index: page」というエラーが表示されます。このエラーを解消する方法を教えてください。
●質問の主旨
添付画像の左端に
Notice: Undefined index: page in C:\xampp\htdocs\shop\index.php on line 3
ということで、未定義の変数ということでおしらせが出ています。
この表示を消すためにはどうすれば良いでしょうか?
ご存知のかた、ご教示願います。
●質問の補足
下記のコードで言えば、
$page =$_REQUEST['page'];
のうち、pageが定義されていないことが、表示の原因である気がします。
しかし、どこをどう書き換えれば、表示が消えるのかが分かりません。
●参考文献
たにぐちまこと「よくわかるPHPの教科書」(P210)の
index.phpファイル
●開発環境
windows8
xammp1.8.1
●コード
<?php
require('dbconnect.php');
$page =$_REQUEST['page'];
if ($page == '') {
$page = 1;
}
$page = max($page, 1);
//最終ページを取得する
$sql = 'SELECT COUNT(*) AS cnt FROM my_items';
$recordSet = mysql_query($sql);
$table = mysql_fetch_assoc($recordSet);
$maxPage = ceil($table['cnt'] / 5);
$page = min($page, $maxPage);
$start = ($page - 1) * 5;
$recordSet = mysql_query('SELECT m.name, i. * FROM makers m, my_items i WHERE m.id=i.maker_id ORDER BY id DESC LIMIT ' . $start .',5');
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>Webシステムをつくる</title>
</head>
<body>
<div id="wrap">
<div id="head">
<h1>トップページ</h1>
</div>
<div id="content">
<p style="margin-top: 20px">
<table width="100%">
<tr>
<th scope="col">ID</th>
<th scope="col">メーカー</th>
<th scope="col">商品名</th>
<th scope="col">価格</th>
</tr>
<?php
while ($table = mysql_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>
</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>
</p>
</div>
<div id="foot">
<p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p>
</div>
</div>
</body>
</html>
お礼
agunuzさま いつもご回答ありがとうございます! $page =$_REQUEST['page']; を $page = isset($_GET['page']) ? intval($_GET['page']) : 1; に置き換えたら "Notice"が消えました。アドバイス助かります。 またPDOについてよくわからないので、 自分で調べてみます。