Intereting Posts
Codeigniter update_batch () с включенным обновлением ключа where Как написать правильный путь к этим файлам? вставлять выбранные данные в качестве внешнего ключа и SQLSTATE : нарушение ограничения целостности: 1048 Предоставление загруженных изображений уникальному имени для mysqli Учет IP для базы данных SQL webhost не разрешает привилегии CREATE USER Как получить только определенное количество слов из строки в php? symfony 2: Пространство имен «Acme» не содержит сопоставленных объектов как настроить URL-адрес в yii framework автоматически Как скомпилировать кросс-версию PHP-расширений? MySQL PHP Escape String '\' – Почему он не сохраняется в базе данных с обратной косой чертой? PHP Include () – Верхний и нижний колонтитулы Какова длина строки идентификатора сеанса PHP? Невозможно использовать завихрение PHP на свободном уровне amazon ec2 PHP – получить base64 img строку декодировать и сохранить как jpg (в результате пустого изображения)

Сохранить позицию JQuery DragGable DIVs, используя php

Есть много решений о том, как сохранить положение перетаскиваемых DIV, но я не нашел ничего, что поможет с использованием цикла While в php.

У меня есть база данных «потребности», и я хочу отобразить все «потребности», которые соответствуют имени пользователя и статусу = inprogress. Это может быть 1 потребность или 1 000 000 потребностей в зависимости от того, соблюдены ли критерии.

Я хочу сохранить позицию потребности (DIV) автоматически при ее перемещении. Это возможно? Я хотел сохранить значения в базе данных, используя SQL, если смогу.

Здесь код, который я сейчас имею, который отображает «потребности» (divs)

заголовок

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" /> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css" /> <style> #set div { width: 90px; height: 90px; padding: 0.5em; float: left; margin: 0 10px 10px 0; } #set { clear:both; float:left; width: 368px; height: 120px; } p { clear:both; margin:0; padding:1em 0; } </style> <script> $(function() { $( "#set div" ).draggable({ stack: "#set div" }); }); </script> 

тело

 <div id="set"> <? $query = mysql_query("SELECT * FROM needs WHERE (needsusername='$username' OR workerusername='$username') AND status='inprogress'"); while ($rows = mysql_fetch_assoc($query)) { $title = $rows['titleofneed']; $status = $rows['status']; echo " <div class='ui-widget-content'> $title<br>Status: $status<br> </div> "; } ?> </div> 

Вставить запрос

 $x_coord=$_POST["x"]; $y_coord=$_POST["y"]; $needid=$_POST["need_id"]; //Setup our Query $sql = "UPDATE coords SET x_pos=$x_coord, y_pos=$y_coord WHERE needid = '$needid'"; //Execute our Query if (mysql_query($sql)) { echo "success $x_coord $y_coord $needid"; } else { die("Error updating Coords :".mysql_error()); } 

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

Предполагая, что у вас есть такая настройка:

 <div id="set"> <div data-need="1"></div> <div data-need="2"></div> <div data-need="3"></div> <div data-need="4"></div> <div data-need="5"></div> </div> 

Я использовал атрибут данных для хранения идентификатора «необходимости», позже вы можете использовать этот идентификатор для хранения позиции «необходимости» в базе данных.

Теперь, как упоминалось ранее, используйте событие остановки, чтобы отправить вызов ajax на сервер с идентификатором потребности и положением x и y. Помните, что это позиция экрана, поэтому, если у вас разные размеры экрана, вы, вероятно, должны использовать позиции относительно родительского контейнера с желаемой позицией.

 $(function() { $( "#set div" ).draggable({ stack: "#set div", stop: function(event, ui) { var pos_x = ui.offset.left; var pos_y = ui.offset.top; var need = ui.helper.data("need"); //Do the ajax call to the server $.ajax({ type: "POST", url: "your_php_script.php", data: { x: pos_x, y: pos_y, need_id: need} }).done(function( msg ) { alert( "Data Saved: " + msg ); }); } }); }); 

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

Существует рабочая скрипка , конечно, запрос ajax не работает, но вы можете видеть, что происходит в консоли.