Вопросы о синтаксисе Ajax и вызове данных из базы данных SQL - PullRequest
0 голосов
/ 14 мая 2019

По сути, переназначить проблему домашнего задания, чтобы он использовал Ajax для вызова данных из базы данных SQL под названием Club. Было решено использовать сокращенный метод w / $ .get (url [, data] [, success] [, dataType]), но учебник не объясняет, например, что такое «успех». Мол, должны быть данные из файла? Нужно ли писать в функцию для dataType?

Другое - неясно, куда должен идти код SQL. У меня есть JS и PHP, но никогда раньше не работал с SQL. Разве это не должно входить в базу данных SQL? Если нет, то где?

JavaScript:


    // Initialize the object:
    var ajax = false;

    // Choose object type based upon what's supported:
    if (window.XMLHttpRequest) {

        // IE 7, Mozilla, Safari, Firefox, Opera, most browsers:
        ajax = new XMLHttpRequest();

    } else if (window.ActiveXObject) { // Older IE browsers

        // Create type Msxml2.XMLHTTP, if possible:
        try {
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) { // Create the older type instead:
            try {
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) { }
        }

    } // End of main IF-ELSE IF.

    // Return the value:
    return ajax;

}

PHP-файл:

<html>
    <head>
        <meta charset="UTF-8">
        <title>Inventory</title>
    </head>
    <body>
        <h1>Branch Inventory</h1>
        <?php
            $branchid = 0;
            $branchid = (int) $_GET['branchid'];
            if ($branchid > 0) {
                require_once ('dbtest.php');
                //echo 'Branch = ' .$branchid. ' returned.</p>';
                $query = "SELECT * FROM Branch WHERE Branch_Number = $branchid ";
                $r = mysqli_query($dbc, $query);
                if (mysqli_num_rows($r) > 0) {
                $row = mysqli_fetch_array($r);
                echo "<p>Branch #: " .$row['Branch_Number']. "<br>";
                echo "Branch Name: " .$row['Branch_Name']. "<br>";
                echo "Location: " .$row['Branch_Location']. "<br></p>";
                } else {
                    echo "<p>Branch not on file.</p>";
                }
                //table for inventory
                echo "<table border='1'>";
                echo "<caption>Current Inventory</caption>";
                echo "<tr>";
                echo "<th>Book Cd</th>";
                echo "<th>Title</th>";
                echo "<th>Quantity</th>";
                echo "</tr>";
                $query2 = "SELECT invent.book_code As BookCd, book_title as Title,Units_on_hand As Qty 
                    FROM invent, book 
                    WHERE book.book_code = invent.book_code and branch_number = $branchid";
                $r2 = mysqli_query($dbc, $query2);
                while ($row = mysqli_fetch_array($r2)) {
                    echo "<tr>";
                    echo "<td>" .$row['BookCd']. "</td>";
                    echo "<td>" .$row['Title']. "</td>";
                    echo "<td>" .$row['Qty']. "</td>";
                    echo "</tr>";
                }
                echo "</table>";

            } else {
                echo '<p>No Branch ID from form.</p>';
            }
        ?>
    </body>
</html>

Наконец, SQL (отредактированный, чтобы показать только кодировку, а не данные):

CREATE DATABASE CLUB;
USE CLUB;

DROP TABLE IF EXISTS tblMembers;
CREATE TABLE tblMembers (
  MemID VARCHAR(4) NOT NULL,
  LastName VARCHAR(30),
  FirstName VARCHAR(30),
  MiddleName VARCHAR(15),
  Status VARCHAR(1),
  MemDt DATE,
  YTD_Total DOUBLE,
  YTD_Total_Dt DOUBLE,
  Password INT,

  PRIMARY KEY(MemID) 
);

INSERT INTO tblMembers VALUES

DROP TABLE IF EXISTS tblCodes;
CREATE TABLE tblCodes (
   TransCd VARCHAR(2) NOT NULL,
   TransType VARCHAR(1),
   TransDesc VARCHAR(50),

   PRIMARY KEY(TransCd)
);

INSERT INTO tblCodes VALUES 

DROP TABLE IF EXISTS tblPurchases; 
CREATE TABLE tblPurchases (
   ID BIGINT NOT NULL AUTO_INCREMENT,
   MemId VARCHAR(4),
   PurchaseDt DATE,
   TransType VARCHAR(1),
   TransCd VARCHAR(2),
   Amount DOUBLE,

   PRIMARY KEY(ID)
);

INSERT INTO tblPurchases (MemID, PurchaseDt, TransType, TransCd, Amount) VALUES

Приложение с двумя экранами позволит пользователю выбрать участника из выпадающего списка, а затем нажать «go», чтобы просмотреть все транзакции в файле для этого участника. Обратите внимание, что записи в этом раскрывающемся списке считываются из таблицы tblMembers базы данных Club. Значение кода, назначенное каждой раскрывающейся записи, является идентификатором участника для этого элемента.

При нажатии кнопки GO страница выбора должна перейти на другую страницу PHP. На этой второй странице PHP будут выполняться запросы SQL к базе данных, чтобы получить как полную информацию об участнике (из tblMembers), так и данные о транзакциях для этого члена из таблицы tblPurchases.

SQL для главной страницы - это просто простой выбор всех записей в tblMembers, возвращаемых в порядке имен:

        SELECT * FROM tblMembers ORDER BY LastName, FirstName, MiddleName;

Затем в верхней части второй страницы вы выбираете конкретного участника, выбранного пользователем для просмотра; таким образом, SQL для этой операции:

        SELECT * FROM tblMembers WHERE MemID = ‘member id’

Обратите внимание, что показанное выше значение "идентификатор элемента" должно быть заменено фактическим идентификатором элемента, который является записью значения выбранной раскрывающейся записи с первой страницы. Однако, поскольку идентификатор члена в базе данных является буквенно-цифровым, вокруг него должны быть одиночные апострофы (как показано выше). Таким образом, пример команды для поиска данных для Нани Циммерман (ID Z005) будет выглядеть так:

SELECT * FROM tblMembers WHERE MemID = ‘Z005’

В списке транзакций вы также показываете описание транзакции, которое происходит из таблицы tblCodes в базе данных. SQL для этой операции:

SELECT p.Memid, p.PurchaseDt, p.TransCd, c.TransDesc, p.TransType, p.Amount ОТ tblpurchases p, tblcodes c ГДЕ p.TransCd = c.TransCd AND p.MemId = 'идентификатор участника' ЗАКАЗАТЬ по p.MemId, p.PurchaseDt, p.TransCd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...