Casey118

На Пикабу
рейтинг 0 подписчиков 0 подписок 1 пост 0 в горячем
Награды:
10 лет на Пикабу

Facemash своими руками

О Facemash.com Вы наверняка могли слышать из фильма «Социальная сеть»: это именно тот проект, который принес славу Марку Цукербергу и сподвиг его начать работу над Facebook. Сейчас мы попытаемся создать свой Facemash. Тег Рекомендую использовать программу Notepad++, лично мне в ней работать очень удобно и приятно.



Итак, создаем «Rate.php»



include('mysql.php');


include('functions.php');



if ($_GET['winner'] && $_GET['loser']) {



$result = mysql_query("SELECT * FROM images WHERE image_id = ".$_GET['winner']." ");


$winner = mysql_fetch_object($result);



$result = mysql_query("SELECT * FROM images WHERE image_id = ".$_GET['loser']." ");


$loser = mysql_fetch_object($result);



$winner_expected = expected($loser->score, $winner->score);


$winner_new_score = win($winner->score, $winner_expected);


//test print "Winner: ".$winner->score." - ".$winner_new_score." - ".$winner_expected."<br>";


mysql_query("UPDATE images SET score = ".$winner_new_score.", wins = wins+1 WHERE image_id = ".$_GET['winner']);



$loser_expected = expected($winner->score, $loser->score);


$loser_new_score = loss($loser->score, $loser_expected);


//test print "Loser: ".$loser->score." - ".$loser_new_score." - ".$loser_expected."<br>";


mysql_query("UPDATE images SET score = ".$loser_new_score.", losses = losses+1 WHERE image_id = ".$_GET['loser']);



mysql_query("INSERT INTO battles SET winner = ".$_GET['winner'].", loser = ".$_GET['loser']." ");



header('location: /');



}



?>



Затем прописываем «MySQL.php»



// Настройки MySQL


$user = "";


$password = "";


$database = "";


$host = "";


mysql_connect($host,$user,$password);


mysql_select_db($database) or die( "Unable to select database");


?>



Теперь «install_images.php»



include('mysql.php');


if ($handle = opendir('images')) {


/* This is the correct way to loop over the directory. */


while (false !== ($file = readdir($handle))) {


if($file!='.' && $file!='..') {


$images[] = "('".$file."')";


}


}


closedir($handle);


}


$query = "INSERT INTO images (filename) VALUES ".implode(',', $images)." ";


if (!mysql_query($query)) {


print mysql_error();


}


else {


print "finished installing your images!";


}



?>



Теперь можно сделать и «index.php»



include('mysql.php');


include('functions.php');



// Get random 2


$query="SELECT * FROM images ORDER BY RAND() LIMIT 0,2";


$result = @mysql_query($query);


while($row = mysql_fetch_object($result)) {


$images[] = (object) $row;


}



// Get the top10


$result = mysql_query("SELECT *, ROUND(score/(1+(losses/wins))) AS performance FROM images ORDER BY ROUND(score/(1+(losses/wins))) DESC LIMIT 0,10");


while($row = mysql_fetch_object($result)) $top_ratings[] = (object) $row;



// Close the connection


mysql_close();



?>



<title>Facemash</title>



body, html {font-family:Arial, Helvetica, sans-serif;width:100%;margin:0;padding:0;text-align:center;}


h1 {background-color:#600;color:#fff;padding:20px 0;margin:0;}


a img {border:0;}


td {font-size:11px;}


.image {background-color:#eee;border:1px solid #ddd;border-bottom:1px solid #bbb;padding:5px;}



<h1>FaceMash</h1>


<h2>Кто горячее? Выбирай.</h2>



<td>Won: <?=$images[0]->wins?>, Lost: <?=$images[0]->losses?></td>


<td>Won: <?=$images[1]->wins?>, Lost: <?=$images[1]->losses?></td>



<td>Score: <?=$images[0]->score?></td>


<td>Score: <?=$images[1]->score?></td>



<td>Expected: <?=round(expected($images[1]->score, $images[0]->score), 4)?></td>


<td>Expected: <?=round(expected($images[0]->score, $images[1]->score), 4)?></td>



<h2>Top Rated</h2>



<td valign="top">Score: <?=$image->score?></td>



<td valign="top">Performance: <?=$image->performance?></td>



<td valign="top">Won: <?=$image->wins?></td>



<td valign="top">Lost: <?=$image->losses?></td>



*/ ?>



И напоследок пропишем функции: «functions.php»



/ / Вычислить ожидаемый результат%


Ожидается функцию ($ Rb, Ra $) {


возвращает 1 / (1 + ПР (10, ($ $ Rb-Ra) / 400));


}


/ / Вычислить новую оценку winnner


Функция выигрыша ($ оценка, $ ожидалось, $ K = 24) {


вернуть $ оценка + $ K * (1 - $ ожидалось);


}


/ / Вычислить новую счетом проиграл


функция потерь ($ оценка, $ ожидалось, $ K = 24) {


вернуть $ оценка + $ K * (0 - $ ожидалось);


}


>



Заливаем все файлы на хостинг сайта. После этого создаем папку «images», но пока не загружаем в нее фотографии. Залезаем в phpMyAdmin и создаем таблицу:



CREATE TABLE IF NOT EXISTS `battles` ( `battle_id` bigint(20) unsigned NOT NULL auto_increment, `winner` bigint(20) unsigned NOT NULL, `loser` bigint(20) unsigned NOT NULL, PRIMARY KEY (`battle_id`), KEY `winner` (`winner`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `images` ( `image_id` bigint(20) unsigned NOT NULL auto_increment, `filename` varchar(255) NOT NULL, `score` int(10) unsigned NOT NULL default '1500', `wins` int(10) unsigned NOT NULL default '0', `losses` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`image_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;;



Отлично, теперь залезаем в MySQL.php и заполняем поля:



$user = ""; $password = ""; $database = ""; $host = ""



Теперь заливаем фотографии в папку images, и «устанавливаем их». Вот и все. Наш собственный Facemash готов к использованию. Если у вас возникнут вопросы — пишите, постараюсь вам помочь. Спасибо за внимание :)

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества