0

次のコードに問題があります。変数 $houseid は、2 番目の if ステートメントでは空として表示されますが、最初の if ステートメントでは呼び出すことができます。2 番目の if ステートメントで $houseid 変数に到達する必要があります。if と最初の両方の外側でテストしましたが、両方で正常に動作するようです。

$landlordid = $_SESSION['landlordid'];

$con = mysqli_connect("mysql1616int.cp.blacknight.com","***","***","***"); // Connect to the MySQL server

$mysql = mysqli_query($con, "SELECT * FROM houseInfo WHERE landlordID = '{$landlordid}'");


    echo '<form method="POST" action=""><select name="pickhouseid">';

    while($row = mysqli_fetch_array($mysql)){
      echo '<option value="' . $row['houseID'] . '">'. $row['housename'] . '</option>';
      }

    echo '</select> 
    <input type="submit" name="houseselect"  value="Select">
    </form>';
    echo "<br>";

    $houseid = $_POST['pickhouseid']; ///where house is set.

    if(isset($_POST['houseselect'])){
    echo "<form method='POST' action=''><select name='services'><option value='gas1'>Gas Reading</option>
            <option value='water1'>Water Reading</option><option value='elec1'>Electricity Reading</option>
            </select><input type='submit' value='Select'></form>";

    echo "<br>";
    echo $houseid; /// returns correct value
    }
    if (($_POST['services']) == 'gas1') { 
    echo "something";
    echo $houseid; ///doesn't work, appears as empty.
    }

誰でもこの問題を解決できますか? ありがとうございました。

4

2 に答える 2

3

フォームはこのフォームの内容のみを送信し、ページ上の別のフォームの内容は送信しません。

$houseid(あなたの最後の if) はNULLエコーするようになり、何も出力されないはずです。

そのため、 に関する情報を$houseid他のフォームに追加します。$_POSTデータは複数のリクエストを通過しません。

echo "<form method='POST' action=''><select name='services'><option value='gas1'>Gas Reading</option>
        <option value='water1'>Water Reading</option><option value='elec1'>Electricity Reading</option>
        </select><input type='submit' value='Select' />
        <input type='hidden' value='$houseid' name='houseid' /> <!-- here was added -->
       </form>";
于 2013-04-23T12:39:12.143 に答える
0

うわー、それは可能ですか?条件が false を返す場合を除いて、$houseid が空を返す必要がある理由はわかりません。if ステートメント ブロックで他の何か (文字列) をエコーし​​てみて、それが表示されるかどうかを確認してください。if ステートメントはとにかく false を返すと思います。

于 2013-04-23T12:39:57.453 に答える