2015-01-17 8 views
0

Это моя первая попытка ajax. Я хочу передать переменную id в функцию ajax и обновить мою базу данных. Когда я запускаю этот код, все выглядит отлично. Идентификатор в предупреждении правильный, но моя база данных не обновляется. Скажите, пожалуйста, что случилось с моим кодом.Обновление базы данных AJAX

Мой api.php:

<?php 
include 'config.php'; 
$page_id =$_POST['page_id'];       
$result = mysql_query("SELECT State FROM alarm WHERE ID_Alarm = $page_id "); 

if($result==Off){ 
$result = mysql_query("UPDATE alarm SET State = On WHERE ID_Alarm = $page_id"); 
}else{ 
$result = mysql_query("UPDATE alarm SET State = Off WHERE ID_Alarm = $page_id"); 
         } 
    ?> 

Моя JS функция AJAX:

function changeImage(e) { 

    $.ajax({ 
      type: "POST", 
      url: "web/api.php", 

      data:"page_id="+e.id, 
      success: function(data) 
      { 
       alert(e.id); 

      }, error: function() 
      { 
       alert("something went wrong"); 
      } 
     }); 

       } 

HTML:

<div id=\"$i\" class=\"alarmon\" onclick=\"changeImage(this)\"> </div> 
+0

Ваш AJAX отправляет параметр id, но PHP ожидает 'page_id'. Имена параметров должны совпадать. – Barmar

+0

Это была ошибка в моем посте. С page_id все еще не работает. – dejfit

+0

Вам нужно прочитать руководство по использованию функций 'mysql' в PHP. Вам нужно вызвать 'mysql_fetch_XXX' для извлечения данных, это не в' $ result'. – Barmar

ответ

0

Я бы обновить файл PHP следующим образом:

UPDATE: Попробуйте вмещающее Включение и выключение в одинарных кавычках

<?php 
include 'config.php'; 
$page_id =$_POST['page_id'];       
$result = mysql_query("SELECT State FROM alarm WHERE ID_Alarm = $page_id "); 

$state = mysql_result($result, 0); 

if($state == "Off"){ 
    $result = mysql_query("UPDATE alarm SET State = 'On' WHERE ID_Alarm = $page_id"); 
} 
else{ 
    $result = mysql_query("UPDATE alarm SET State = 'Off' WHERE ID_Alarm = $page_id"); 
} 
?> 

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

Также $ result будет ресурсом, а не строкой.

Надеюсь, это поможет.

+0

Спасибо, но все же что-то не так ... – dejfit

+0

"ОБНОВЛЕНИЕ: Попробуйте включить и выключить в одинарных кавычках" Большое вам спасибо. – dejfit

0

Вам не нужны SELECT и IF. Вы можете обновить таблицу в одном запросе:

mysql_query("UPDATE alarm 
      SET State = IF(State = 'On', 'Off', 'On') 
      WHERE ID_Alarm = $page_id"); 
+0

Спасибо, это выглядит хорошо, но не решает проблему. :) – dejfit

+0

Я только что исправил недостающие цитаты, которые @YoelNunez указал в его ответе. Я предполагаю, что ваш столбец 'State' является строкой. – Barmar

+0

Столбец состояния - это строка. Теперь он работает с этими цитатами. Спасибо за помощь. – dejfit

0

Заключите $ PAGE_ID в одинарные кавычки, как этот «$ PAGE_ID». Ваш код будет выглядеть следующим образом:

$result = mysql_query("UPDATE alarm SET State = On WHERE ID_Alarm = '$page_id'"); 

Теперь запустите код Id будет сохранен в базе данных.

+0

Я думал то же самое, но все равно не работает ... – dejfit

+0

Вы даже не включили его в одну круглую скобку. Кроме того, mysql_query устарела в PHP4. Вместо этого используйте musqli. $ result = mysqli_query ("update alarm set State = 'On', где ID_Alarm = '$ page_id'"); –

Смежные вопросы