簡體   English   中英

如何在兩個單獨的html5表上顯示來自具有不同數據量的兩個表的數據?

[英]How do i display data from two tables with different amount of data on tow separate html5 tables?

我已經學習PHP幾周了,並且真的很喜歡它。 我需要幫助,因為我在這方面所做的所有搜索都產生了相似的結果。 我正在建立一個網站來跟蹤快遞服務的包裹。 基本上,員工可以登錄並添加軟件包並更新軟件包的位置。 這些更新應該作為歷史記錄累積到包裝上,直到交付為止。 但是,有了生成的跟蹤號,任何人都可以查看包裹的詳細信息和當前位置。 進行搜索后,我的文件中包含以下代碼,以生成有關該跟蹤號顯示的信息。

我創建了三個表,如下所示:usersAccounts,數據包和歷史記錄

CREATE TABLE history (
  id INT(10) NOT NULL AUTO_INCREMENT,
  trackingNumber BIGINT(10) NOT NULL,
  date VARCHAR(11) NOT NULL,
  time VARCHAR(11) NOT NULL,
  city VARCHAR(75) NOT NULL,
  country VARCHAR(75) NOT NULL,
  activity VARCHAR(150) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX id (id)
)
ENGINE = INNODB

INSERT INTO activityidtrackingNumberdatetimecitycountryactivity )值(1,777777,'2017-06-23','16:43:00','城市1','國家','活動1'),(2,777777,'2017-06-24','13:17:09','城市2','國家','活動2'),(3,888888,'2017-06 -23','10:11:21','城市1','國家/地區,'活動1'),(4,888888,'2017-06-24','10:43:00','城市2”,“國家/地區”,“活動2”),(5、777777,“ 2017-06-25”,“ 16:27:00”,“城市3”,“國家/地區”,“活動3”);

CREATE TABLE packages (
  packageID INT(10) NOT NULL AUTO_INCREMENT,
  sendName VARCHAR(50),
  originCity VARCHAR(70),
  originCountry VARCHAR(50),
  receiverName VARCHAR(50),
  desCity VARCHAR(255) ,
  desCountry VARCHAR(70),
  expDeliveryDate VARCHAR(10),
  status VARCHAR(255),
  trackingNumber INT(10),
PRIMARY KEY (packageID, trackingNumber),
UNIQUE INDEX trackingNumber (trackingNumber)
)
ENGINE = INNODB

CREATE TABLE userAccounts (
  id INT(10) NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(50) NOT NULL,
  username VARCHAR(50) NOT NULL,
  password VARCHAR(50) NOT NULL,
  status BOOLEAN NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX username (username)
)

引擎= MYISAM

包表中還有兩個測試數據:888888和777777,歷史記錄表中的88888和777777也有一些更新。 我的問題是,每當進行搜索時,都會在歷史記錄表中同時顯示888888和777777的數據,而我只希望在搜索時顯示888888或777777的詳細信息。

我有兩個查詢來獲取html5表上兩個表的結果。有人可以看一下我的代碼,告訴我什么地方出了錯嗎?

$query = mysqli_query($link, "SELECT * from packages WHERE trackingNumber LIKE '%$searchq%'");
      while($row = mysqli_fetch_assoc($query)) {
        $shipper = $row['sendName'];
        $originCity = $row['originCity'];
        $originCountry = $row['originCountry'];
       }
$sql =  "SELECT * from history WHERE trackingNumber LIKE '%$searchq%' ORDER 
BY id ASC";
    while($row = mysqli_fetch_assoc($sql)){         
        echo "<tr>";
            echo "<td>" . $row['date'] . "</td>";
            echo "<td>" . $row['time']. "</td>";
            echo "<td>" . $row['city']. "</td>";
            echo "<td>" . $row['country']. "</td>";
            echo "<td>" . $row['activity']. "</td>";
        echo "</tr>";
    }
    echo "</table>";

謝謝

您需要先定義變量$searchq然后才能在查詢中使用它。 例如,如果要搜索包含數字7的數據,則首先需要聲明

$searchq = '7';

如果沒有, SELECT * from packages WHERE trackingNumber LIKE '%$searchq%'將解析為SELECT * from packages WHERE trackingNumber LIKE '%%' ,它匹配的一切 PHP會通知您某些地方出了問題,但是代碼仍然可以運行,您可能沒有注意到該錯誤。

這是基本的操作,您可能要添加列標題和其他格式,但是它適用於單個跟蹤編號和與多個跟蹤編號匹配的搜索字詞。 它還通過使用准備好的語句避免了SQL注入問題。

<?php

    $searchq = isset($_REQUEST['track']) && $_REQUEST['track'] != '' ? $_REQUEST['track'] : "";

    if($searchq != '') {

        $qstr = "";
        $qstr .= "SELECT\n";
        $qstr .= "  a.`packageID`,\n";
        $qstr .= "  a.`sendName`,\n";
        $qstr .= "  a.`originCity`,\n";
        $qstr .= "  a.`originCountry`,\n";
        $qstr .= "  b.`date`,\n";
        $qstr .= "  b.`time`,\n";
        $qstr .= "  b.`city`,\n";
        $qstr .= "  b.`country`,\n";
        $qstr .= "  b.`activity`\n";
        $qstr .= "FROM `packages` a\n";
        $qstr .= "LEFT JOIN `activity` b\n";
        $qstr .= "ON a.`trackingNumber` = b.`trackingNumber`\n";
        $qstr .= "WHERE a.`trackingNumber` = ?";

        $searchq = '%'.$searchq.'%';
        $stmt = mysqli_prepare($qstr);
        mysqli_stmt_bind_param($stmt,'s',$searchq);
        $stmt->execute();

        $rslt = mysqli_get_result();
        $lastPackageID = "";
        echo "<table>\n";
        while($row = mysqli_getch_array($rslt)) {
            if($lastPackageID != $row['packageID']) {
                echo "<tr>\n";
                echo "  <td colspan='3'>.$row['sendName']."</td>\n";
                echo "  <td>.$row['originCity']."</td>\n";
                echo "  <td>.$row['originCountry']."</td>\n";
                echo "</tr>\n";
                $lastPackageID != $row['packageID'];
            }
            echo "<tr>\n";
            echo "  <td>.$row['date']."</td>\n";
            echo "  <td>.$row['time']."</td>\n";
            echo "  <td>.$row['city']."</td>\n";
            echo "  <td>.$row['country']."</td>\n";
            echo "  <td>.$row['activity']."</td>\n";
            echo "</tr>\n";
        }
        echo "</table>\n";

    } else {
        echo "Required parameter missing";
    }
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM