#php #jquery #sql #ajax
#php #jquery #sql #ajax
Вопрос:
Я новичок в AJAX.
Я искал решение в Google, но не нашел рабочего решения.
Итак, я хочу отправить данные из перетаскиваемого div-файла jquery в sql через php.
index.html :
<html>
[...]
<body>
<myDiv>bla bla</div>
<script>
$( "myDiv" ).draggable({ stop: function() {
var position = $(this).position();
var xPos = $(this).css('left');
$.ajax({
type: "post",
url: "update.php",
data: xPos,
cache: false,
}
}
});
</script>
</body>
</html>
update.php :
<?php
require("db.php");
$xpos = $_POST['xPos'];
mysql_query("UPDATE item SET pos_x = '" . $xpos . "' WHERE ID = '". $post_ID."'");
mysql_query($query) or die('Error, insert query failed');
}
?>
db.php :
<?php
$dbhost = "**";
$dbuser = "**";
$dbpass = "**";
$dbname = "**";
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to mysql");
mysql_select_db($dbname);
?>
Может кто-нибудь сказать мне, где я ошибаюсь?
Комментарии:
1. Местоимение «I» в английском языке всегда пишется с заглавной буквы. В чем проблема? Почему вы думаете, что что-то «не так»? Что происходит при запуске вашего кода?
2. Ваш
update.php
содержит синтаксическую ошибку; почему}
там? У вас также нет никакой возможности предотвращения SQL-инъекций вообще; почему бы и нет?3. я чувствую sql-инъекцию. я надеюсь, что у вас включен magic_quotes_gpc [чтобы было понятно: я никого не призываю использовать magic_quotes_gpc вместо правильного программирования]
4. @lawl0r: Сейчас 2011 год. Я надеюсь, что никто не
magic_quotes_gps
включил.5. Вы также пропускаете
);
после фигурных скобок вcache: false
строке в вашем js. И где это$post_ID
определено в вашем php?
Ответ №1:
Для $_POST['xPos']
работы необходимо указать именованный атрибут. Измените это в своем вызове ajax:
$.ajax({
type: "post",
url: "update.php",
data: xPos, // Change this to --> data: 'xPos=' xPos,
cache: false,
}
} // <-- get rid of this
});
Несколько ошибок в вашем update.php:
// if xPos is not defined it could throw an error.
// make sure you do if (isset($_POST['xPos'])) { [...below code here...] }
$xpos = $_POST['xPos'];
// !! sql injection warning!!
// change to mysql_real_escape_string($xpos),
// mysql_real_escape_string($post_ID) ..... etc.
// also where is $post_ID defined? If this is a magic variable, naughty!
// always use the global magic variables $_POST $_GET, etc.
mysql_query("UPDATE item SET pos_x = '" . $xpos . "' WHERE ID = '". $post_ID."'");
mysql_query($query) or die('Error, insert query failed');
}
?>
Комментарии:
1. Большое спасибо, это работает. Переменная «$ post_ID» уже объявлена в моем полном коде.