我有一个数据库,可以将所有库存商品存储在#个插槽中。项目的值范围为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);
}
答案 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);
}