0

私のブログでは、ブログ投稿のタイトルを作成し、クリックしてその投稿だけを含む新しいページに移動できるようにしたいと考えています。エラーが発生しますが、試してみると:

注意: 未定義のインデックス: 264 行目の C:\wamp\www\blog_test\index.php の post_id コール スタック #TimeMemoryFunctionLocation 10.0009322712{main}( ..\index.php:0 ">Fanboy-ism

これが264行目です:

<h3><a href="post.php?post_id=<?php echo $row_getDisplay['post_id']; ?>"><?php echo $row_getDisplay['title']; ?></a></h3>

誰かがそれを修正する方法を知っていますか、それは私を混乱させています。お願いします && ありがとう

編集:

サーバー動作のコードは次のとおりです。

$maxRows_getArchives = 10;
$pageNum_getArchives = 0;
if (isset($_GET['pageNum_getArchives'])) {
  $pageNum_getArchives = $_GET['pageNum_getArchives'];
}
$startRow_getArchives = $pageNum_getArchives * $maxRows_getArchives;

mysql_select_db($database_blog, $blog);
$query_getArchives = "SELECT DISTINCT DATE_FORMAT(news.updated, '%M %Y') AS archive, DATE_FORMAT(news.updated, '%Y-%m') AS link FROM news ORDER BY news.updated DESC";
$query_limit_getArchives = sprintf("%s LIMIT %d, %d", $query_getArchives, $startRow_getArchives, $maxRows_getArchives);
$getArchives = mysql_query($query_limit_getArchives, $blog) or die(mysql_error());
$row_getArchives = mysql_fetch_assoc($getArchives);

if (isset($_GET['totalRows_getArchives'])) {
  $totalRows_getArchives = $_GET['totalRows_getArchives'];
} else {
  $all_getArchives = mysql_query($query_getArchives);
  $totalRows_getArchives = mysql_num_rows($all_getArchives);
}
$totalPages_getArchives = ceil($totalRows_getArchives/$maxRows_getArchives)-1;

mysql_select_db($database_blog, $blog);
$query_getRecent = "SELECT news.post_id, news.title FROM news ORDER BY news.post_id DESC LIMIT 10";
$getRecent = mysql_query($query_getRecent, $blog) or die(mysql_error());
$row_getRecent = mysql_fetch_assoc($getRecent);
$totalRows_getRecent = mysql_num_rows($getRecent);

$maxRows_getDisplay = 1;
$pageNum_getDisplay = 0;
if (isset($_GET['pageNum_getDisplay'])) {
  $pageNum_getDisplay = $_GET['pageNum_getDisplay'];
}
$startRow_getDisplay = $pageNum_getDisplay * $maxRows_getDisplay;

mysql_select_db($database_blog, $blog);
$query_getDisplay = "SELECT  news.post_id, news.title, news.pre,  DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted FROM news ORDER BY news.updated DESC";
$query_limit_getDisplay = sprintf("%s LIMIT %d, %d", $query_getDisplay, $startRow_getDisplay, $maxRows_getDisplay);
$getDisplay = mysql_query($query_limit_getDisplay, $blog) or die(mysql_error());
$row_getDisplay = mysql_fetch_assoc($getDisplay);

if (isset($_GET['totalRows_getDisplay'])) {
  $totalRows_getDisplay = $_GET['totalRows_getDisplay'];
} else {
  $all_getDisplay = mysql_query($query_getDisplay);
  $totalRows_getDisplay = mysql_num_rows($all_getDisplay);
}
$totalPages_getDisplay = ceil($totalRows_getDisplay/$maxRows_getDisplay)-1;

mysql_select_db($database_blog, $blog);
$query_getPosts = "SELECT post_id, title, updated FROM news ORDER BY updated DESC";
$getPosts = mysql_query($query_getPosts, $blog) or die(mysql_error());
$row_getPosts = mysql_fetch_assoc($getPosts);
$totalRows_getPosts = mysql_num_rows($getPosts);

