Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает сортировка (https://javascript.ru/forum/misc/57115-ne-rabotaet-sortirovka.html)

jqRM 20.07.2015 16:55

Не работает сортировка
 
С JQuery столкнулся недавно, самому разобраться не получается
Пытаюсь прикрутить drug and drop сортировку к сайту
но при этом она работает только при отключении ajax функций обновления контента (по отдельности все работает)
вот JS код:
$(document).ready(function(){ 	
  
  function slideout(){
  setTimeout(function(){
  $("#response").slideUp("slow", function () {});
  }, 2000);}

    $("#response").hide();
	
	$(function() {
	$("#list ul").sortable({ opacity: 0.8, cursor: 'move', update: function() {
			
			var order = $(this).sortable("serialize") + '&update=update'; 
			$.post("updateList.php", order, function(theResponse){
				$("#response").html(theResponse);
				$("#response").slideDown('slow');
				slideout();
			}); 															 
		}								  
		});
	});
	
	
	$('#glossary').change(function(){
			$.ajax({
				type: 'POST',
				cache: false,
				url: 'viewObjList.php',
				data: 'glossary_type='+$('#glossary').val(),
				success: function(data){
				  $('#put').html(data);
				}
			  });
	});

});


viewObjList.php
include_once('db_conn.php');
db_conn();
$sel_query = "SELECT * FROM ".$_POST['glossary_type']." ORDER BY sort ASC";
$sel_result = pg_query($sel_query) or die('Query error: ' . pg_last_error());
printf("
	<div id='container'>
		<div id='list'>
		<div id='response'> </div>
			<ul>");
		while ($line = pg_fetch_array($sel_result, null, PGSQL_ASSOC)) {
				printf ("
				<li class='word_item' id='arrayorder_%s'>
					<span ><img src='img/del.png' width='23' alt='Удалить /'></span>
					<span ><img src='img/edit.png' width='23'  alt='Редактировать' /></span>
					<span>%s</span>
					
					<div class='clear'></div>
				</li>", $line['id'], $line['name']);
			}
		printf("
			</ul>
		</div>
	</div>");
?>

laimas 20.07.2015 19:50

"SELECT * FROM ".$_POST['glossary_type']." ORDER BY sort ASC";

Так нельзя поступать.

jqRM 20.07.2015 23:25

Подскажите как нужно...:(

laimas 21.07.2015 00:47

После FROM идет имя таблицы, и получается, что это имя вы получаете извне, более того как значение поля формы - $('#glossary').val(). Это означает, что вы открываете двери для инъекции, когда можно подбирать иные имена таблиц базы, а угадав (благо на несуществующие ваш скрипт любезно выдаст ошибку), творить с вашей базой все что угодно.

Все данные пришедшие извне нельзя подставлять непосредственно в запрос как его параметры, их необходимо экранировать или приводить к соответствующему типу. Значения полученные извне и в дальнейшем используемые в запросе как его параметры также надо экранировать.

Если есть веские основания для указания имени таблицы в форме, то это должно быть только его часть, без префикса, и только на сервере формировать полное имя. А если еще это имя задается как вводимое в форму значение, то перед запросом не мешало бы удостовериться в наличие такой таблицы в базе.

Что касается сортировки, то здесь вообще не понятно о чем речь. Если это задание пользовательской сортировки записей в таблице, то не видно по коду операций для таких случаев ни на клиенте, ни на сервере.

kostyanet 21.07.2015 08:03

Цитата:

Сообщение от jqRM
Пытаюсь прикрутить drug and drop сортировку к сайту

Во-первых drag and drop, во-вторых что это такое - сортировка через драг?


Часовой пояс GMT +3, время: 03:09.