2013-04-19 3 views
-1

У меня проблема с PHP-кодом. У меня есть код из электронной книги, но когда я пытался запустить систему, это приводило к некоторым ошибкам. Я исправил некоторые ошибки, указав правильные кавычки, но теперь я застрял с некоторыми другими ошибками.Неопределенный индекс: id в php

я был бы более счастлив, если кто-то помогает мне со следующей ошибкой:

Извещение: Undefined индекс: идентификатор в C: \ XAMPP \ HTDOCS \ аукцион \ index.php в строке 4

Это мой код index.php:

<?php 
require("config.php"); 
require("functions.php"); 
$validid = pf_validate_number($_GET['id'], "value", $config_basedir); 
require("header.php"); 
if($validid == 0) { 
$sql = "SELECT items.* FROM items WHERE dateends > NOW()"; 
} 
else { 
$sql = "SELECT * FROM items WHERE dateends > NOW() 
AND cat_id = " . $validid . ";"; 
} 
$result = mysql_query($sql); 
$numrows = mysql_num_rows($result); 

echo "<h1>Items available</h1>"; 
echo "<table cellpadding='5'>"; 
echo "<tr>"; 
echo "<th>Image</th>"; 
echo "<th>Item</th>"; 
echo "<th>Bids</th>"; 
echo "<th>Price</th>"; 
echo "</tr>"; 

if($numrows == 0) { 
echo "<tr><td colspan=4>No items!</td></tr>"; 
} 

else { 
while($row = mysql_fetch_assoc($result)) { 
$imagesql = "SELECT * FROM images WHERE 
item_id = " . $row['id'] . " LIMIT 1"; 
$imageresult = mysql_query($imagesql); 
$imagenumrows = mysql_num_rows($imageresult); 
echo "<tr>"; 
if($imagenumrows == 0) { 
echo "<td>No image</td>"; 
} 
else { 
$imagerow = mysql_fetch_assoc($imageresult); 
echo "<td><img src='./images/". $imagerow['name'] . "' width='100'></td>"; 
} 
echo "<td>"; 
echo "<a href='itemdetails.php?id=" 
. $row['id'] . "'>" . $row['name'] . "</a>"; 
if($_SESSION['USERID'] == $row['user_id']) { 
echo " - [<a href='edititem.php?id=" 
. $row['id'] . "'>edit</a>]"; 
} 
echo "</td>"; 

$bidsql = "SELECT item_id, MAX(amount) AS 
highestbid, COUNT(id) AS numberofbids FROM bids 
WHERE item_id=" . $row['id'] . " GROUP BY item_id;"; 
$bidresult = mysql_query($bidsql); 
$bidrow = mysql_fetch_assoc($bidresult); 
$bidnumrows = mysql_num_rows($bidresult); 
echo "<td>"; 
if($bidnumrows == 0) { 
echo "0"; 
} 
else { 
echo $bidrow['numberofbids'] . "</td>"; 
} 
echo "<td>" . $config_currency; 
if($bidnumrows == 0) { 
echo sprintf('%.2f', $row['startingprice']); 
} 
else { 
echo sprintf('%.2f', $bidrow['highestbid']); 
} 

echo "</td>"; 
echo "<td>" . date("D jS F Y g.iA", 
strtotime($row['dateends'])) . "</td>"; 
echo "</tr>"; 
} 
} 
echo "</table>"; 
require("footer.php"); 
?> 

Некоторые из вас спрашивали, где идентификатор откуда. Я понятия не имею, но я искал его в других файлах, и вот они:

bar.php:

<?php 
require("header.php"); 
$catsql = "SELECT * FROM categories ORDER BY category ASC;"; 
$catresult = mysql_query($catsql); 
echo "<h1>Categories</h1>"; 
echo "<ul>"; 
echo "<li><a href='index.php'>View All</a></li>"; 
while($catrow = mysql_fetch_assoc($catresult)) { 
echo "<li><a href='index.php?id=". $catrow['id'] . "'>" . $catrow['category']. "</a>     </li>"; 
    } 
echo "</ul>"; 

?> 

header.php:

<?php 
session_start(); 
require("config.php"); 
$db = mysql_connect($dbhost, $dbuser, $dbpassword); 
mysql_select_db($dbdatabase, $db); 
?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title><?php echo $config_forumsname; ?></title> 
<link rel="stylesheet" href="stylesheet.css" type="text/css" /> 
</head> 
<body> 
<div id="header"> 
<h1>BidTastic Auctions</h1> 
<div id="menu"> 
<a href="index.php">Home</a> 
<?php 
if(isset($_SESSION['USERNAME']) == TRUE) { 
echo "<a href='logout.php'>Logout</a>"; 
} 
else { 
echo "<a href='login.php'>Login</a>"; 
} 
?> 
<a href="newitem.php">New Item</a> 
</div> 
<div id="container"> 
<div id="bar"> 
<?php require("bar.php"); ?> 
</div> 
<div id="main"> 

