gpt4 book ai didi

php - 通知 : Undefined index: variable

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:32 25 4
gpt4 key购买 nike

我正在尝试构建一个带有下拉列表的简单表单来查询我的数据库(专为课外事件图书馆设计)。这个想法是下拉列表由书名或学生的名字填充,这样当您选择一个名字并提交时,数据库会从表中选择具有匹配外键的详细信息。

问题是,每当我打开表格时,我都会在表格上方看到这些行的几个副本:

Notice: Undefined index: id in E:\XAMPP\htdocs\CMPS\Library\query\index.php on line 88

Notice: Undefined index: name in E:\XAMPP\htdocs\CMPS\Library\query\index.php on line 88

Notice: Undefined index: isbn in E:\XAMPP\htdocs\CMPS\Library\query\index.php on line 104

Notice: Undefined index: title in E:\XAMPP\htdocs\CMPS\Library\query\index.php on line 104

同样,每个下拉列表都显示其中一个

Notice: Undefined index: name in E:\XAMPP\htdocs\CMPS\Library\query\searchform.html.php on line 20

Notice: Undefined index: title in E:\XAMPP\htdocs\CMPS\Library\query\searchform.html.php on line 30

index.php

<?php include_once 
'../includes/helpers.inc.php';

require_once '../access.inc.php';

if (!userIsLoggedIn())
{
include '../login.html.php';
exit();
}

if (!userHasRole('Verified'))
{
$error = 'Only verified accounts may access this page.';
include '../accessdenied.html.php';
exit();
}

if (isset($_GET['action']) and $_GET['action'] == 'search')
{
include '../includes/db.inc.php';

$select = 'SELECT CONCAT_WS(\' \', student.First, student.Last) as Name, book.Title, checkout.Checked, checkout.Due';
$from = ' FROM checkout, student, book';
$where = ' WHERE student.ID = checkout.StudentID AND book.ISBN = checkout.BookISBN';

$placeholders = array();

if ($_GET['student'] != '')
{
$where .= " AND checkout.StudentID = :studentid";
$placeholders[':studentid'] = $_GET['student'];
}

if ($_GET['book'] != '')
{
$where .= " AND checkout.BookISBN = :bookisbn";
$placeholders[':bookisbn'] = $_GET['book'];
}

if (isset($_POST['ongoing']) && $_POST['ongoing'] == 'Yes')
{
$where .= " AND Ongoing = 1";
}

try
{
$sql = $select . $from . $where;
$s = $pdo->prepare($sql);
$s->execute($placeholders);
}
catch (PDOException $e)
{
$error = 'Error fetching checkouts.';
include 'error.html.php';
exit();
}

foreach ($s as $row)
{
$checkouts[] = array('Name' => $row['name'], 'book.Title' => $row['title'],
'Checked' => $row['checked'], 'Due' => $row['due']);
}

include 'query.html.php';
exit();
}

include '../includes/db.inc.php';

try
{
$result = $pdo->query('SELECT ID, CONCAT_WS(\' \', First, Last) as Name FROM student');
}
catch (PDOException $e)
{
$error = 'Error fetching students from database!';
include 'error.html.php';
exit();
}

foreach ($result as $row)
{
$students[] = array('ID' => $row['id'], 'Name' => $row['name']); #Line 88
}

try
{
$result = $pdo->query('SELECT ISBN, Title FROM book');
}
catch (PDOException $e)
{
$error = 'Error fetching books from database!';
include 'error.html.php';
exit();
}

foreach ($result as $row)
{
$books[] = array('ISBN' => $row['isbn'], 'Title' => $row['title']); #Line 104
}

include 'searchform.html.php';

searchform.html.php

<?php include_once 
'../includes/helpers.inc.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!-- <link href="../style.css" rel="stylesheet" media="screen"> -->
<title>Query Checkouts</title>
</head>
<body>
<h1>Query</h1>
<form action="" method="get">
<p>View checkouts satisfying the following criteria:</p>
<div>
<label for="student">By student:</label>
<select name="student" id="student">
<option value="">Any student</option>
<?php foreach ($students as $student): ?>
<option value="<?php htmlout($student['id']); ?>"><?php
htmlout($student['name']); ?></option> <!-- Line 20 -->
<?php endforeach; ?>
</select>
</div>
<div>
<label for="book">By book:</label>
<select name="book" id="book">
<option value="">Any book</option>
<?php foreach ($books as $book): ?>
<option value="<?php htmlout($book['isbn']); ?>"><?php
htmlout($book['title']); ?></option> <!-- Line 30 -->
<?php endforeach; ?>
</select>
</div>
<div>
<label for="ongoing">Ongoing only?:</label>
<input type="checkbox" name="ongoing" value="Yes" />
</div>
<div>
<input type="hidden" name="action" value="search">
<input type="submit" value="Search">
</div>
</form>
<p><a href="..">Return to PHL home</a></p>
<?php include '../logout.inc.html.php'; ?>
</body>
</html>

我尝试检查代码,但 phpcodechecker.com 说错误为零,而且我很难使用 Chrome Logger 进行调试。

希望我能明白我做错了什么,这样我就不会在以后的开发中犯错了!

最佳答案

在循环中访问 $row 时,您需要确保使用区分大小写的索引。

改变:

$students[] = array('ID' => $row['id'], 'Name' => $row['name']);

收件人:

$students[] = array('ID' => $row['ID'], 'Name' => $row['Name']);

此外,在 searchform.html.php 中,您需要访问您定义的数组,即。使用 IDName 访问这些值。或者更改上述更改中的那些索引以匹配预期的小写版本。

示例:

$students[] = array('id' => $row['ID'], 'name' => $row['Name']);

如您所知,这可能也会影响其他结果循环。只需对这些应用相同的更改,您应该没问题(例如,$checkouts 似乎也受到影响)。

关于php - 通知 : Undefined index: variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40826666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com