この単純な検証の問題は、私を少し狂わせています! 私はそれを私が学んできた他の例の山と比較していますが、私はそれを得ることができません...
プログラムに「すべてのフィールドに記入してください」という簡単なメッセージを返させようとしています。ユーザーが送信時にフィールドを空白のままにした場合。そのコードには決して到達しません。私は他の同様の例を持っているので、それは私が見逃している本当に単純なものでなければなりません. 「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>
アドバイスをありがとう...