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 關注
- 166 瀏覽
添加回答
舉報