2

我希望我没有重复这个主题我确定它在这里我只是找不到它。

我有一个产品有一堆尺寸,这些尺寸的可用性存储在数据库中,例如 0 = 没有库存,1 和更多 = 有库存。

当不可用时,我希望大小不显示在下拉列表中。当 1 个或更多可用时,它们会显示...我可以在 1 个或更多时显示大小,但在 =“0”时显示“0”,我理解但不知道如何不显示。认为我在那里的解释过于复杂:S

$size_available = "";
$size_6w = $row["size_6w"];
$size_7w = $row["size_7w"];
$size_8w = $row["size_8w"];

$dropdown = "<select class='product-select' name='size' id='size'>";

if ($size_6w > 0) {
    $size_6w = "6w";
}
if ($size_7w > 0) {
    $size_7w = "7w";
}
if ($size_8w > 0)
    $size_8w = "8w";
}

$size=array("$size_6w","$size_7w","$size_8w");

foreach ($size as $size_available)
{
    $dropdown .= "<option value='$size_available'>$size_available</option>";
}

$dropdown .= "\r\n</select>";

输出是一个简单的回声:

echo $dropdown

我应该使用 else 语句吗?如果是这样,你会如何建议我用它来输出什么?

谢谢

4

6 回答 6

4

检查大小是否大于或等于 1,然后才向用户显示选项。

以下是我将如何实现它:

<?php

$sizes = array(
    '6w' => $row["size_6w"],
    '7w' => $row["size_7w"],
    '8w' => $row["size_8w"]
);

$dropdown = "<select class='product-select' name='size' id='size'>";

foreach ($sizes as $size => $available)
{
    if ($available >= 1)
        $dropdown .= "<option value='$size'>$size</option>\n";
}

$dropdown .= "\r\n</select>";
于 2012-10-23T03:25:53.743 回答
2

这就是我要做的。

$sizes = array();
if ($row["size_6w"] > 0) $sizes[] = '6w';
if ($row["size_7w"] > 0) $sizes[] = '7w';
if ($row["size_8w"] > 0) $sizes[] = '8w';

if (!empty($sizes)) {
    $options = "<select class='product-select' name='size' id='size'>\n";
    foreach ($sizes as $size)
        $options .= "<option value='$size'>$size</option>\n";
    $options .= "</select>\n";
} else $options = "<div id='size' class='noResult'>0</div>\n";
于 2012-10-23T03:35:38.250 回答
1

您可以编写一个检查特定值的循环,而不是使用一堆条件$row

// this attempts to simulate the database row data
$row = array(
        'size_6w' => 1,
        'size_7w' => 0,
        'size_8w' => 2,
        'x' => 123, // field thrown in to illustrate the workings
);

$sizes = array();
foreach ($row as $field => $value) {
        // column should start with 'size_' and the value should be more than 0
        if (0 != strncmp($field, 'size_', 5) || !$value) {
                continue;
        }
        $size = substr($field, 5);
        echo sprintf('<option value="%s">%s</option>', $size, $size);
}
于 2012-10-23T03:36:45.643 回答
0
if ($size_6w > 0) {
    $size_6w = "6w";
    array_push($size, "6w");
    }
if ($size_7w > 0) {
    $size_7w = "7w";
    array_push($size, "7w");
    }
if ($size_8w > 0) {
    $size_8w = "8w";
     array_push($size, "8w");
    }

//$size=array("$size_6w","$size_7w","$size_8w");
于 2012-10-23T03:31:02.803 回答
0
$size=array($size_6w,$size_7w,$size_8w);
if(!empty($size))
{
foreach ($size as $size_available)
        {
          if(!empty($size_ailvaable)
          {
            $dropdown .= "<option value='$size_available'>$size_available</option>";
          }
        }
}
}
$dropdown .= "\r\n</select>";
于 2012-10-23T03:31:14.227 回答
0

如果我做对了,您可能希望像这样更改您的代码:

$size = array(); //initialize size array
if ($size_6w > 0) {
    $size_6w = "6w";
    $size[] = $size_6w;
}
if ($size_7w > 0) {
    $size_7w = "7w";
    $size[] = $size_7w;
}
if ($size_8w > 0) {
    $size_8w = "8w";
    $size[] = $size_8w;
}

$size=array("$size_6w","$size_7w","$size_8w"); //remove this line in your code.

$size这样,如果它的值大于 0 ,它只会将大小包含到您的数组中。

于 2012-10-23T03:35:53.600 回答