Проблемы с запросами и соединениями - PullRequest
0 голосов
/ 05 сентября 2018

Главная страница, которую я использую, называется страницей сведений о проекте, которая при выборе номера проекта в форме будет запрашивать подчиненную форму для любых записей, относящихся к этому номеру проекта, и отображать их на этой странице с именем (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>

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Итак, вот мои исправления к вашему примеру:

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 и воссоздаю все запросы, формы и отчеты ... Я уверен, что в ближайшем будущем у меня будет огромное количество вопросов.

Эрик

0 голосов
/ 05 сентября 2018

В настоящее время результаты производятся этой линией

$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>";
}
...