在php mysql上显示2个表的数据

时间:2015-08-19 22:28:26

标签: php mysql jointable

我在显示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.";
        }

2 个答案:

答案 0 :(得分:0)

如果要显示其他表上的数据不进行连接,可以考虑使用左连接。

干杯

答案 1 :(得分:0)

解决 我用这个魔法:

"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"