В рамках моего маленького проекта твиттер-рейтинга, я ознакомился с базами данных и их использованием в PHP. Сперва почитал про мускул (MySQL) и прикинул, как может выглядеть моя база данных. В принципе, я не хочу туда много пихать. Ведь все данные твитерянина мы будем получать из XML-файла, предоставленного твиттером и которая формируется одинакого для всех, отличаясь только ником пользователя. Нету надобности данные, как, например, количество фолловеров, сохранять в базе данных. Это только вызывает надобность обновлять эти данные. А оно мне нафиг не надо, будет ловить данные "на лету", имея только ник пользователя на твиттере. Помимо ника я напридумывал ещё 4 поля. Дата регистрации в рейтинге, тут всё ясно, будет передаваться мускулу функцией PHP NOW(). Электронная почта для обратной связи, её ещё и на правильность проверять надо, существует ли такой сервер и т. д. Обратная ссылка будет условием регистрации в рейтинге, и её проверять придётся. И последнее поле, это активирован ли этот участник в рейтинге. При регистрации в это поле будет вписываться нулик, а после модерации однёрочка. А в рейтинге будут выводится те участники рейтинга, у которых в том поле стоит однёрочка. В теории всё ясно, теперь к практике. Сперва создаём базу данных. Code CREATE DATABASE `twitter`; Теперь создаём таблицу с пяти полями - дата регистрации, ник, мыло, обратная ссылка и поле для модерации. Code CREATE TABLE `twitter`.`user`( `regdate` DATE NOT NULL, `user_name` VARCHAR( 50 ) PRIMARY KEY, `email` VARCHAR( 50 ) NOT NULL, `backlink` VARCHAR( 100 ) NOT NULL, `activated` INT NOT NULL); Наша база данных готова! Теперь попробуем к ней подключиться. Задаём в начале название сервера, название базы данных, имя пользователя и пароль. Code $sdb_name="localhost"; //сервер $db_name="twitter"; //название базы данных $user_name="root"; //имя пользователя $db_password=""; //пароль Соединяемся с сервером. На случай, что соединиться не возможно, выводим сообщение об этом. Code if(!$db = mysql_connect($sdb_name, $user_name, $db_password)) { echo "Не могу соединиться с сервером!<br/>"; exit(); } Соединяемся с базой данных. Опять выводим сообщение, если соединиться не удалось. Code if(!mysql_select_db($db_name, $db)) { echo "Не могу соединиться с базой данных!<br/>"; exit(); } Задаём данные пользователя на твиттере. Code $usename = "RealyMoney"; $email = "realymoney@mail.ru"; $backlink = "http://twitter.com/"; Сейчас база данных пуста, но в будущем нам потребуется проверка на дубликаты в базе данных. По этому мы проверяем, есть ли такой пользователь в нашей базе и выводим сообщение, если всётаки есть. Code $result = mysql_query("SELECT count(*) FROM `user` WHERE username = '$username';", $db); $row = mysql_fetch_array($result, MYSQL_NUM); if($row[0] != 0) { echo "В рейтинге уже есть участник с ником $username"; } Теперь добавляем новую запись. Ник, мыло и обратная ссылка заданы выше, а время регистрации передаётся через функцию NOW(), ну и нолик в предачу. Code $str_sql_query = "INSERT INTO `twitter`.`user` (`regdate` ,`username` ,`email` ,`backlink` ,`activated`) VALUES (NOW(), '$username', '$email', '$backlink', '0');"; Выводим сообщение, если новую запись добавить не удалось. Code if(!$result = mysql_query($str_sql_query, $db)) { echo "Ошибка при добавлении участника в базу данных!<br/>"; exit(); } else echo "Новый участник был добавлен в базу данных!<br/> После проверки модератором он появится в рейтинге."; Теперь активируем пользователя, вместо нолика просто вписывается однёрку. Code $str_sql_query = "UPDATE `twitter`.`user` SET `activated` = '1' WHERE `user`.`username` = 'RealyMoney';"; Считаем количество активированных участников рейтинга. Code $result = mysql_query("SELECT count(*) FROM `user` WHERE activated = 1;", $db); $user_count = mysql_fetch_array($result, MYSQL_NUM); Выбираем всех активированных участников рейтига и выводим в цикле. Функция mysql_fetch_array выдаёт по одной строке из базы данных. Строку мы сохраняем в переменной, в массиве $user. Мы имеем доступ к елементам массива таким образом: $user[0] это дата регистрации, $user[1] - ник пользователя, $user[2] - почта, $user[3] - обратная ссылка и $user[4] - активация. В данном случае мы выводим только ник участника рейтинга. Code $result = mysql_query("SELECT * FROM `user` WHERE activated = 1;", $db); for($i = 0; $i < $user_count; $i++) { $user = mysql_fetch_array($result, MYSQL_NUM); echo "$user[1]<br/>"; } Стираем участника рейтинга с ником RealyMoney. Code $str_sql_query = "DELETE FROM `twitter`.`user` WHERE A_NR = 'RealyMoney';"; Закрываем базу данных. Вот так я покорил работу с базами данных в PHP. Что нам Антарктика с Арктикой? Что нам Албания с Польшей?
|