我有一个随机聊天功能,允许用户根据用户设置的参数随机配对。参数是年龄(最小值:17,最大值:50)和性别(可以与男性,女性或任何没有偏好的任何人聊天)。
单击提交时,如果无线电值为male
或female
,则很容易设置查询,因为这些是我存储在数据库中的值,但我不确定如何如果值为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
,这是无效的,因为他们在我的系统中没有任何性别的用户。
我怎样才能解决这个问题?
答案 0 :(得分:0)
我会做这样的事情。创建一个变量来存储您的查询,并仅在$gender
为male
或female
时添加性别条件。
<?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);