|
|
|
| Условия:
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 организовать перезаписывание в БД координат тех картинок, которые
клиент будет перетаскивать? | |
|
|
|
|
|
|
|
для: maxmsmax
(27.09.2011 в 11:40)
| | Может лучше не ориентироваться на IP-адрес? Множество людей выходят из-под одного IP-адреса, у множества людей IP-адрес меняется чуть ли не каждый раз, может лучше хранить номер раскладки в базе данных в cookie? | |
|
|
|
|
|
|
|
для: 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 его в базе есть то выдаются координаты всех картинок и расставляются по местам | |
|
|
|
|
|
|
|
для: maxmsmax
(27.09.2011 в 18:34)
| | Логика не сложная, просто извлекайте координаты при помощи запроса в котором WHERE-условие user_ip равен текущему IP-адресу. В ответ вам будет выдано сдержимое ранее сохраненного запроса. Если такой информации нет, выводите расположение по умолчанию. | |
|
|
|
|
|
|
|
для: 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>";
|
А как вывести все ? | |
|
|
|
|
|
|
|
для: maxmsmax
(28.09.2011 в 12:02)
| | У вас же цикл, т.е. я так понимаю, он формирует несколько <div> блоков с разными координатами? Или это не совсем то, что вам нужно? | |
|
|
|
|
|
|
|
для: 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
(28.09.2011 в 16:14)
| | Разобрался. Спасибо! | |
|
|
|