【问题标题】:Showing Data with 2 tables on php mysql在 php mysql 上显示带有 2 个表的数据
【发布时间】:2015-08-19 22:28:26
【问题描述】:

我在显示 2 个表中的数据时遇到问题

Table 1 (kegiatan): id_kgt (PK), nama_kgt,ket, tg_mulai, tg_akhir, nm_pengirim, indi01, indi02, indi03, indi04, indi05, indi06, indi07, indi08, indi09, indi010,

Table 2 (pilihan): kdpilih (PK), nmpilih

kdpilih contain number which linked with indi01 to indi010

nmpilih contain plain text, ex: kdpilih: 1 = nmpilih: car 

我已经创建了脚本,但问题是当有人从输入页面输入少于或多于 3 个字段(indi01、indi02、indi03)的数据时,它不会显示任何内容。有什么解决方案可以解决这个问题吗?我的连接表脚本错了吗?所以,我想显示所有数据,尽管入口页面上的数据只有 1、2、3 等。

这是我的脚本,任何帮助都会很有帮助。谢谢

<?php
$sql = "
SELECT a.id_kgt
     , a.nama_kgt
     , a.ket
     , a.tg_mulai
     , a.tg_akhir
     , a.nm_pengirim
     , a.file
     , b.nmpilih AS indi01
     , c.nmpilih AS indi02
     , d.nmpilih as indi03 
  FROM kegiatan a 
  JOIN pilihan b 
    ON b.kdpilih = a.indi01 
  JOIN pilihan c 
    ON c.kdpilih = a.indi02 
  JOIN pilihan d 
    ON d.kdpilih = a.indi03 
 ORDER 
    BY a.id_kgt ASC
 ";
      $result = mysqli_query($conn, $sql);
      $no = 1;
      if (mysqli_num_rows($result) > 0)
      {
        while ($data = mysqli_fetch_array($result))
        {
          echo "<tr>
                  <td>".$data['id_kgt']."</a></td>
                  <td>".$data['nama_kgt']."</a></td>
                  <td>".$data['ket']."</td>
                  <td>".tglindo($data['tg_mulai'])."</td>
                  <td>".tglindo($data['tg_akhir'])."</td>
                  <td>".$data['indi01'].", ".$data['indi02'].", ".$data['indi03']."</td>
                  <td>".$data['nm_pengirim']."</td>
                  <td>
                    <a href='".$data['file']."'>Download</a>   
                    <a href='kegiatan_ubah.php?id_file=$data[id_kgt]'>Ubah</a>   
                    <a href='kegiatan_hapus.php?id_file=$data[id_kgt]'>Hapus</a>
                  </td>
                </tr>";
                $no++;
        }
      }
      else
        {
          echo "No data.";
        }

【问题讨论】:

  • 我在 sql 中看不到任何受用户输入影响的内容 - 即:没有 where 子句 - 那么这个问题在哪里/如何表现出来?
  • 我不使用 where 因为我想显示那 2 个表中的所有数据,但实际上它只显示 db 中的 3 个字段:indi01、indi02、indi03

标签: php mysql jointable


【解决方案1】:

如果要显示其他表的数据不做join,可以考虑left join。

干杯

【讨论】:

  • 当我使用左连接时,它会在 pilihan 表上显示来自 kdpilih 的数字。先生,您能给我正确的查询吗?
【解决方案2】:

已解决 我使用这个魔法:

"SELECT a.id_kgt, a.nama_kgt, a.ket, a.tg_mulai, a.tg_akhir, a.nm_pengirim, a.file, 
      b.nmpilih as indi01, c.nmpilih as indi02, d.nmpilih as indi03, e.nmpilih as indi04, f.nmpilih as indi05, 
      g.nmpilih as indi06, h.nmpilih as indi07, i.nmpilih as indi08, j.nmpilih as indi09, k.nmpilih as indi010 
      FROM kegiatan a 
      LEFT JOIN pilihan b ON b.kdpilih = a.indi01 LEFT JOIN pilihan c ON c.kdpilih = a.indi02 
      LEFT JOIN pilihan d ON d.kdpilih = a.indi03 LEFT JOIN pilihan e ON e.kdpilih = a.indi04 
      LEFT JOIN pilihan f ON f.kdpilih = a.indi05 LEFT JOIN pilihan g ON g.kdpilih = a.indi06
      LEFT JOIN pilihan h ON h.kdpilih = a.indi07 LEFT JOIN pilihan i ON i.kdpilih = a.indi08 
      LEFT JOIN pilihan j ON j.kdpilih = a.indi09 LEFT JOIN pilihan k ON k.kdpilih = a.indi010 
      ORDER BY a.id_kgt ASC"

【讨论】:

    猜你喜欢
    • 2017-11-29
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多