1.新しく登録されたユーザー順に抽出(mysqlのidをorder by id desc)
2.ログイン中のユーザーと同じ登録エリアかつ年齢が同じなら、id x 1.3 のスコア
3.ログイン中のユーザーと同じ登録エリアなら、 id x 1.2 のスコア
4.ログイン中のユーザーと同じ年齢なら id x 1.1 のスコア
5.array_multisortでスコア順にソート
6.ログイン中のユーザーと異なる異性をスコア順に表示
※新しく登録された同じエリア・年齢のユーザーが上に表示されやすくなる
<style>
#fs-s{
font-size:small;
color:gray;
}
#icon{
vertical-align:top;
float:left;
}
#profile{
display: inline;
}
</style>
<?php
session_start();
$username = $_SESSION["username"];
$dsn = "mysql:dbname=mail;host=localhost";
$user = "hoge";
$password = "hogehoge";
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e){
print('connection failed:'.$e->getMessage());
}
$sql = "select * from users order by id desc";
$stmt = $dbh->query($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// var_dump($result);
$sql2 = "select * from users where username = '".$username."'";
$stmt2 = $dbh->query($sql2);
$result2 = $stmt2->fetch(PDO::FETCH_ASSOC);
$gender = $result2["gender"];
$area = $result2["area"];
$age = $result2["age"];
$i = 0;
foreach($result as $value){
if($value["area"] == $area){
if($value["age"] == $age){
$result[$i]["score"] = (int)$value["id"] * 1.3;
$score[$i] = $result[$i]["score"];
} else{
$result[$i]["score"] = (int)$value["id"] * 1.2;
$score[$i] = $result[$i]["score"];
}
} else {
if($value["age"] == $age){
$result[$i]["score"] = (int)$value["id"] * 1.1;
$score[$i] = $result[$i]["score"];
} else{
$result[$i]["score"] = (int)$value["id"];
$score[$i] = $result[$i]["score"];
}
}
$i++;
}
array_multisort($score, SORT_DESC, $result);
switch($gender){
case '男性':
$img = "asset/img/female.png";
break;
case '女性':
$img = "asset/img/male.png";
}
$i = 0;
foreach($result as $value){
if($gender != $value['gender']){
echo "<img src=\"".$img."\" id=\"icon\">";
echo "<div id=\"profile\"><a href=\"\">".$value['username'] ."</a>:".$value['age']." <span id=\"fs-s\">".$value['gender'] ."</span><br>";
echo $value['job']."(".$value['area'].")</div><br><br>";
}
$i++;
}
?>
神奈川県 男性 25-29歳がログインしていた場合

つなげると、

名前をクリックすると、相手にメールを送れるようにする。
foreach($result as $value){
if($gender != $value['gender'] and $i < 10){
echo "<img src=\"".$icon."\" id=\"icon\">";
echo "<div id=\"profile\"><a href=\"?compose=new&to=".$value['username']."\">".$value['username'] ."</a>:".$value['age']." <span id=\"fs-s\">".$value['gender'] ."</span><br>";
echo $value['job']."(".$value['area'].")</div><br><br>";
$i++;
}
}

女性で登録してログインした場合

送信後

あれあれあれ?もしかして、結構できてきた!???
プロフィール編集画面をつくって、「プロフィール写真」と「一言メッセージ」を加えて、法律とセキュリティを見直したら、基本的なところはほぼ完成か?