$queryString_getDisplay = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_getDisplay") == false && 
        stristr($param, "totalRows_getDisplay") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_getDisplay = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_getDisplay = sprintf("&totalRows_getDisplay=%d%s", $totalRows_getDisplay, $queryString_getDisplay);

$queryString_getArchives = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_getArchives") == false && 
        stristr($param, "totalRows_getArchives") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_getArchives = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_getArchives = sprintf("&totalRows_getArchives=%d%s", $totalRows_getArchives, $queryString_getArchives);



$var1_getDisplay2 = "-1";
if (isset($_GET['archive'])) {
  $var1_getDisplay2 = $_GET['archive'];
  $query_getDisplay = sprintf("SELECT news.title, news.blog_entry, DATE_FORMAT(news.updated, '%%M %%e, %%Y'), news. AS formatted FROM news WHERE DATE_FORMAT(news.updated, '%%Y-%%m') = %s ORDER BY news.updated DESC", GetSQLValueString($var1_getDisplay2, "text"));
} elseif (isset($_GET['post_id'])) {
  $var2_getDisplay3 = $_GET['post_id'];
  $query_getDisplay = sprintf("SELECT news.title, news.blog_entry, DATE_FORMAT(news.updated, '%%M %%e, %%Y') AS formatted FROM news WHERE news.post_id = %s", GetSQLValueString($var2_getDisplay3, "int"));
} else {
  $query_getDisplay = "SELECT news.title, news.blog_entry, DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted FROM news ORDER BY news.updated DESC LIMIT ".$pageNum_getDisplay.", 5";
}
$getDisplay = mysql_query($query_getDisplay, $blog) or die(mysql_error());
$row_getDisplay = mysql_fetch_assoc($getDisplay);
$totalRows_getDisplay = mysql_num_rows($getDisplay);
?>
4

2 に答える 2

1

回答全体を編集しましたが、

クエリで post_id を選択しない: クエリを次のように変更します。

if (isset($_GET['archive'])) {
  $var1_getDisplay2 = $_GET['archive'];
  $query_getDisplay = sprintf("SELECT news.post_id, news.title, news.blog_entry, DATE_FORMAT(news.updated, '%%M %%e, %%Y'), news. AS formatted FROM news WHERE DATE_FORMAT(news.updated, '%%Y-%%m') = %s ORDER BY news.updated DESC", GetSQLValueString($var1_getDisplay2, "text"));
} elseif (isset($_GET['post_id'])) {
  $var2_getDisplay3 = $_GET['post_id'];
  $query_getDisplay = sprintf("SELECT news.post_id, news.title, news.blog_entry, DATE_FORMAT(news.updated, '%%M %%e, %%Y') AS formatted FROM news WHERE news.post_id = %s", GetSQLValueString($var2_getDisplay3, "int"));
} else {
  $query_getDisplay = "SELECT news.post_id, news.title, news.blog_entry, DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted FROM news ORDER BY news.updated DESC LIMIT ".$pageNum_getDisplay.", 5";
}

これにより、コード内でさらに参照するために post_id も選択されます。これにより、おそらくすべての問題が解決されます。(データベースの外観に応じて)

データベースから選択するための news.post_id を追加しました。これが解決策だと思います。

于 2013-01-14T12:17:25.477 に答える
0

この時点で変数がまだ設定されていないのは奇妙に思えます。

ただし、変数が設定されているかどうかを確認し、設定されていない場合はエコーできます。

例:

echo (isset($row_getDisplay['post_id']) ? $row_getDisplay['post_id'] : '');

これをコードに実装する方法は次のとおりです。

<h3><a href="post.php?post_id=<?php echo (isset($row_getDisplay['post_id']) ? $row_getDisplay['post_id'] : ''); ?>"><?php echo (isset($row_getDisplay['title']) ? $row_getDisplay['title'] : ''); ?></a></h3>
于 2013-01-14T12:17:58.350 に答える