<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Пользователи онлайн
03.11.2011 17:09:25 Пользователи онлайн Сообщение #1
Trust

Trust

Продвинутый

Продвинутый

Дата регистрации:
03.11.2011 17:04:04

Сообщений: 67

Я читал вашу статью, спасибо за нее, немного переосмыслил иерархию построения системы. Но я заступорился, ничего не могу сделать с началом работы. просто нет представления какие писать запросы при обращении к странице. +ко всему хочется чтоб нагрузка на базу не была такой большой. так как при одновременных запросах пусть даже в интервале в 5 минут нагрузка на базу будет достаточно хорошей.


струкрура таблицы users у меня такова:


id
login
password
avatar(в базе хранится лишь адрес к картинке)
email
activation(при регистрации приходит письмо на почту в нем ссылка на сгенерированный запрос в базу на изменение этой таблицы с 0 на 1 , при значении 0, пользователю при попытке войти выдается сообщение о том что таких данных не существует)
date(время регистрации)

Я так понимаю что столбец с онлайном нужно будет включать именно в эту таблицу.

Прошу у вас помощи в реализации.
Профиль Ответить
03.11.2011 17:29:21 Пользователи онлайн Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Вот здесь я писал про реализацию кто онлайн: http://myrusakov.ru/php-who-online.html
То есть нужно создать лучше отдельную таблицу, где держать 3 поля: id, user_id, last_time.
Профиль Ответить
03.11.2011 17:40:24 Пользователи онлайн Сообщение #3
Trust

Trust

Продвинутый

Продвинутый

Дата регистрации:
03.11.2011 17:04:04

Сообщений: 67

Так я ведь сказал что читал ту статью. Знаний мне недостаточно чтоб сделать работу такого масштаба, можно поподробней с запросами в базу на обновление данных в этом столбце и вывод в определенный период этих данных?
Профиль Ответить
03.11.2011 17:43:17 Пользователи онлайн Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

В статье написан алгоритм. А реализация этого алгоритма это уже знание конкретного языка. Если Вы не можете реализовать этот алгоритм, значит, нужно изучать соответствующий язык. В данном случае, PHP и SQL.
Профиль Ответить
03.11.2011 17:45:22 Пользователи онлайн Сообщение #5
Trust

Trust

Продвинутый

Продвинутый

Дата регистрации:
03.11.2011 17:04:04

Сообщений: 67

Это понятно. Я поэтому и пришел к вам на сайт за помощью именно в реализации нескольких строк, вы можете помочь написать их мне? Выше написанное вами я понял.
Профиль Ответить
03.11.2011 17:50:32 Пользователи онлайн Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Когда человек заходит на сайт он автоматически удаляет тем самым всех старых пользователей. Так же он обновляет последнее посещение у себя, либо если его в таблице ещё нет, то добавляется. И так делает каждый человек на сайте. Про обновление записей написано здесь: http://myrusakov.ru/sql-row.html
Профиль Ответить
04.11.2011 17:13:57 Пользователи онлайн Сообщение #7
Trust

Trust

Продвинутый

Продвинутый

Дата регистрации:
03.11.2011 17:04:04

Сообщений: 67

Я послушал вас и сделал сделал такую запись после всех условий и проверок на логин и сесии :

(mysql_query("UPDATE users SET online='online' WHERE login='$login'",$db)

это все работает но...вот когда хочу сделать апдейт строки на ofline и написав такую строку :

mysql_query('UPDATE users SET online='ofline' WHERE login='$login' UNIX_TIMESTAMP(date) > 100',$db)

Работать не хочет и выдает ошибку такого типа:

Parse error: syntax error, unexpected T_STRING in...

Все перерыл, пробовал уже и кавычки внутренние заэкранировать ничего не помогает=( Подскажите что делать?
Профиль Ответить
04.11.2011 18:01:58 Пользователи онлайн Сообщение #8
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

mysql_query('UPDATE users SET online='ofline' WHERE login='$login' UNIX_TIMESTAMP(date) > 100',$db);

Представьте себя на месте PHP, как Вы думаете, где PHP должен взять закрывающую кавычку для первой? 'UPDATE users SET online=' - либо так, либо так 'UPDATE users SET online='ofline', либо так 'UPDATE users SET online='ofline' WHERE login='$login' UNIX_TIMESTAMP(date) > 100'. То же самое относится и к следующей кавычке. Видите, сколько вариантов Вы нагородили для PHP?

На основании этого исправьте запрос так, чтобы у PHP не возникало противоречий. Используйте двойные кавычки, а не только одинарные.
Профиль Ответить
04.11.2011 19:57:18 Пользователи онлайн Сообщение #9
Trust

Trust

Продвинутый

Продвинутый

Дата регистрации:
03.11.2011 17:04:04

Сообщений: 67

Как бы я не пробовал, какие бы я запросы не писал, все к одной ошибке...

Parse error: syntax error, unexpected T_STRING in Z:\home\127.0.0.1\www\index.php on line 30





<?php

session_start();

include ("bd.php";

$query="SELECT count(id) FROM `users`";
$result=mysql_query($query) ;
$num = mysql_fetch_row ($result);


if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password']))
{
if ($_COOKIE['auto'] == 'yes') {
$_SESSION['password']=strrev(md5($_COOKIE['password']))."скрыто от пользователей";
$_SESSION['login']=$_COOKIE['login'];
$_SESSION['id']=$_COOKIE['id'];
}
}

if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{

$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow = mysql_fetch_array($result);
}
(mysql_query("UPDATE users SET online='online' WHERE login='$login'",$db)
mysql_query ('UPDATE FROM users WHERE login="$login",online="online" UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 0";


?>
<html>
<title> Соц сеть=) </title>
Профиль Ответить
04.11.2011 20:10:05 Пользователи онлайн Сообщение #10
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

PHP чётко пишет, где здесь ошибка. Посмотрите поблизости. И увидите, что не хватает точки с запятой в 29-й строке. Вторая ошибка - это 'UPDATE FROM users WHERE login="$login",online="online" UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 0". Вы открываете одинарной кавычкой, а закрываете двойной.
Профиль Ответить