【问题标题】:Show all items from a database even without a picture即使没有图片也能显示数据库中的所有项目
【发布时间】:2014-07-24 22:35:32
【问题描述】:

我正在制作一个显示我的数据库的网页。我为此使用了 2 个表。

表格'artikel'和'images'

两个表都有一个相互链接的键:A_ARTCODE 和 I_ARTCODE

两个键相同。

现在我遇到了我的密钥没有链接的问题,我看到这是因为我没有使用这个:

WHERE artikel.A_ARTCODE = images.I_ARTCODE

首先我的页面是这样的:click here

当我使用该代码时,我得到了这个:click here

如你所见,现在我的两个 ID 都是正确的。

但我在谈论我的表格,在表格“图片”中我只有 2 张图片。你现在看到的那些,但我的“artikel”表中有大约 383 件物品。

我现在的问题是,如何将它们全部显示出来?即使是没有图片的项目?

这是我的全部 php 代码:

    <?php
include('connect-mysql.php');
if (!empty($_GET["page"])) {
    $page  = $_GET["page"];
} else {
    $page=1;
}; 
$start_from = ($page-1) * 20; 
$sqlget = "SELECT *
FROM artikel, images
WHERE artikel.A_ARTCODE = images.I_ARTCODE
LIMIT $start_from, 20
";


$sqldata = mysqli_query($dbcon, $sqlget) or die('error getting');
define('IMAGE_PATH', 'images/');

$sql = "SELECT COUNT(A_ARTCODE) FROM artikel";
$rs_result = mysqli_query($dbcon, $sql) or die ("mysqli query dies");
$row = mysqli_fetch_row($rs_result) or die ("mysqli fetch row dies");
$total_records = $row[0];

$total_pages = ceil($total_records / 20);

echo "<div class='boven'>";

for ($i=1; $i<=$total_pages; $i++) { 
            echo "<a href='index.php?page=".$i."'>".$i."</a> "; 
};

echo "</div>";

echo "<table>";
echo "<tr><th>A_ARTCODE</th><th>A_NUMMER</th><th>A_OMSCHRN</th><th>A_REFLEV</th><th>A_WINKEL</th><th>I_ARTCODE</th><th>I_FILE</th></tr>";

while($row = mysqli_fetch_array($sqldata)){
    echo "<tr><td align='right'>";
    echo $row['A_ARTCODE'];
    echo "</td><td align='left'>";
    echo $row['A_NUMMER'];
    echo "</td><td align='left'>";
    echo $row['A_OMSCHRN'];
    echo "</td><td align='left'>";
    echo $row['A_REFLEV'];
    echo "</td><td align='right'>";
    echo $row['A_WINKEL'];
    echo "</td><td align='right'>";
    echo $row['I_ARTCODE'];
    echo "</td><td align='right'>";
    echo "<img src='". IMAGE_PATH . $row['I_PATH']. '/' . $row['I_ID']. '.png' ."' />";
    echo "</td></tr>";
    }


echo "</table>";

echo "<div class='onder'>";

for ($i=1; $i<=$total_pages; $i++) { 
            echo "<a href='index.php?page=".$i."'>".$i."</a> "; 
};

echo "</div>";
?>

【问题讨论】:

  • 你应该为此使用LEFT JOIN-sql
  • 是的,非常感谢。您的解决方案非常有效。

标签: php database select where


【解决方案1】:

要实现这个 U 可以使用 LEFT JOIN sql。 这将为您提供文章的所有记录,即使没有为其定义图像

SELECT *
FROM artikel a
LEFT JOIN images i
ON a.A_ARTCODE = i.I_ARTCODE
LIMIT $start_from, 20

【讨论】:

    【解决方案2】:

    一种方法是使用左连接。

    select *
    from artikel
    left join images
    on artikel.A_ARTCODE = images.I_ARTCODE
    LIMIT $start_from, 20;
    

    改掉写from artikel, images之类的东西的习惯;这不是 1989 年。使用 ANSI 连接。

    另一种方法是保证每一行都有一个图像。在表中使用默认图像(以及带有“非空”约束的默认值)。它可能只是一个带有“图片即将推出”文字的渐变。

    【讨论】:

      猜你喜欢
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 2012-01-17
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      相关资源
      最近更新 更多