itemdetails.php

<?php 
session_start(); 
include(“config.php”); 
include(“functions.php”); 
$db = mysql_connect($dbhost, $dbuser, $dbpassword); 
mysql_select_db($dbdatabase, $db); 
$validid = pf_validate_number($_GET[‘id’], “redirect”, $config_basedir); 

if($_POST[‘submit’]) { 
if(is_numeric($_POST[‘bid’]) == FALSE) { 
header(“Location: “ . $config_basedir 
. “itemdetails.php?id=” . $validid . “&error=letter”); 
} 

$theitemsql = “SELECT * FROM items WHERE id = “ . $validid . “;”; 
$theitemresult = mysql_query($theitemsql); 
$theitemrow = mysql_fetch_assoc($theitemresult); 
$checkbidsql = “SELECT item_id, max(amount) AS 
highestbid, count(id) AS number_of_bids FROM 
bids WHERE item_id=” . $validid . “ GROUP BY item_id;”; 
$checkbidresult = mysql_query($checkbidsql); 
$checkbidnumrows = mysql_num_rows($checkbidresult); 

if($checkbidnumrows == 0) { 
if($theitemrow[‘startingprice’] > $_POST[‘bid’]) { 
header(“Location: “ . $config_basedir 
. “itemdetails.php?id=” . $validid . “&error=lowprice#bidbox”); 
} 
} 

else { 
$checkbidrow = mysql_fetch_assoc($checkbidresult); 
if($checkbidrow[‘highestbid’] > $_POST[‘bid’]) { 
header(“Location: “ . $config_basedir . “itemdetails.php?id=” . 
$validid . “&error=lowprice#bidbox”); 
} 
} 

$inssql = “INSERT INTO bids(item_id, amount, user_id) VALUES(“ 
. $validid 
. “, “ . $_POST[‘bid’] 
. “, “ . $_SESSION[‘USERID’] 
. “);”; 
mysql_query($inssql); 

header(“Location: “ . $config_basedir 
. “itemdetails.php?id=” . $validid); 
} 
else { 



$validid = pf_validate_number($_GET[‘id’], “redirect”, 
$config_basedir); 
require(“header.php”); 
$itemsql = “SELECT UNIX_TIMESTAMP(dateends) AS dateepoch, 
items.* FROM items WHERE id = “ . $validid . “;”; 
$itemresult = mysql_query($itemsql); 
$itemrow = mysql_fetch_assoc($itemresult); 
$nowepoch = mktime(); 
$rowepoch = $itemrow[‘dateepoch’]; 
if($rowepoch > $nowepoch) { 
$VALIDAUCTION = 1; 
} 
echo “<h2>” . $itemrow[‘name’] . “</h2>”; 

$imagesql = “SELECT * FROM images WHERE item_id = “ . $validid . “;”; 
$imageresult = mysql_query($imagesql); 
$imagenumrows = mysql_num_rows($imageresult); 

$bidsql = “SELECT item_id, MAX(amount) AS highestbid, 
COUNT(id) AS number_of_bids FROM bids WHERE item_id=” 
. $validid . “ GROUP BY item_id;”; 
$bidresult = mysql_query($bidsql); 
$bidnumrows = mysql_num_rows($bidresult); 

echo “<p>”; 
if($bidnumrows == 0) { 
echo “<strong>This item has had no bids</strong> 
- <strong>Starting Price</strong>: “ . $config_currency 
. sprintf(‘%.2f’, $itemrow[‘startingprice’]); 
} 
else { 
$bidrow = mysql_fetch_assoc($bidresult); 

echo “<strong>Number Of Bids</strong>: “ 
. $bidrow[‘number_of_bids’] . “ 
- <strong>Current Price</strong>: “ . $config_currency 
. sprintf(‘%.2f’, $bidrow[‘highestbid’]); 
} 

echo “ - <strong>Auction ends</strong>: “ 
. date(“D jS F Y g.iA”, $rowepoch); 

echo “</p>”; 
if($imagenumrows == 0) { 
echo “No images.”; 
} 
else { 
while($imagerow = mysql_fetch_assoc($imageresult)) { 
echo “<img src=’./images/” . $imagerow[‘name’] .”’ width=’200’>”; 
} 
} 

echo “<p>” . nl2br($itemrow[‘description’]) . “</p>”; 

echo “<a name=’bidbox’>”; 
echo “<h2>Bid for this item</h2>”; 

if(isset($_SESSION[‘USERNAME’]) == FALSE) { 
echo “To bid, you need to log in. Login 
<a href=’login.php?id=” . $validid . “&ref=addbid’>here</a>.”; 
} 

else { 
if($VALIDAUCTION == 1) { 
echo “Enter the bid amount into the box below.”; 
echo “<p>”; 
switch($_GET[‘error’]) { 
case “lowprice”: 
echo “The bid entered is too low. 
Please enter another price.”; 
break; 
case “letter”: 
echo “The value entered is not a number.”; 
break; 
} 
?> 

<form action=”<?php echo pf_script_with_get($SCRIPT_NAME); 
?>” method=”post”> 
<table> 
<tr> 
<td><input type=”text” name=”bid”></td> 
<td><input type=”submit” name=”submit” value=”Bid!”></td> 
</tr> 
</table> 
</form> 

<?php 
} 
else { 
echo “This auction has now ended.”; 
} 

$historysql = “SELECT bids.amount, users.username FROM bids, 
users WHERE bids.user_id = users.id AND item_id = “ 
. $validid . “ ORDER BY amount DESC”; 
$historyresult = mysql_query($historysql); 
$historynumrows = mysql_num_rows($historyresult); 
if($historynumrows >= 1) { 
echo “<h2>Bid History</h2>”; 
echo “<ul>”; 
while($historyrow = mysql_fetch_assoc($historyresult)) { 
echo “<li>” . $historyrow[‘username’] . “ - “ . 
$config_currency . sprintf(‘%.2f’, $historyrow[‘amount’]) . “</li>”; 
} 
echo “</ul>”; 
    } 
} 
} 
require(“footer.php”); 
?> 

functions.php

<?php 
function pf_script_with_get($script) { 
$page = $script; 
$page = $page . "?"; 
foreach($_GET as $key => $val) { 
$page = $page . $key . "=" . $val . "&"; 
} 

return substr($page, 0, strlen($page)-1); 
} 

function pf_validate_number($value, $function, $redirect) { 
if(isset($value) == TRUE) { 
if(is_numeric($value) == FALSE) { 
$error = 1; 
} 
if($error == 1) { 
header("Location: " . $redirect); 
} 
else { 
$final = $value; 
} 
} 
else { 
if($function == 'redirect') { 
header("Location: " . $redirect); 
} 
if($function == "value") { 
$final = 0; 
} 
} 
return $final; 
} 
?> 
+0

добавьте isset ($ _ GET ['id']) перед его использованием. –

+0

В строке запроса url должно быть 'id'. например: 'index.php? id = 1'. – Rikesh

+0

isset check может помочь –

ответ

1

У вас есть проблема в

$_GET['id'] 

как вы получаете этот идентификатор, это приходит из строки запроса? Не думайте так. Поместите функцию isset, чтобы проверить, находится ли идентификатор в URL-адресе или нет. Таким образом, чтобы решить вашу проблему сделать это

$validid = 0; 
if (isset($_GET['id'])) { 
    $validid = pf_validate_number($_GET['id'], "value", $config_basedir); 
} 

это в вашем index.php

+0

@Shahnavaz проверить мой обновленный ответ. Это поможет –

+0

Большое вам спасибо за помощь. Я только что обновил свой вопрос с кодом дополнительных файлов в проекте. Существует метод, называемый «isset», который вы упомянули в моем файле functions.php в функции pf_validate_number. Вы все еще думаете, что я должен добавить этот код в свой файл index.php тот, который вы предоставили? – Shahnawaz

+0

Да, нужно. Поместите мой код в index.php –

3

Вы проходящее параметр строки запроса с именем id на вашей странице? Что-то вроде index.php?id=xxx? Если нет, $_GET['id'] не будет определен, и вы не можете просто получить к нему доступ. Вы должны проверить, что он существует сначала с чем-то вроде array_key_exists.

PHP очень, очень ясен в своем сообщении об ошибке. Когда вы обращаетесь к массиву, вы даете ему «индекс» (часть между []) и этот индекс сопоставляет значение. PHP сообщает вам, что индекс "id" не существует в любом массиве, к которому вы обращаетесь в строке 4. Если вы посмотрите на строку 4, вы можете увидеть, что только один массив доступен только в одном месте на этой линии, $_GET и вы можете видеть, что индекс, который вы используете, - id.

+0

Большое спасибо за вашу помощь. Я только что обновил вопросы с другими файлами, где упоминается id. Пожалуйста, взгляните на это, если у вас есть время. Еще раз спасибо :) – Shahnawaz

+0

@Shahnawaz Пожалуйста, не делайте этого. Это не сайт для интерактивной помощи один на один. Неплохо, если вы измените свой вопрос после ответа. Если у вас есть второй вопрос, разместите его как * второй вопрос *. – meagar

+0

Meagar, я не изменил вопрос, вопрос был таким же. Я просто предоставил дополнительную информацию. Просто добавил еще код. Вы и еще один парень спросили, где я получил «id», и я понятия не имел, поэтому я просто предоставил больше кода своей системы, где упоминается id. В любом случае, теперь это исправлено. Я последовал предложению chandresh_cool, и он больше не показывает ошибку. – Shahnawaz

Смежные вопросы