Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: запись координат в БД и извлечение с привязкой к конкретному клиенту
 
 автор: maxmsmax   (27.09.2011 в 11:40)   письмо автору
 
 

Условия:
1. На странице file.php имеются 10 (20...30) картинок с разными id.
2. С помощью имеющегося JS-скрипта клиент может передвигать эти картинки по странице.
3. С помощью имеющегося JS-скрипта абсолютные координаты картинок в момент окончания
их перемещения с помощью технологии AJAX передаются файлу test.php в виде get-строки:
id_картинки&top&left

Задача:
Необходимо сохранить в БД для каждого конкретного клиента (определяемого по IP) координаты
перемещённых им картинок таким образом, чтобы при следующем заходе этого клиента на
страницу file.php картинки получили те координаты, кои были установлены этим клиентом
при последнем его заходе на станицу.

Предполагаемое решение:
1. При входе клиента на страницу file.php определяю его IP
2. Если клиент новый (новый IP), то создаю в БД профиль для этого конкретного клиента.
В профиль этого нового клиента надо занести набор из 10 (20...30) id's картинок на странице,
каждой из которых соответствует две дефолтные координаты. Соответственно, всем картинкам
на странице надо сразу дать эти дефолтные координаты.
3. Если клиент "старый" (профиль для этого IP имеется в базе), нужно "вытащить" из БД
координаты всех картинок и прописать их в формируемый HTML-код файла file.php.
4. Если клиент будет перетаскивать какие-то картинки, надо, чтобы файл test.php
перезаписывал изменения координат в "своём" профиле.

Из всего вышеописанного умею только лишь определять IP клиента.

Потому ВОПРОСЫ:
1. Как в файле file.php организовать вышеописанный профиль для конкретного IP в БД
с записью в него дефолтных координат для каждой картинки?
2. Как в этом же файле file.php обеспечить "вытаскивание" из БД координат каждой картинки
для формирования HTML-кода страницы file.php для конкретного IP?
3. Как в файле test.php организовать перезаписывание в БД координат тех картинок, которые
клиент будет перетаскивать?

  Ответить  
 
 автор: cheops   (27.09.2011 в 17:22)   письмо автору
 
   для: maxmsmax   (27.09.2011 в 11:40)
 

Может лучше не ориентироваться на IP-адрес? Множество людей выходят из-под одного IP-адреса, у множества людей IP-адрес меняется чуть ли не каждый раз, может лучше хранить номер раскладки в базе данных в cookie?

  Ответить  
 
 автор: maxmsmax   (27.09.2011 в 18:34)   письмо автору
 
   для: cheops   (27.09.2011 в 17:22)
 

Хочу всетаки сделать по IP
а потом уже переделать, если не устроит. вижу что действительно минусов много

Подскажите логику или как составить запрос:
Поле Тип Сравнение
id int(11)
user_ip varchar(250)
id_obj varchar(100)
cor_top varchar(100)
cor_left varchar(100)

Есть 10 объектов (картинок) у каждой свои координаты
Если пользователь заходит первый раз записываем его IP и координаты всех картинок.
Пользователь перемещает объекты координаты меняются (реализовано)
Пользователь перезагружает страницу, снова определяется и если IP его в базе есть то выдаются координаты всех картинок и расставляются по местам

  Ответить  
 
 автор: cheops   (27.09.2011 в 21:26)   письмо автору
 
   для: maxmsmax   (27.09.2011 в 18:34)
 

Логика не сложная, просто извлекайте координаты при помощи запроса в котором WHERE-условие user_ip равен текущему IP-адресу. В ответ вам будет выдано сдержимое ранее сохраненного запроса. Если такой информации нет, выводите расположение по умолчанию.

  Ответить  
 
 автор: maxmsmax   (28.09.2011 в 12:02)   письмо автору
 
   для: cheops   (27.09.2011 в 21:26)
 

