亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 PHP 讀取和排序用戶的下拉菜單

使用 PHP 讀取和排序用戶的下拉菜單

PHP
瀟瀟雨雨 2021-06-15 13:13:48
我正在做一個項目,我需要在用戶中閱讀(我使用 MySQL)并且能夠排序 1. 男性/女性 2. 薪水(例如 30k+、50k+、100k+...)我試過設置一個選擇下拉菜單,但由于某種原因,它只顯示男性,即使我選擇了女性。<form action="#" method="post">      <select name="Gender">         <option value=''>Select Gender</option>         <option value="Men">Men</option>         <option value="Women">Women</option>      </select>   <input type="submit" name="submit" value="Get Selected Values" /></form>if(isset($_POST['submit']) && $_POST['submit'] = "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['submit'] = "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("-");}
查看完整描述

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

        }

    }

}


查看完整回答
反對 回復 2021-06-19
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

由于在我之前提供了一個宏偉的答案,現在這只是要審查的內容。

如果您查看表單,則有兩個元素。在提交時,您的腳本將看到..

  1. 性別 - $_POST['Gender'] 將是 ''、'Men' 或 'Women'

  2. 提交 - $_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 結構。我會把它留給你查查。


查看完整回答
反對 回復 2021-06-19
  • 2 回答
  • 0 關注
  • 166 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號