PHP не удаляет и вставляет данные правильно

0

Как работает этот код, каждый раз, когда пользователь посещает страницу, я очищаю все данные из таблицы и передаю ее через следующие сообщения. Если пользователь ранее не обращался к этой странице, а база данных пуста с их файлом cookie_id, она вставляет содержимое, если оно обнаружено, затем удаляет содержимое из базы данных и вставляет его снова. Проблема, с которой я сталкиваюсь, заключается в том, что при удалении она удаляет все и, кажется, вставляет одно значение из $ data1 вместо всех данных из $ data. Любые идеи относительно того, почему это происходит?

Backend:

    $cookie_id = $this->input->cookie("session_id");
    $selected_size = $this->input->post('selected_size');
    $product_id = $this->input->post('product_id');
    $product_name = $this->input->post('product_name');
    $product_color = $this->input->post('product_color');

    $q1 = $this->db->query("SELECT * FROM default_cart_temp
                            WHERE cookie_id = '$cookie_id'
                            AND is_paid = 'No'");
    if ($q1->num_rows() > 0) {
        $this->db->where('cookie_id', $cookie_id);
        $this->db->delete('default_cart_temp');

        foreach($product_id as $key => $value) {
            $data1 = array('selected_size' => $selected_size[$key],
                          'product_id' => $value,
                          'product_name' => $product_name[$key],
                          'product_color' => $product_color[$key],
                          'cookie_id' => $cookie_id,
                          'is_paid' => 'No');
        } $this->db->insert('default_cart_temp', $data1);
        echo json_encode(array('success' => true));
    } else {
        foreach($product_id as $key => $value) {
            $data = array('selected_size' => $selected_size[$key],
                          'product_id' => $value,
                          'product_name' => $product_name[$key],
                          'product_color' => $product_color[$key],
                          'cookie_id' => $cookie_id,
                          'is_paid' => 'No');
        } $this->db->insert('default_cart_temp', $data);
    }

Внешний интерфейс:

   selected_size = $('.selected_size1').text();
    arr1 = selected_size.split(".");
    ss1 = arr1.slice(0, -1);

    product_id = $('.product_id1').text();
    arr2 = product_id.split(".");
    ss2 = arr2.slice(0, -1);

    product_name = $('.product_name1').text();
    arr3 = product_name.split(".");
    ss3 = arr3.slice(0, -1);

    product_color = $('.product_color1').text();
    arr4 = product_color.split(".");
    ss4 = arr4.slice(0, -1);

      $.ajax({
        type: "POST",
        dataType: "JSON",
        url: "<?=base_url()?>index.php/products/products/new_instance",
        data: { selected_size: ss1, product_id: ss2, product_name: ss3, product_color: ss4 },
        json: {success: true},
        success: function(data) {
          if(data.success == true) {
            alert("True");
          }
        }
      });
  • 0
    Может ли insert() принимать несколько строк одновременно? Если нет, я думаю, что вызов insert() должен быть внутри foreach, а не снаружи?
  • 0
    И вам не нужно указывать, что удалить из 'default_cart_temp'? Для меня это выглядит так, как будто вы говорите ему удалить все записи в этой таблице с помощью этой инструкции: $this->db->delete('default_cart_temp'); ;
Теги:

1 ответ

1

В каждом выполнении цикла foreach вы переопределяете переменные $data и $data1. Вы должны изменить их на массивы и добавить данные, подобные этому $data[] = $subArray.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню