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

HTML+CSS+JavaScript

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Перемещение объектов по рабочей области

Сообщения:  [1-10]    [11-20]  [21-30] 

 
 автор: АЯС   (27.09.2011 в 16:47)   письмо автору
 
   для: maxmsmax   (27.09.2011 в 15:13)
 

1. Инициатива - она наказуема. Если не знаете/не понимаете, то и не пишите.
Кто и когда посоветовал вам приписать var вот сюда?
var left1=div.offsetLeft;
var top1=div.offsetTop; 

-----

2. Вы это специально? Чтобы всех запутать и самому запутаться?
FinalTop=div.style.left=x-left1+'px';
FinalLeft=div.style.top=y-top1+'px'; 

-----

3. Передаются не "громадные", а нормальные. Просто амперсанд & инструкцией encodeURIComponent преобразуется в %26. Если вы не знаете о существовании метода iconv () в PHP, то перепишите без этой инструкции:
htReq.open ('get', 'test2.php?' + obj.id + '&' + FinalTop + '&' + FinalLeft);

-----

4. Кроме того, сделайте ещё две вставки (чтобы не передавался "пустой клик"):
...
function move(div){
    STRT = 1; 
    document.onmousedown=function(){return false}
...
и
...
     document.onmouseup=function(e){  
    if (!STRT) return;
    STRT = 0;

    div.style.cursor='auto';
...

  Ответить  
 
 автор: maxmsmax   (27.09.2011 в 15:13)   письмо автору
 
   для: maxmsmax   (27.09.2011 в 11:39)
 

странно начал проверять, и понял что координаты совсем не правильные передаются, намного больше ( а в IE так вообще громадные

<script language="javascript">
if (navigator.appName == 'Microsoft Internet Explorer') htReq = new ActiveXObject ('Microsoft.XMLHTTP') 
else htReq = new XMLHttpRequest ();
function move(div){
    document.onmousedown=function(){return false}
    div.style.cursor='move';
    document.onmousemove=function(e){
e = e || window.event; 
x=e.pageX || e.clientX; 
y=e.pageY || e.clientY;
var left1=div.offsetLeft;
var top1=div.offsetTop;
left1=x-left1;
top1=y-top1;
document.onmousemove=function(e){
e = e || window.event; 
x=e.pageX || e.clientX; 
y=e.pageY || e.clientY;
FinalTop=div.style.left=x-left1+'px';
FinalLeft=div.style.top=y-top1+'px';
}
}
     document.onmouseup=function(e){  
    div.style.cursor='auto';  
    document.onmousedown=function(){} 
    document.onmousemove=function(){} 
      e = e || window.event; obj = e.target || e.srcElement;  
      htReq.open ('get', 'test2.php?' + encodeURIComponent (obj.id + '&' + FinalTop +'&' + FinalLeft));  
      htReq.send (null);  
    } 
    }
</script>

  Ответить  
 
 автор: maxmsmax   (27.09.2011 в 11:39)   письмо автору
 
   для: АЯС   (27.09.2011 в 06:09)
 

Спасибо Вам что вы есть!
искренне спасибо!

  Ответить  
 
 автор: АЯС   (27.09.2011 в 06:09)   письмо автору
 
   для: maxmsmax   (27.09.2011 в 01:54)
 

Этот форум посвящен JS+HTML+CSS.
Потому оттранслируйте ниженаписанное сообщение на форумах PHP и MySQL:
http://www.softtime.ru/forum/index.php?id_forum=1
и
http://www.softtime.ru/forum/index.php?id_forum=3
И ждите ответов.
Условия:
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 в 01:54)   письмо автору
 
   для: АЯС   (27.09.2011 в 01:15)
 

что-то не понимаю как сделать в базе, что бы заносилась
разные IP разных пользователей, где бы указывались координты объектов

  Ответить  
 
 автор: АЯС   (27.09.2011 в 01:15)   письмо автору
 
   для: maxmsmax   (27.09.2011 в 00:45)
 

Не понял - а зачем ЗДЕСЬ вообще дата нужна?
Из БД для конкретного пользователя (определяемого по его IP) в данном случае должны быть использованы ТОЛЬКО записи, связанные с положениями картинок. И эти записи должны быть в ЕДИНСТВЕННОМ экземпляре - вне зависимости от даты. Заносятся ПОСЛЕДНИЕ координаты.

При запросе страницы от нового пользователя СНАЧАЛА создаёте его новый профиль в БД, куда заносите начальные координаты для картинок. И только ЗАТЕМ - как для всех прочих - берёте эти координаты из профиля и вписываете в формирующийся HTML-код.

  Ответить  
 
 автор: maxmsmax   (27.09.2011 в 00:45)   письмо автору
 
   для: АЯС   (27.09.2011 в 00:08)
 

С начало сравниваю по IP, затем так понимаю что надо както вычислить последнюю дату занесения, и потом взять координаты

    $ip=$_SERVER['REMOTE_ADDR'];
    $query  =  "SELECT  cor_top, cor_left  FROM  `users` WHERE user_ip='$ip' AND date=???";  
    $result  =  mysql_query($query)  or  die(mysql_error()); 
    
    while ($row = mysql_fetch_assoc($result)) {
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>";

}


Отсюда возникают вопросы:
1. Как составить запрос, что-бы выбирало последнюю занесенную дату, она заносится в формате 2011-09-26 19:18:42
2. Как указать, что если нет в базе записи, то выводить стандартное место
 echo "<div id=\"moveme\" style=\"width: 50px; height: 50px; background: url(img/1.jpg); position: absolute; top: 60px; left: 100px \" onMouseDown=\"move(this);\"></div>";

  Ответить  
 
 автор: АЯС   (27.09.2011 в 00:08)   письмо автору
 
   для: maxmsmax   (26.09.2011 в 22:51)
 

echo "<div id=\"moveme\" style=\"width: 50px; height: 50px; background: url(img/1.jpg); position: absolute; top: ".ПЕРЕМЕННАЯ_1_ИЗ_БД."; left: ".ПЕРЕМЕННАЯ_2_ИЗ_БД."\" onMouseDown=\"move(this);\"></div>";

Обе переменных берёте из БД для конкретного ip пользователя и конкретного id картинки.
При отсутствии записей в БД для конкретного ip пользователя ("новый клиент") прописываете начальные ("дефолтные") значения для конкретной картинки.

  Ответить  
 
 автор: maxmsmax   (26.09.2011 в 22:51)   письмо автору
 
   для: АЯС   (26.09.2011 в 16:07)
 

Выражаю большое спасибо, стал уже разбираться )
Все получилось!
Теперь столкнулся с проблемой, как извлекать из БД координаты и присваивать их объекту?!?
т.е. человек заходит идентифицируется по IP и если в базе есть IP и координаты объектов присвоить все координаты - всем объектам!

Спасибо!

  Ответить  
 
 автор: АЯС   (26.09.2011 в 16:07)   письмо автору
 
   для: maxmsmax   (26.09.2011 в 15:26)
 

1. Первую строку исправьте на любой из трёх вариантов:
if (navigator.appName == 'Microsoft Internet Explorer') htReq = new ActiveXObject ('Microsoft.XMLHTTP'); else htReq = new XMLHttpRequest (); //добавьте точку с запятой

if (navigator.appName == 'Microsoft Internet Explorer') {htReq = new ActiveXObject ('Microsoft.XMLHTTP')} else htReq = new XMLHttpRequest (); //добавьте фигурные скобки

if (navigator.appName == 'Microsoft Internet Explorer') htReq = new ActiveXObject ('Microsoft.XMLHTTP')
else htReq = new XMLHttpRequest (); //добавьте перенос строки

-----

2. Три строки переместите, т. е. пропишите ПЕРЕД заключительными двумя фигурными скобками, вот так:
...
    document.onmouseup=function(e){ 
      e = e || window.event; obj = e.target || e.srcElement; 
 /--- htReq.open ('get', 'test.php?' + encodeURIComponent (obj.id + '&' + FinalTop +'&' + FinalLeft)); 
 |    htReq.send (null); 
 |    div.style.cursor='auto'; 
 |  document.onmousedown=function(){}
 |  document.onmousemove=function(){}
 |    e = e || window.event; obj = e.target || e.srcElement; 
 \--> htReq.open ('get', 'test.php?' + encodeURIComponent (obj.id + '&' + FinalTop +'&' + FinalLeft)); 
      htReq.send (null); 
    }
    }
</script>

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-30] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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