Qassim Ali Ответов: 0

Обновление таблицы базы данных с помощью AJAX


Я работаю над проектом по созданию системы автосалона, и я хочу сделать страницу, где штатный пользователь может редактировать автомобиль, а затем просит его подтвердить, хочет ли он сохранить изменения или нет. До сих пор я чувствую, что прошел все шаги правильно, но я не уверен, так как я все еще новичок в AJAX, я настроил свой код, чтобы запросить подтверждение у пользователя, и если пользователь подтвердит, что он обновляет информацию о транспортном средстве. Это мой код.:-

клиентский
<pre>function confirm_edit(){

    if(confirm("Save changes?") === true){
      var vehicleNo = document.getElementById("vID").value;
      var Manufacturer = document.getElementById("Manufacturer").value;
      var Model = document.getElementById("Model").value;
      var modelYear = document.getElementById("modelYear").value;
      var State = document.getElementById("State").value;
      var Color = document.getElementById("Color").value;
      var Type = document.getElementById("Type").value;
      var salePrice = document.getElementById("salePrice").value;
      var rentPrice = document.getElementById("rentPrice").value;
      var Stock = document.getElementById("Stock").value;
      var Description = document.getElementById("Description").value;
      var i = document.getElementById("i").files[0];
        $.ajax({
          url: 'ajax.php',
          method: 'post',
          data: {vehicleNo: vehicleNo, Manufacturer : Manufacturer, Model: Model, Model_Year: modelYear, State: State, Color: Color, Type: Type, Sale_Price: salePrice, Rent_Price: rentPrice, Stock: Stock, i: i, text: Description},//$('form').serialize(),
          contentType: false,
          processData: false,
          success: function(data){
            console.log(data);
          }
        });
        return true;
    }else{
        return false;
   }
}
</script>


Серверный
<pre><?php
extract($_POST);
if(isset($Manufacturer))
{
      if (trim($Manufacturer) == "")
        echo "<span style = 'color:red'> Missing Vehicle Manufacturer  </span>";
      else if(trim($Model) == "")
        echo "<span style = 'color:red'> Missing Vehicle Model  </span>";
      else if(trim($Model_Year) == "")
        echo "<span style = 'color:red'> Missing Vehicle Model Year </span>";
      else if(trim($State) == "")
        echo "<span style = 'color:red'> Missing State of Vehicle </span>";
      else if(trim($Color) == "")
        echo "<span style = 'color:red'> Missing Color of Vehicle </span>";
      else if(trim($Sale_Price) == "")
        echo "<span style = 'color:red'> Missing the Sale Price of the Vehicle </span>";
      else if(trim($Rent_Price) == "")
        echo "<span style = 'color:red'> Missing the Rent Price of the Vehicle </span>";
      else if(trim($Stock) == "")
        echo "<span style = 'color:red'> Missing Stock of Vehicle </span>";
      else if(trim($text) == "")
        echo "<span style = 'color:red'> Missing Description of Vehicle </span>";
      else
      {
        if ((($_FILES["i"]["type"] == "image/gif") || ($_FILES["i"]["type"] == "image/jpeg")|| ($_FILES["i"]["type"] == "image/pjpeg") || ($_FILES["i"]["type"] == "image/gif") || ($_FILES["i"]["type"] == "image/png")) && ($_FILES["i"]["size"] < 200000000000000))
        {
          if ($_FILES["i"]["error"] > 0)
            echo "Return Code: " . $_FILES["i"]["error"] . "<br />";
          else
          {
            if (file_exists("Vehicles/" . $_FILES["i"]["name"])){
              die($_FILES["i"]["name"] . " already exists <br/>");
              echo "<a href = 'add_movie(1).php' align = 'center'> <p style='text-align:center'>Add another Movie </p></a>";
              //echo $_FILES["i"]["name"] . " already exists <br/>";
            }
            else
            {
              move_uploaded_file($_FILES["i"]["tmp_name"], "Vehicles/" . $_FILES["i"]["name"]);
              try{
                  require('connection.php');
                  $Description = nl2br($text);
                  $img = $_FILES['i']['name'];

                  $usql = "UPDATE vehicles SET License_Plate_N = '$License_Plate', Manufacturer = '$Manufacturer',
                  Model = '$Model', Model_Year = '$Model_Year', State = '$State', Color = '$Color',	Type = '$Type',
                  Sale_Price = '$Sale_Price',	Rent_Price = '$Rent_Price',	Stock = '$Stock', Image = '$img', Description = '$Description'";
                  echo "<span style = 'color:green'><p style='text-align:center'> Vehicle edited successesfully!</p></span> <br/>";

                  $update = $db->exec($usql);
                  $db = null;
              }

              catch(PDOException $e){
                die($e->getMessage());
              }
           }

         }
      }
      else
        echo "size or type does not match.";
      }

echo "<a href = 'Edit_Vehicle.php' align = 'center'> <p style='text-align:center'>Edit another Vehicle </p></a>";
echo "<p style='text-align:center'>Add Hyper link here to go to main page </p> ";//"<a href = 'MainPage.php' align = 'center'> Go back to mainpage </a>" Use Hyperlink to go to main page
  }