а если у меня несколько объектов которым надо дать координаты ?
while ($row = mysql_fetch_assoc($result)) {
        echo $row['cor_top'];
        echo $row['cor_left'];
        echo "<div id=\"moveme\" style=\"width: 50px; height: 50px; background: url(img/1.jpg); position: absolute; top: ".$row['cor_top']."; left: ".$row['cor_left']."\" onMouseDown=\"move(this);\"></div>";

А как вывести все ?

  Ответить  
 
 автор: cheops   (28.09.2011 в 13:55)   письмо автору
 
   для: maxmsmax   (28.09.2011 в 12:02)
 

У вас же цикл, т.е. я так понимаю, он формирует несколько <div> блоков с разными координатами? Или это не совсем то, что вам нужно?

  Ответить  
 
 автор: maxmsmax   (28.09.2011 в 16:14)   письмо автору
 
   для: cheops   (28.09.2011 в 13:55)
 

Да цикл и нужен...
Помогите вот с чем

while ($row = mysql_fetch_assoc($result)) {
        $ip_db = $row['user_ip'];

            }
            if ($ip=$ip_db)
            {
            echo "<div id=\"".$row['id_obj']."\" style=\"width: 50px; height: 50px; background: url(img/1.jpg); position: absolute; top: ".$row['cor_top']."; left: ".$row['cor_left']."\" onMouseDown=\"move(this);\"></div>";
            }
            else
            {
            echo 
            "<div id=\"moveme\" style=\"width: 50px; height: 50px; background: url(img/1.jpg); position: absolute; top: 1px; left: 1px \" onMouseDown=\"move(this);\"></div>
<div id=\"moveme2\" style=\"width: 50px; height: 50px; background: url(img/2.jpg); position: absolute; top: 1px; left: 63px \" onMouseDown=\"move(this);\"></div>
<div id=\"moveme3\" style=\"width: 50px; height: 50px; background: url(img/3.jpg); position: absolute;top:1px;left:120px\" onMouseDown=\"move(this);\"></div>
<div id=\"moveme4\" style=\"width: 50px; height: 50px; background: url(img/4.jpg); position:absolute;top:1px;left:180px\" onMouseDown=\"move(this);\"></div>
<div id=\"moveme5\" style=\"width: 50px; height: 50px; background: url(img/5.jpg); position:absolute;top:1px;left:240px\" onMouseDown=\"move(this);\"></div>
<div id=\"moveme6\" style=\"width: 50px; height: 50px; background: url(img/6.jpg); position:absolute;top:60px;left:1px\" onMouseDown=\"move(this);\"></div>
<div id=\"moveme7\" style=\"width: 50px; height: 50px; background: url(img/7.jpg); position:absolute;top:60px;left:63px\" onMouseDown=\"move(this);\"></div>
<div id=\"moveme8\" style=\"width: 50px; height: 50px; background: url(img/8.jpg); position:absolute;top:60px;left:120px\" onMouseDown=\"move(this);\"></div>
<div id=\"moveme9\" style=\"width: 50px; height: 50px; background: url(img/9.jpg); position:absolute;top:60px;left:180px\" onMouseDown=\"move(this);\"></div>
<div id=\"moveme10\" style=\"width: 50px; height: 50px; background: url(img/10.jpg); position:absolute;top:60px;left:240px\" onMouseDown=\"move(this);\"></div>";
            }


Придумал такую логику, только не до конца
Пользователь заходит, проверяется по IP, если его IP нет в БД то выдавать ему блок со всеми картинками и заносить в БД: IP, id объекта, координаты всех объектов
Если IP пользователя есть в БД то выдавать ему блок картинок с координатами всех объектов.

Подскажите пожалуйста, как это реализовать и еще у меня затык с $row = mysql_fetch_assoc

  Ответить  
 
 автор: maxmsmax   (29.09.2011 в 19:00)   письмо автору
 
   для: maxmsmax   (28.09.2011 в 16:14)
 

Разобрался. Спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования