首页 > 解决方案 > 使用主键从不同的表中获取字词

问题描述

我有一个表格记录从工厂到客户的货物运输,在这个表格中我只注册工厂和客户代码,但我需要他们的名字出现在我的网页上。

我正在使用 mysqli 语句从表中获取我的数据。我在 raspbian 服务器上的 phphmyadmin 上使用 Mysql 数据库。

我不想更改 sql 表中的任何内容,我只想让更改出现在网页上。

<?php
    require '../include/header.php';
    require '../include/dbhandler.php';
?>
<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<title>Gestion des contenant</title>
<link rel="stylesheet" href="../../style.css" />
</head>
<?php if(isset($_SESSION["username"])){
    echo'
<body>
<div><p> vue global des client </p></div>

    <form action="include/gestioncontenant.inc.php" method="post">
                <input type="text" name="clientName" placeholder="Nom du Client"/><br>
                <button type="submit" name="login-submit">Search</button>
    </form><br>';
        // Récupération de la table client
        $sql = "SELECT * FROM `mouvement` WHERE 1";

        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql) && isset($_SESSION["username"])) {
            header("location: ../gestioncontenant.php?error=sqlerror");
            exit();
        }
        else {
             mysqli_stmt_bind_param($stmt, "s", $clientName);
            mysqli_stmt_execute($stmt);
             $result = mysqli_stmt_get_result($stmt);
                echo '<table border="1">';
                echo "<tr><td>Code</td><td>Type</td><td>Date</td><td>Site de prod</td><td>Client</td><td>Contenant</td><td>Quantit&eacute;</td><td>Transporteur</td></tr>";  
            while($row = mysqli_fetch_assoc($result)){
                    echo "<tr><td>{$row["mouvement_code"]}</td><td>{$row["mouvement_type"]}</td><td>{$row["mouvement_date"]}</td><td>{$row["site_code"]}</td><td>{$row["client_code"]}</td><td>{$row["contenant_code"]}</td><td>{$row["contenant_quantite"]}</td><td>{$row["transporteur_code"]}</td></tr>\n";
                  }
        }
             echo"</table><br>"; 
}?>
<a href="../home.php"> retour</a>
</body>
</html>

在“运动”表中,我只有客户和工厂(站点)的 ID(外键),我需要显示名称。我只使用 html 和 php,但如果它们是 javascript 或其他语言的解决方案,我将实现它。谢谢!

标签: phpsql

解决方案


你需要多解释一下其他表的样子

我会假设你有这张桌子

移动(client_code,site_code,mouvement_code,mouvement_type,contenant_code,ETC)

现在'client_code'是客户端的ID吗?如果是的话,你有另一张这样的桌子吗?:

客户(client_name,client_code,ETC)

如果是,那么您只需在请求中的两个表之间的 clientID 上进行连接:

SELECT a.*, b.client_name FROM `mouvement`a
left join 'client' b on a.client_code = b.client_code
WHERE conditions

然后 $row['client_name'] 将被定义,你将能够把它放在你的表中

编辑 :

所以如果你有其他桌子

内容(内容名称,内容代码,ETC),

SITE(site_name, site_code, ETC),查询变为:

SELECT a.*, b.client_name, c.contenant_name, d.site_name FROM `mouvement`a
left join 'client' b on a.client_code = b.client_code
left join 'contenant' c on a.contenant_code = c.contenant_code
left join 'site' d on a.site_code = d.site_code
WHERE conditions

推荐阅读