使用单选按钮从PHP查询中获取数据

时间:2016-03-17 00:40:17

标签: php

我有一个随机聊天功能,允许用户根据用户设置的参数随机配对。参数是年龄(最小值:17,最大值:50)和性别(可以与男性,女性或任何没有偏好的任何人聊天)。

单击提交时,如果无线电值为malefemale,则很容易设置查询,因为这些是我存储在数据库中的值,但我不确定如何如果值为any,则可以将某人与另一人配对。

以下是单选按钮:

<input type="radio" name="gender" value="male">Male</input> <br />
<input type="radio" name="gender" value="female">Female</input><br />
<input type="radio" name="gender" value="any">Any</input>
<input type="submit" class="btn btn-info" name="submit" value="Click to start chat! " />

P.S。单选按钮处于一种形式但没有动作。

<form action="#" method="POST" enctype="multipart/form-data">

到目前为止,这是我的方法:

<?php
$age_from = @$_POST['age_from'];
$age_to = @$_POST['age_to'];
$gender = strip_tags(@$_POST['gender']);

if (isset ($_POST ['submit'])){
        // Chat with parameters script
        $any_chat = mysqli_query($connect, "SELECT * FROM users WHERE age BETWEEN '$age_from' AND '$age_to' AND gender = '$gender' 
                                            ORDER BY RAND() LIMIT 1");
        $num_of_rows = mysqli_num_rows ($any_chat);
        while ($get_any_rand_user = mysqli_fetch_assoc($any_chat)){
            $rand_name = $get_any_rand_user['username'];
            $acc_type = $get_any_rand_user['account_type'];

            if ($acc_type != "admin" ){ 
                if ($rand_name == $username){
                    $any_chat;
                    } else{
                        header ("Location: /messages.php?u=$rand_name");
                    }
            }       
            if ($num_of_rows == 0){
                echo "No results found. Try changing your query.";
                }
        } // while closed
}
?>

正如您在查询gender = '$gender'中看到的那样,如果性别为男性或女性(因为它们是数据库中的值),则只能检索一行。但是,如果选择any,则$gender将等于any,这是无效的,因为他们在我的系统中没有任何性别的用户。

我怎样才能解决这个问题?

2 个答案:

答案 0 :(得分:0)

我会做这样的事情。创建一个变量来存储您的查询,并仅在$gendermalefemale时添加性别条件。

<?php
$age_from = @$_POST['age_from'];
$age_to = @$_POST['age_to'];
$gender = strip_tags(@$_POST['gender']);

if (isset ($_POST ['submit'])){
        // Chat with parameters script

        $sql = "
            SELECT * 
            FROM users 
            WHERE age BETWEEN '$age_from' AND '$age_to' 
        ";
        if (!empty($gender) && ($gender == 'male' || $gender == 'female')) {
            $sql .= " AND gender = '$gender' ";
        }
        $sql .= " ORDER BY RAND() LIMIT 1 ";
        $any_chat = mysqli_query($connect, $sql);
        $num_of_rows = mysqli_num_rows ($any_chat);
        while ($get_any_rand_user = mysqli_fetch_assoc($any_chat)){
            $rand_name = $get_any_rand_user['username'];
            $acc_type = $get_any_rand_user['account_type'];

            if ($acc_type != "admin" ){ 
                if ($rand_name == $username){
                    $any_chat;
                    } else{
                        header ("Location: /messages.php?u=$rand_name");
                    }
            }       
            if ($num_of_rows == 0){
                echo "No results found. Try changing your query.";
                }
        } // while closed
}
?>

答案 1 :(得分:0)

     if (isset ($_POST ['submit'])){
    // Chat with parameters script
    $sql_builder = "SELECT * FROM users WHERE age BETWEEN '$age_from' AND '$age_to'";
    if($gender != 'any'){
      $sql_builder .= "AND gender = $gender";
    }      
     $sql_builder .= "ORDER BY RAND() LIMIT 1";   
    $any_chat = mysqli_query($connect, $sql_builder);