2013-10-04 2 views
0

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

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); 
    } 

Frontend:

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 не снаружи? – MrCode

+0

И вам не нужно указывать, что удалить из 'default_cart_temp'? Для меня это похоже, что вы говорите ему, чтобы удалить все записи в этой таблице с помощью этой команды: '$ this-> db-> delete ('default_cart_temp');'; – khael

ответ

1

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

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