-1

この単純な検証の問題は、私を少し狂わせています! 私はそれを私が学んできた他の例の山と比較していますが、私はそれを得ることができません...

プログラムに「すべてのフィールドに記入してください」という簡単なメッセージを返させようとしています。ユーザーが送信時にフィールドを空白のままにした場合。そのコードには決して到達しません。私は他の同様の例を持っているので、それは私が見逃している本当に単純なものでなければなりません. 「if (!empty...)」ブロックの後に「else」ステートメントに到達しない理由を教えてもらえますか?

<?php

//PHPAcademy.org Tutorial on PDO

$config['db'] = array(
    'host'      =>  'localhost',
    'username'  =>  'root',
    'password'  =>  'andrew',
    'dbname'    =>  'a_database'
);

$db = new PDO('mysql:host=' . $config['db']['host'] . ';dbname=' . $config['db']['dbname'], $config['db']['username'], $config['db']['password']);

if (isset($_POST['food']) && isset($_POST['calories']) && isset($_POST['healthy_unhealthy'])) {
    $food = $_POST['food'];
    $calories = $_POST['calories'];
    $healthy_unhealthy = $_POST['healthy_unhealthy'];

    echo $food . $calories . $healthy_unhealthy;

    if (!empty($food) && !empty($calories) && !empty($healthy_unhealthy)) {
        $query = $db->prepare("INSERT INTO food (food, calories, healthy_unhealthy) VALUES (:food, :calories, :healthy)");
        $query->bindValue(':food', $food);
        $query->bindValue(':calories', $calories);
        $query->bindValue(':healthy', $healthy_unhealthy);

        if ($query->execute()) {
            echo '<br /><strong>Record Added!</strong><br />';
        } else {
            echo '<br />Oh no, there was a problem!<br />';
        }
    } else {
        echo 'Please complete all fields.';
    }
}


?>

<form action="connect.php" method="POST">
    Food Type: <br />
    <input type="text" name="food"/><br /><br />
    Calories: <br />
    <input type="number" min="0" name="calories"/><br /><br />
    Healthy/Unhealthy? <br />
    <input type="radio" name="healthy_unhealthy" value="h"/>Healthy<br />
    <input type="radio" name="healthy_unhealthy" value="u"/>Unhealthy<br /><br />
    <input type="submit" value="Submit" />
</form>

isset も null 値をチェックするという事実に関係していると思いましたが、以下の例ではすべて完全に機能し、違いがわかりません...

<?php

// Pilot Name, Currency Name, Currency Date, Interval (minutes)

if (isset($_POST['pilot']) && isset($_POST['currency']) && isset($_POST['last_date']) &&
        isset($_POST['interval'])) {
            $pilot = $_POST['pilot'];
            $currency = $_POST['currency'];
            $last_date = strtotime($_POST['last_date']);
            $interval = $_POST['interval'];

    if (!empty($pilot) && !empty($currency) && !empty($last_date) &&
            !empty($interval)) {

        echo 'Hello <strong>' . $pilot . '</strong>, your ' . $currency . ' is due on ' . date('d-m-y', $last_date + ($interval * 24 * 60 * 60)) .
            '<br />';
        echo 'Your last currency was ' . date('d-m-Y', $last_date) . '<br /><br />';

        } else {
            echo 'Please complete all fields.';
        }
}




?>

<form action="currency.php" method="POST">
    Enter your name:<br />
    <input type="text" name="pilot"/><br/>
    Enter the last date of your currency (dd-mm-yy):<br />
    <input type="date" name="last_date"/></br/>
    Enter the currency type:<br />
    <input type="text" name="currency"/><br/>
    Enter the currency interval in days: <br />
    <input type="text" name="interval"/><br/>
    <input type="submit" value="submit">
</form>

アドバイスをありがとう...

4

5 に答える 5

-3

特定のifステートメントの条件は常に評価されるためTRUEです。

于 2013-08-11T08:41:55.063 に答える