2 回答
TA贡献1895条经验 获得超3个赞
您已经在ifs 中分配了值,而不是与它们进行比较。此外,您使用了错误的输入进行比较。$_POST['submit']将始终包含值Get Selected Values。
if (isset($_POST['submit']) && $_POST['Gender'] === "Men") {
$selected_val = $_POST['Gender'];
echo "You have selected :" . $selected_val;
$conn = create_Conn();
$sql = "SELECT * FROM users WHERE kon='Man'";
$result = $conn->query($sql);
if (isset($_SESSION['anvnamn'])) {
while ($row = $result->fetch_assoc()) {
//Prints user data
}
} else {
while ($row = $result->fetch_assoc()) {
//Prints user data but emails
}
}
} elseif (isset($_POST['submit']) && $_POST['Gender'] === "Women") {
$selected_val = $_POST['Gender'];
echo "You have selected :" . $selected_val;
$conn = create_Conn();
$sql = "SELECT * FROM users WHERE kon='Woman'";
$result = $conn->query($sql);
if (isset($_SESSION['anvnamn'])) {
while ($row = $result->fetch_assoc()) {
//Prints user data
}
} else {
while ($row = $result->fetch_assoc()) {
//Prints user data but emails
}
}
} else {
print("-");
}
这里的代码更简单,冗余更少。并假设您使用的是 PHP PDO。
if (strtolower($_SERVER['REQUEST_METHOD']) === 'post') {
$gender = $_POST['Gender'] ?? null; // your old $selected_val variable
if (!$gender) {
// do something to abort the execution and display an error message.
// for now, we're killing it.
print '-';
exit;
}
/** @var PDO $dbConnection */
$dbConnection = create_Conn();
$sql = 'SELECT * FROM users WHERE kon = :gender';
$stmt = $dbConnection->prepare($sql);
$stmt->bindParam('gender', $gender);
$stmt->execute();
foreach ($stmt->fetchAll() as $user) {
if (isset($_SESSION['anvnamn'])) {
// Prints user data
} else {
// Prints user data but emails
}
}
}
TA贡献1810条经验 获得超4个赞
由于丹在我之前提供了一个宏伟的答案,现在这只是要审查的内容。
如果您查看表单,则有两个元素。在提交时,您的脚本将看到..
性别 - $_POST['Gender'] 将是 ''、'Men' 或 'Women'
提交 - $_POST['submit'] 将为空或值“获取选定值”。如果 php 文件被其他东西调用,它只能为 null。
您可以通过在第一个 if() 之前在代码中使用命令 print_r($_POST) 来查看这一点。这允许您测试和检查调试期间实际发布的内容。
因此,要查看表单是否已发布,您可以使用外部检查提交代码,然后检查 Gender 的状态。
以下是对 IF() 的更正,以及一些对代码进行整理的建议。
<?php
// Process the form data using Ternary operators
// Test ? True Condition : False Condition
$form_submitted = isset($_POST['submit'])? $_POST['submit']:FALSE;
$gender = isset($_POST['Gender'])? $_POST['Gender']:FALSE;
if($form_submitted){
if($gender == 'Men') {
// Stuff here
}
else if($gender == 'Women') {
// Stuff here
}
else {
print("-");
}
} else {
// Optional: Case where the form wasn't submitted if other code is present.
}
您也可以考虑使用 switch / case 结构。我会把它留给你查查。
- 2 回答
- 0 关注
- 137 浏览
添加回答
举报