-1

この特定の質問に対する答えを求めてインターネット全体を見てきましたが、見つけられないようです。基本的に、オプションを選択できる一連のラジオ ボタンとドロップダウン リストがあります。

<form method="get" action="phpindex.php">
    <select name="season">
        <option value="">- Season -</option>
        <option value="spring">Spring</option>
        <option value="summer">Summer</option>
        <option value="fall">Fall</option>
        <option value="winter">Winter</option>
    </select>
    <br /><br />
    <input type="radio" name="beer" value="heavy"/>Heavy
    <br />
    <input type="radio" name="beer" value="light"/>Light
    <br />
    <input type="submit" OnClick="show_alert"/>
</form>

選択の組み合わせに基づいて、送信ボタンをクリックすると特定のステートメントがエコーされます。たとえば、季節として春を選択し、重いビールを選択した場合、それらの選択に基づいてステートメントがエコーされる必要があります。問題は、エコー機能が機能していないことです。ラジオ ボタンとドロップダウン リストの組み合わせが原因だと思います。これが私のPHPと機能していない前述のエコー機能です。

<?php

$beer = $_GET["beer"];
$season = $_GET["season"];
$spring = $_GET["sp"];
$summer = $_GET["summer"];
$fall = $_GET["fall"];
$winter = $_GET["winter"];
$heavy = $_GET["heavy"];
$light = $_GET["light"];


if ( in_array("spring", $season) && in_array("heavy", $beer)  ) {
echo "$state Bud"; } 
if ( in_array("spring", $season) && in_array("light", $beer) ) {
echo "$state Abita"; }
if ( in_array("summer", $season) && in_array("heavy", $beer) ) {
echo "$state Yuengling"; }
if ( in_array("summer", $season) && in_array("light", $beer) ) {
echo "$state Coors"; }
if ( in_array("fall", $season) && in_array("heavy", $beer) ) {
echo "$state PBR"; }
if ( in_array("fall", $season) && in_array("light", $beer) ) {
echo "$state Miller"; }
if ( in_array("winter", $season) && in_array("heavy", $beer) ) {
echo "$state Natty"; }
if ( in_array("summer", $season) && in_array("light", $beer) ) {
echo "$state Kona"; }

$state = "Well, it looks like it's $season, and you want a $beer beer, so try this brew out:";


?>

どんな助けでも大歓迎です!

4

4 に答える 4

0

まず、最初に $state = '...' を指定し、次に if ステートメントを指定する必要があります

$_GET は配列なので in_array を実行できますが、$_GET['beer'] または $_GET['season'] は配列ではありません。

したがって、 $beer と $season は、あなたの場合は配列ではありません。ステートメントを次のように簡単に変更できます。

$state = "Well, it looks like it's $season, and you want a $beer beer, so try this brew out:";
if ( $season == "spring" && $beer == "heavy"  ) {
    echo "$state Bud"; 
} 
....

等々...

そして、あなたはただのコピー&ペーストを期待していると思うので、そこに行ってください:

<?php

$beer = $_GET["beer"];
$season = $_GET["season"];
$spring = $_GET["sp"];
$summer = $_GET["summer"];
$fall = $_GET["fall"];
$winter = $_GET["winter"];
$heavy = $_GET["heavy"];
$light = $_GET["light"];

$state = "Well, it looks like it's $season, and you want a $beer beer, so try this brew out:";

if ( $season == "spring" && $beer == "heavy" ) {
    echo "$state Bud"; 
} 
if ( $season == "spring" && $beer == "light" ) {
    echo "$state Abita"; 
}
if ( $season == "summer" && $beer == "heavy" ) {
    echo "$state Yuengling"; 
}
if ( $season == "summer" && $beer == "light" ) {
    echo "$state Coors"; 
}
if ( $season == "fall" && $beer == "heavy" ) {
    echo "$state PBR";
}
if ( $season == "fall" && $beer == "light" ) {
    echo "$state Miller"; 
}
if ( $season == "winter" && $beer == "heavy" ) {
    echo "$state Natty"; 
}
if ( $season == "summer" && $beer == "light" ) {
    echo "$state Kona"; 
}
于 2012-10-20T23:02:22.203 に答える
0

その文字列を if ステートメントの上の $state に保存します。

$state = .......

if....
if....
于 2012-10-20T22:58:45.747 に答える
0

そこにいくつかの間違いがあります

まず、必要なのは次のとおりです。

$beer = $_GET["beer"];
$season = $_GET["season"];

秋、春などは値であり、GET 引数ではありません。その後、GET の値をチェックして、ビール anme を var に保存します。

if ($beer == 'heavy' && $season == 'spring') $brand= "Bud";
 if ($beer == 'light' && $season == 'spring') $brand= "Abita";
 //ad so on....

$state = "Well, it looks like it's $season, and you want a $beer beer, so try this brew out: $brand";
echo $state;

$state は echo 呼び出しの後に定義されているため、echo $state を使用することはできません。代わりに、brew を var に入れて、すべての if の後に状態文字列に追加します。

乾杯。

于 2012-10-20T23:07:33.717 に答える
-1

$_GETこの方法で使用される要素は、配列ではなく、単純なデータ型のみにすることができます。これは、クエリ文字列の各セグメント ( などq=v) が単一の値を表すように定義されているためです(配列内のvキーを使用) 。q$_GET

以下で指摘されているように、タグの属性に"array[]"が使用されている場合は例外です。この特定のケースでは、 /に配列を作成します。nameinput$_GET$_POST

あなたの場合、値を文字列として直接テストしたい:

if ($season == "spring" && $beer == "heavy")

例えば。

于 2012-10-20T23:04:05.590 に答える