我想在HTML表中显示其他数据库表中的内容

时间:2018-06-21 09:20:17

标签: php html database mysqli

我想向参加课程的人展示内容。 我现在显示的是课程成员的姓名和电子邮件。 这样,我想显示数据库中不同数据库表中的课程。 在表cursist中,我具有以下内容: id INT(4) naam VARCHAR(255) 电子邮件VARCHAR(255) 对于cursus表,我有以下内容: cid INT(4) cursus VARCHAR(255)

我现在有此代码

        <?php 
    $sql = "SELECT * FROM cursist";
    $res = $db->query($sql);

    if ($res->num_rows > 0) {
      while($row = $res->fetch_assoc()) {
        echo "<tr><td>" .$row["cursus"]. "</td><td>" . "<a href=\"editcursus.php?cid=$row[cid]\">Wijzig</a>" . "</td></tr>";
        } 
      } else {
        echo "0 Resultaten gevonden";
      }
    $db->close();
    ?>

我尝试使用内连接,但尝试时无法使用,如果有人可以帮助我解决此问题,我将很乐意。

  

问题是,如何做到这一点,所以来自另一个数据库的过程   该表格显示在我网页上的SAME HTML表单中。

亲切的问候, 马克。

1 个答案:

答案 0 :(得分:2)

看看SQL Joins可能对您有帮助。

关于您的主要问题,SQL查询应该可以工作。 select *和内部联接在大多数情况下不起作用,因为您必须从数据库中指定所需的字段:

SELECT CURSIST.id,
      CURSIST.naam,
      CURSIST.email,
      CURSUS.cursus
FROM CURSIST 
INNER JOIN CURSUS 
     ON CURSIST.id=CURSUS.cid;

我没有看到整个问题/需要的东西,但我想您的数据库布局可能缺少表。

如果我认为正确,那么您有两个下表:

CURSIST(id,naam,email)
CURSUS(id,cursus)

一个诅咒者可能有多个诅咒,而一个诅咒可能有多个诅咒。 因此,您应该在诅咒和诅咒之间建立一张桌子。如果为此创建表,则可以解决这两者之间的N:M解决方案。 DEELNEMERS(cursist_id,cursus_id)

然后查询将是:

SELECT CURSIST.id,
       CURSIST.naam,
       CURSIST.email,
       CURSUS.cursus
 FROM CURSIST 
 INNER JOIN DEELNEMERS
      ON CURSIST.id=DEELNEMERS.cursist_id;
 INNER JOIN CURSUS
      ON DEELNEMERS.cursus_id=CURSUS.id;

有关联接的有用链接:

  1. W3Schools SQL Joins
  2. 3rd Normal form SQL

@Update:@Mark_Ed我曾经评论过您的代码,希望对您有所帮助

编辑方法:

<?php 
   $sql = "SELECT CURSIST.id,
                  CURSIST.naam,
                  CURSIST.email,
                  CURSUS.cursus,
                  CURSUS.cid
           FROM CURSIST 
           INNER JOIN CURSUS 
           ON CURSIST.id=CURSUS.cid;";

   $res = $db->query($sql);
   // $res contains the result of the sql-query at this point.
   if ($res->num_rows > 0) {
     // if the rows got returned from sql, this block is executes.

     while($row = $res->fetch_assoc()) {
     // while the $row contains something this block is exectued.
     /** the Object $row[] contains the "fields" from the sql query.
     /   for example a $row["naam"] would return the name from the cursist
     /   here you take the name of the cursus. 
     **/
            echo "<tr><td>Cursus: " .$row["cursus"]. "</td><td>Cursist Naam: " .$row["naam"]. "</td><td>" . "<a             
                 href=\"editcursus.php?cid=$row[cid]\">Wijzig</a>" . "</td> 
                 </tr>";
     } 
   } else {
      echo "0 Resultaten gevonden";
   }
   $db->close();
  ?>