即使没有图片,也可以显示数据库中的所有项目

时间:2014-06-04 10:11:49

标签: php database select where

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

表' artikel'和'图像'

两个表都有一个相互链接的密钥: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>";
?>

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

一种方法是使用左连接。

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

打破写from artikel, images之类的习惯;这不是1989年。使用ANSI连接。

另一种方法是保证每一行都有一个图像。使用默认图像(以及表中的“not null”约束的默认值)。它可能只是一个渐变的文字“即将拍摄”。