?>


Что я уже пробовал:

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

Kornfeld Eliyahu Peter

Кажется, все хорошо - как вы уже сказали... Возникает вопрос: хранятся ли данные в БД?

Qassim Ali

Нет, ничего не происходит, что странно. Я пытался отправить его несколько раз, но он никогда не обновляется в базе данных, я постараюсь перепроверить, возможно, что-то пропустил.

Kornfeld Eliyahu Peter

Я могу обнаружить некоторые проблемы в коде JQuery...
* метод должен быть типа
* данные должны быть сериализованы в строку
* удалить processData

Qassim Ali

Я предположил, что, поскольку я отправляю информацию на сервер, метод должен быть post, но если это не так, не могли бы вы подробнее остановиться на первых двух пунктах и связать меня, возможно, с каким-то источником о том, почему и как их делать?

Kornfeld Eliyahu Peter

Имя параметра не "метод", а " тип " - значение правильно post

Kornfeld Eliyahu Peter

В параметре data передайте не объект, а строку...

Qassim Ali

Я попытался выполнить все шаги, о которых вы мне рассказали, и вот как выглядит мой клиентский ajax-запрос

  $.ajax({
          url: 'ajax.php',
          type: 'post',
          data: JSON.stringify({VehicleNo: VehicleNo, Manufacturer : Manufacturer, Model: Model, Model_Year: modelYear, State: State, Color: Color, Type: Type, Sale_Price: salePrice, Rent_Price: rentPrice, Stock: Stock, i: i, text: Description}),//$('form').serialize(),
          contentType: false,
          success: function(data){
            console.log(data);
          }
        });

база данных по-прежнему не обновляется.

Kornfeld Eliyahu Peter

Теперь возникает вопрос: поступают ли данные на сервер? Что содержит $_POST?

Qassim Ali

Поэтому, когда я добавляю JSONG.stringify к своим данным, он не отображается в консоли, но когда я удаляю его, он появляется. Разве я не сериализую свои данные в строку должным образом?

Kornfeld Eliyahu Peter

Что вы подразумеваете под "консолью"? Вы попробуйте преобразовать в строки' способ вне контекста AJAX-вызов?

Qassim Ali

Вы имеете в виду сделать объект вне вызова ajax, а затем использовать его внутри? можете ли вы написать мне пример того, как это будет выглядеть и как получить доступ к нему на стороне php, потому что я не знаком с объектами в PHP.

Qassim Ali

Так что я еще немного повозился и похоже проблема вот в чем

 contentType: false,
          processData: false,
в моем клиентском коде. Когда я включаю его, данные не отправляются по какой-либо причине, но если я удаляю его, я получаю сообщение об ошибке (TypeError: 'slice' вызывается для объекта, который не реализует интерфейс Blob). Я надеюсь, что эта информация может прояснить некоторые вещи.

Laxmidhar tatwa technologies

я = документ.метода getElementById("я").файлы[0]; преобразование в байт или bytestring потом отправить

Qassim Ali

Как я могу преобразовать его в байт?

0 Ответов