Undefined index: id in php
Ich habe ein problem im PHP-code. Ich habe einige code aus einer e-Buch, aber als ich versuchte, um das system laufen, gibt es einige Fehler. Ich behob einige Fehler, indem Sie richtige Anführungszeichen, aber jetzt bin ich stecken mit einigen anderen Fehlern.
Ich würde mehr als glücklich sein, wenn jemand hilft mir mit der folgenden Fehlermeldung:
Notice: Undefined index: id in C:\xampp\htdocs\auction\index.php auf der Linie 4
Dies ist mein code für 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");
?>
Einige von Euch gefragt, wo die id herkommt. Ich habe keine Ahnung, aber ich suchte es in anderen Dateien, und hier sind Sie:
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;
}
?>
- hinzufügen isset($_GET['id']), bevor Sie es.
- Es sollte
id
in Ihre url-query-string. eg:index.php?id=1
. - isset prüfen kann helfen
- möglich, Duplikat der PHP: "Notice: Undefined variable" und "Notice: Undefined index"
- Wenn Sie gar nicht wissen, was könnte das problem sein Gebiet (ersichtlich aus der großen Anzahl von code-Abschnitten, die du gepostet hast) vielleicht ist es Zeit zu investieren in sich selbst und versuchen und verstehen, was Sie eigentlich tun mit Ihrem code.
- Herzlich willkommen auf Stack Overflow! Bitte verwenden Sie nicht
mysql_*
Funktionen, neuen code schreiben. Sie werden nicht mehr gepflegt und die Gemeinschaft hat begonnen, die deprecation-Prozess. Siehe die red box? Stattdessen sollten Sie lernen, über prepared statements und PDO oder MySQLi. Wenn Sie Holen PDO hier ist ein gutes tutorial.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie ein problem in
wie bekommen Sie diese id, ist es aus der query-string? Denke nicht so. Setzen isset Funktion prüfen Sie, ob der id in der url ist oder nicht. Also, um Ihr problem zu lösen tun Sie dies
setzen Sie diese in Ihre index.php
Sind Sie vorbei ein query-string-parameter namens
id
auf Ihrer Seite? So etwas wieindex.php?id=xxx
? Wenn nicht,$_GET['id']
werden nicht definiert, und man kann nicht einfach darauf zugreifen. Sie haben zu prüfen, dass es vorhanden ist, erstmal mit so etwas wiearray_key_exists
.PHP ist sehr, sehr klar in seiner Fehlermeldung. Beim Zugriff auf ein array ist, geben Sie es ein "index" (der Teil zwischen den
[]
) und index-Karten auf einen Wert. PHP sagt dir, dass der index"id"
existiert nicht in was auch immer-array greifen Sie auf Linie 4. Wenn Sie einen Blick auf Zeile 4 können Sie sehen, es gibt nur einen array zugegriffen wird, in nur einem Ort auf, die Zeile$_GET
, und Sie können sehen, die index Sie verwendenid
.