Ajax: данные в SQL

#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» уже объявлена в моем полном коде.