Главная страница, которую я использую, называется страницей сведений о проекте, которая при выборе номера проекта в форме будет запрашивать подчиненную форму для любых записей, относящихся к этому номеру проекта, и отображать их на этой странице с именем (TasksSubform).
Эта страница (TasksSubform) использует php-файл mysqli_connect.php для получения соединения с базой данных и назначает это соединение для $ dbc в файле mysqli_connect.php.
Затем эта страница запрашивает таблицу 1 с именем CommonTasks и начинает отображать данные построчно в таблице на странице, используя
while($row = $result->fetch_assoc())
В настоящее время один из столбцов в отображаемой записи называется «AssignedTo», который создает уникальный идентификационный номер в таблице «Сотрудники» вместо текстового значения имени сотрудника, связанного с идентификационным номером. Итак, мне нужно иметь возможность перечислять записи в Таблице CommonTasks с помощью Fetch, а затем, когда он пытается отобразить значение в столбце «AssignedTo» в Таблице общих задач, он должен искать идентификатор в таблице Employees, который равен то же значение в таблице общих задач и замените числовое значение поля «Назначено» текстовым значением в таблице «Сотрудники».
COMMONTASKS
EMPLOYEES
* Add
* AssignedTo
* Attachments
* Cost
* CostInDays
* Description
* DueDate
* EmployeeID
* ID
* PercentComplete
* Priority
* StartDate
* SubmissionDate
* Title * ID
* Address
* BusinessPhone
* City
* Company
* CountryRegion
* EmailAddress
* FaxNumber
* FirstName
* HomePhone
* JobTitle
* LastName
* MobilePhone
* Notes
* StateProvince
* WebPage
* ZIPPostal Code
Это то, что у меня есть. Тем не менее, все, что он производит, это пустое поле в поле Assigned To на странице php.
введите описание изображения здесь
Я новичок в php и mysql.
Это, наверное, что-то простое, что я упускаю из виду.
Тем не менее, в течение последних нескольких дней я занимался поиском и устранением неисправностей различных методов, и, похоже, просто не могу понять, что я делаю неправильно.
<?php
// Get a connection for the database
require_once('../mysqli_connect.php');
// Create a query for the database
$sql = "SELECT * FROM `CommonTasks`";
$employee = "SELECT ID, LastName, LastName FROM Employees JOIN CommonTasks ON Employees.ID=CommonTasks.AssignedTo";
$emp = "SELECT LastName, FirstName FROM Employees JOIN CommonTasks WHERE Employees.ID = CommonTasks.AssignedTo LIMIT 1";
$emp1 = "SELECT id as LastName, FirstName FROM Employees WHERE ID = CommonTasks.AssignedTo LIMIT 1";
// Get a response from the database by sending the connection
// and the query
$result1 = @mysqli_query($dbc, $sql);
$result2 = @mysqli_query($dbc, $emp);
$result = $dbc->query($sql);
$link = "commntasks-insertdata.php"?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Common Tasks-subform</title>
<meta name="viewport"charset="utf-8" content="width=device-width, initial-scale=1.0">
</head>
<body>
<?php
echo " <table border='1' #6a8fba>
<caption>SUBFORM - Common Tasks</caption>
<tr>
<th>Job Title</th>
<th>Due Date</th>
<th>Start Date</th>
<th>Cost</th>
<th>Priority</th>
<th>Percent Complete</th>
<th>Assigned To</th>
<th>Description</th>
</tr>";
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td><a href= $link > $row[Title] </a></td>";
echo "<td>". $row['DueDate'] . "</td>";
echo "<td>". $row['StartDate'] . "</td> " ;
echo "<td>". $row['Cost'] . "</td>";
echo "<td>". $row['Priority'] . "</td>";
echo "<td>". $row['PercentComplete'] . "</td> " ;
echo "<td>". $row ['SELECT LastName, FirstName FROM Employees JOIN CommonTasks WHERE Employees.ID = $_GET[AssignedTo] LIMIT 1'] . "</td>";
echo "<td>". $row['Description'] . "</td> " ;
echo "</tr>";
}
}
echo "</table>";
?>
</body>
В настоящее время результаты производятся по этой линии
$result = $dbc->query($sql);
Следующая строка не будет выполнять запрос MySQL.
echo "<td>". $row ['SELECT LastName, FirstName FROM Employees JOIN CommonTasks WHERE Employees.ID = $_GET[AssignedTo] LIMIT 1'] . "</td>";
Как написано, вы пытаетесь найти значение строки в $ result, которое не существует. Вам необходимо вызвать второй запрос в первом цикле while и передать значение $ _GET [AssignedTo], которое, вероятно, равно $ row [AssignedTo]
Что-то вроде этого
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td><a href= $link > $row[Title] </a></td>";
echo "<td>". $row['DueDate'] . "</td>";
echo "<td>". $row['StartDate'] . "</td> " ;
echo "<td>". $row['Cost'] . "</td>";
echo "<td>". $row['Priority'] . "</td>";
echo "<td>". $row['PercentComplete'] . "</td> " ;
$emp = "SELECT LastName, FirstName FROM Employees JOIN CommonTasks WHERE Employees.ID = '$row[AssignedTo]' LIMIT 1";
$result2 = @mysqli_query($dbc, $emp);
$row2 = $result2->fetch_assoc();
echo "<td>". $row2 ['Firstname'] . " ". $row2 ['Lastname'] . "</td>";
echo "<td>". $row['Description'] . "</td> " ;
echo "</tr>";
}
Итак, вот мои исправления к вашему примеру:
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td><a href= $link > $row[Title] </a></td>";
echo "<td>". $row['DueDate'] . "</td>";
echo "<td>". $row['StartDate'] . "</td> " ;
echo "<td>". $row['Cost'] . "</td>";
echo "<td>". $row['Priority'] . "</td>";
echo "<td>". $row['PercentComplete'] . "</td> " ;
$emp = "SELECT LastName, FirstName FROM Employees JOIN CommonTasks WHERE Employees.ID = '$row[AssignedTo]'";
$result2 = @mysqli_query($dbc, $emp);
$row2 = $result2->fetch_assoc();
echo "<td>". $row2['LastName']," , ",$row2[FirstName] . "</td>";
echo "<td>". $row['Description'] . "</td> " ;
echo "</tr>";
}
}
echo "</table>";
?>
Который производит это: Результаты модифицированного кода
Спасибо большое за вашу помощь!
Поскольку я преобразовываю базу данных Access в mySQL и воссоздаю все запросы, формы и отчеты … Я уверен, что у меня будет огромное количество вопросов в ближайшем будущем.
Эрик