PHP在点击时将超链接字符串存储到变量中

时间:2017-04-22 08:47:00

标签: php mysql

我正在创建一个页面,其中显示了一个使用PHP的staffID和staffName的表。当用户单击staffID时,它应该使用另一个文件中的代码显示一个新表,其中包含有关该staffID的额外详细信息,例如shippingDate,OrderID等。

task9.php文件如下:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<title>PHP Task 9</title>

<link rel="stylesheet" href="styles.css">

</head>

<body>

<?php

$sID= isset($_GET['staffID']) ? $_GET['staffID'] : '';

$conn = mysqli_connect('localhost', 'TWA', 'TWA_test', 'factory');

if ( !$conn ) {

die("Connection failed: " . mysqli_connect_error());

}   

$sql = "SELECT s.staffID,s.staffName
    FROM staff s";

$results = mysqli_query($conn, $sql)

or die ('Problem with query' . mysqli_error($conn));

?>

<h1> Staff Table </h1>

<table>
        <tr>

        <th>Staff ID</th>
    <th>Staff Name</th>

    </tr>   

<?php while($row = mysqli_fetch_array($results)) { ?>

    <tr>

    <td> <a href = "task8.php"><?php echo $row[0] ?></a></td>
    <td><?php echo $row[1] ?></td>

    </tr>

<?php } ?>

<?php mysqli_close($conn); ?>

</table>

</body>

</html>

task8.php要求用户输入staffID并显示所有详细信息,如果staffID不存在,则显示错误。此文件工作正常,并正确显示所有内容。 task8.php文件如下:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<title>PHP Task 8</title>

<link rel="stylesheet" href="styles.css">

</head>

<body>

<?php

$conn = mysqli_connect('localhost', 'TWA', 'TWA_test', 'factory');

if ( !$conn ) {

die("Connection failed: " . mysqli_connect_error());

}

//obtain the staff ID input from the $_GET array

$sID= isset($_GET['staffID']) ? $_GET['staffID'] : '';

$sql = "SELECT s.staffID, p.orderID, p.orderDate, p.shippingDate,s.staffName
    FROM purchase p
    INNER JOIN staff s
    ON p.staffID = s.staffID
    WHERE p.staffID = '$sID'";

$results = mysqli_query($conn, $sql)

or die ('Problem with query' . mysqli_error($conn));

?>

<h1> Order Details </h1>

<?php $rows = mysqli_num_rows($results); ?>
<?php if($rows <= 0){ ?>
<p><?php echo "The staff ID entered is invalid"; ?></p>
<?php } else { ?>

<table>
        <tr>

        <th>Staff ID</th>
    <th>Order ID</th>
    <th>Order Date</th>
    <th>Shipping Date</th>
    <th>Staff Name</th>

    </tr>   

<?php while ($row = mysqli_fetch_array($results))  { ?>

    <tr>

    <?php if($row[0] != ""): ?>
    <td><?php echo $row[0]; ?></td>
    <?php else: ?>
    <td><?php echo "N/A"; ?></td>
    <?php endif; ?>

    <?php if($row[1] != ""): ?>
    <td><?php echo $row[1]; ?></td>
    <?php else: ?>
    <td><?php echo "N/A"; ?></td>
    <?php endif; ?>

    <?php if($row[2] != ""): ?>
    <td><?php echo $row[2]; ?></td>
    <?php else: ?>
    <td><?php echo "N/A"; ?></td>
    <?php endif; ?>

    <?php if($row[3] != ""): ?>
    <td><?php echo $row[3]; ?></td>
    <?php else: ?>
    <td><?php echo "N/A"; ?></td>
    <?php endif; ?>

    <?php if($row[4] != ""): ?>
    <td><?php echo $row[4]; ?></td>
    <?php else: ?>
    <td><?php echo "N/A"; ?></td>
    <?php endif; ?>

    </tr>

<?php } ?>

<?php } ?>

<?php mysqli_close($conn); ?>

</table>

</body>

</html>

我面临的问题是,当我从task9.php上的表中单击staffID时,它只显示我在task8.php中包含的错误“输入的人员ID无效”。我不知道为什么它没有显示来自task8.php

的细节

2 个答案:

答案 0 :(得分:0)

你需要像这样传递参数

 <a href = "task8.php?staffID=<?php echo $row[0]?>">

答案 1 :(得分:0)

你没有正确建立你的链接,它应该是

<a href = "task8.php?staffID=<?php echo $row[0] ?>"><?php echo $row[0] ?></a>

另外,我觉得在没有htmlentities()的情况下回复输出感到不舒服。 是的,每次输入都很无聊,所以我通常在我的每个PHP项目中保留一个函数,比如这个

function e($whatToConvert){
   return htmlentities($whatToConvert); //or htmlspecialchars
}

所以上面的代码就变成了

<a href = "task8.php?staffID=<?php e(echo $row[0]) ?>"><?php echo e($row[0]) ?></a>