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

正しければ、次のようにコードを変更することをお勧めします。

$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 に答える
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 に答える