图片显示if语句

时间:2013-12-09 20:34:08

标签: php

我有一个数据库,可以将所有库存商品存储在#个插槽中。项目的值范围为1-50。每个值表示存储在服务器上的图片。这是我写的代码,它将显示x图片,具体取决于数据库中列出的值。虽然这段代码有用,但我想知道是否有人可以给我一个更好的方法来编写这段代码,因为如果我有50个项目,我将根据有多少库存槽可用而拥有超过6000行代码。

require_once 'includes/database.php';
$query = mysql_query("SELECT * FROM inventory WHERE username '".$_SESSION['username']."'"); 
while($row = mysql_fetch_array($query)) 
$inv1 = $row["inv1"];

if($inv1 == 1) {
$inv1a = '<img src="images/armor/1.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 2) {
$inv1a = '<img src="images/armor/2.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 3) {
$inv1a = '<img src="images/armor/3.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 4) {
$inv1a = '<img src="images/armor/4.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 5) {
$inv1a = '<img src="images/armor/5.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 6) {
$inv1a = '<img src="images/armor/6.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 7) {
$inv1a = '<img src="images/armor/7.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 8) {
$inv1a = '<img src="images/armor/8.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 9) {
$inv1a = '<img src="images/armor/9.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 10) {
$inv1a = '<img src="images/armor/10.png">';
$smarty->assign('inv1a',$inv1a);
}

3 个答案:

答案 0 :(得分:3)

这样的事情可能(实际上我不知道你的代码甚至应该做什么,这可能根本不起作用):

while ($row = mysql_fetch_array($query)) {
    $inv1 = $row["inv1"];
    $inv1a = '<img src="images/armor/'.$inv1.'.png">';
    $smarty->assign('inv1a',$inv1a);
}

答案 1 :(得分:0)

像这样写:

require_once 'includes/database.php';
$query = mysql_query("SELECT * FROM inventory WHERE username '".$_SESSION['username']."'"); 
while($row = mysql_fetch_array($query)) {
    $inv1 = $row["inv1"];
    $inv1a = '<img src="images/armor/'. intval($inv1). '.png">';
    $smarty->assign('inv1a', $inv1a);
}

我在$ inv1周围使用intval,因为我假设你只从数据库中获取整数。

如果不是这种情况,请将更改intval($inv1)移至$inv1

函数intval将输入转换为整数,这将防止可能的XSS攻击,如故意命名为“index.php.png”的文件

每次计划在网页中使用时都会清理输出,并确保您正在加载您希望加载的内容。

答案 2 :(得分:0)

您可以尝试以下方式:

while($row = mysql_fetch_array($query)){ 
    $inv1 = $row["inv1"];
    $inv1a = "<img src='images/armor/" . $inv1 . ".png'>";
    $smarty->assign('inv1a',$inv1a);
}

此代码假设图像只能在 armor 目录中找到。但是,如果需要在图像类型之间切换,可以将其设置为变量,如下所示:

$itemType = "armor";

while($row = mysql_fetch_array($query)){ 
    $inv1 = $row["inv1"];
    $inv1a = "<img src='images/" . $itemType . "/" . $inv1 . ".png'>";
    $smarty->assign('inv1a',$inv1a);
}