Как конвертировать этот php скрипт в классическую asp - PullRequest
0 голосов
/ 01 августа 2009

Я пытаюсь преобразовать сортируемый скрипт перетаскивания в PHP / JQuery. Я хочу добавить сортируемую функциональность JQuery на свой сайт, написанный на Classic ASP.

Вот уменьшенная версия скрипта:

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript">
 // When the document is ready set up our sortable with it's inherant function(s)
  $(document).ready(function() {
    $("#test-list").sortable({
      handle : '.handle',
      update : function () {
          var order = $('#test-list').sortable('serialize');
        $("#info").load("process-sorttest.asp?"+order);
        alert('' + order);
      }
    });
});
</script>

<li id="listItem_1"><img src="img/arrow.png" alt="move" width="16" height="16" class="handle" /><strong>Item 1</strong></li>
<li id="listItem_2"><img src="img/arrow.png" alt="move" width="16" height="16" class="handle" /><strong>Item 2</strong></li>

Сортируемая сторона Jquery скрипта работает отлично. Проблемы возникают при попытке сохранить обновленные данные обратно в базу данных.

Вот PHP-версия скрипта, которую я хотел бы преобразовать в ASP:

foreach ($_GET['listItem'] as $position => $item) :
    $sql[] = "UPDATE `table` SET `position` = $position WHERE `id` = $item";
endforeach;

print_r ($sql);

Это самое близкое, что я могу получить в классическом аспе:

For Each Item In Request.QueryString
    Response.write "Processing: " & Request.QueryString("listItem[]") & "<br />"
Next

Это дает мне идентификаторы пункта меню, который я модифицирую, однако причина, по которой я хочу конвертировать этот скрипт, заключается в том, что скрипт PHP считывает и печатает как новый порядок сортировки, так и идентификатор элемента списка. Все, что печатает мой asp, является идентификатором пунктов списка "Processing 1, 2"

Любая помощь будет принята с благодарностью ..

Ответы [ 4 ]

3 голосов
/ 01 августа 2009

Конструкция "For Each ... Next" в ASP работает следующим образом:

For Each <itemvar> In <collectionvar>
    ...
Next

Каждая итерация цикла помещает один элемент из collectionvar в переменную itemvar (обе являются заполнителями для фактических переменных / значений). В настоящее время ваш цикл обращается к Request.QueryString ("listItem []"), который является одинаковым, независимо от того, на какой итерации цикла вы находитесь. Вместо этого вам нужно использовать переменную «Item», которую вы определили в цикле For Each, для обработки разных элементов каждый раз в цикле.

1 голос
/ 01 августа 2009

Вы пробовали Request.QueryString(Item) вместо Request.QueryString("listItem[]")

Цикл For Each Item In Request.QueryString ничего не производит для listItem[] и, конечно, черт возьми, ничего не производит для "listItem[]"

1 голос
/ 01 августа 2009

Не совсем ответ на ваш вопрос, но ссылки отстой в комментариях:

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

То, что сводится к тому, что вы не должны предполагать, что ввод пользователя является безопасным. Вы берете переменные прямо из строки запроса и предполагаете, что они являются числами. Фактически они могут быть частичными операторами SQL.

0 голосов
/ 01 августа 2009

Попробуйте что-то вроде этого http://www.me -u.com / php-asp / это не идеально, но может быть полезно

...