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++; } }
女性で登録してログインした場合
送信後
あれあれあれ?もしかして、結構できてきた!???
プロフィール編集画面をつくって、「プロフィール写真」と「一言メッセージ」を加えて、法律とセキュリティを見直したら、基本的なところはほぼ完成か?