1

enter image description here

I need to get two data from my both dropdowns. First dropdown gets fabricID and the second gets sizeID. And then ajax sends the selected data to calculates.php

I used two functions to get each dropdown data inside of one $(document).ready(function(){...

$(document).ready(function(){

    $('.fabric').on('change',function(){
        var fabricID = $(this).val();
        console.log("fabric id_price is " + fabricID); //debugging
        if(fabricID){
           $.ajax({
                type:'POST',
                url:'calculates.php',
                dataType: 'json',
                data: {
                fabric_id: fabricID
                },

                success:function(html){                                                          
                    //closing tags 
                    //dont need nothing here because i need 
                    //just to get the value from both together

    });

    $('.size').on('change',function(){
        var sizeID = $(this).val();
        if(sizeID){
            $.ajax({
                type:'POST',
                url:'calculates.php',
                dataType: 'json',
                data: {
                size_id: sizeID
                },

                success:function(html){
                    $('.icms').html(html); // i need to get result here 
                    based on the result from calculates.php
               //closing tags

Is this right? Did I build the jQuery script the right way?

Because its not working. Look to my tables: table:almofads is where is stored my fabrics names enter image description here

and i will get the id_price from the dropdown fabrics and send the id_price to table:valores_almofadas where price_id has to be equal to the first table.

enter image description here

So when I select fabricID and sizeID, I will get the result from here...calculates.php

 <?php header('Content-Type: application/json');
 include_once '../incluedes/conn_cms.php'; //session started here

 if(isset($_GET["size_id"],$_GET["id_price"])){
    $size_id=$_GET["size_id"] ;
    $id_price=$_GET["id_price"] ;


 $query3 =" SELECT * FROM valores_almofadas 
            WHERE size='$size_id' 
            AND price_id ='$id_price'";

   $result = mysqli_query($conn,$query3);
   while($rows = mysqli_fetch_assoc($result)){

        if($_SESSION['estado'] == 'SP'){
           $ICMS = $rows['icms_7'];
           }else{
           $ICMS = $rows['icms_12'];
           }
           $_SESSION['icms']=$ICMS;

        } echo json_encode($_SESSION['icms']);

} 
?>

so the result will be displayed here in cart.php in $_SESSION['icms']

function cart(){
    global $conn;

    $fabric_options = '<option>Select fabric</option>';
    $query2 = "SELECT * FROM almofadas";
    $result = mysqli_query($conn,$query2);
    while($rows = mysqli_fetch_assoc($result)){
     $tecido=$rows['tecido'];
     $id_price=$rows['id_price'];
     //sizes for size dropdown
     $t50='50';
     $t45='45';
     $fabric_options .= '<option value="'.$id_price.'">'.$tecido.'</option>';
    }

 foreach ($_SESSION as $name => $value) {
     if($value > 0){
     if(substr($name, 0, 8 ) == "product_"){
     $length = strlen($name) -8;
     $item_id = substr($name,8 , $length);
     $query = "SELECT * 
               FROM gallery2 
               WHERE gallery2.id =".escape_string($item_id). "";
               $run_item = mysqli_query($conn,$query);
  while($rows = mysqli_fetch_assoc($run_item)){ 
     $vari   = $rows['variante'];
     $num    = $rows['title'];
     $id     = $rows['id'];

 $btn_add ='<button type="button" class="btn btn-success actions plus" data-action="plus" product_id="'.$id.'"><i class="fa fa-plus fa-lg" aria-hidden="true" add_btn></i></button>';

 $btn_remove ='<button type="button" class="btn btn-warning actions less" data-action="remove" product_id="'.$id.'"><i class="fa fa-minus fa-lg" aria-hidden="true" remove_btn></i></button>';

 $btn_delete ='<button type="button" class="btn btn-default actions" data-action="delete" product_id="'.$id.'" onclick="deleteRow(this)"><i class="fa fa-times fa-lg" aria-hidden="true"></i></button>';
    if($rows['variante'] < 1){
    $vari="";
    }else{
    $vari = "-".$rows['variante'];
    }

    $product = '
    <tr>
       <td style="width:100px; "><img src="../'.$rows['image'].'" style="width:90%;border: 1px solid black;"></td>
       <td>'.$num.''.$vari.'</td>
       <td style="width:15%;">
          <select name="fabric" class="fabric select form-control selectpicker" required=""  >
        '. $fabric_options . '  
          </select>
       </td>
       <td>
          <select  id="" class="select size form-control selectpicker" required style="width:80%;"  >
          <option value="'.$t50.'">50x'.$t50.'</option>
          <option value="'.$t45.'">45x'.$t45.'</option>
          </select>
       </td>
       <td class="product'.$id.'">'.$value.'</td>//quantity of the product
       <td class="icms'.$id.'">R$:'.$_SESSION['icms'] .'</td> // cost of product
       <td class="total'.$id.'">'.$value * $_SESSION['icms'] .' </td> total of product (sub.total)
       <td> 
       '.$btn_add.' '.$btn_remove.' '.$btn_delete.'//buttons
       </td>
     </tr>';
           echo $product;  

        } 
      } 
    }
  }   
}

and for last my buttons functions in cart_functions.php

header('Content-Type: application/json');
session_start();

if (isset($_GET['action'])) {
  $action = $_GET['action'];
  $prod   = $_GET['prod_id'];
  $prodname = 'product_'.$prod;
  $result;

  switch ($action) {
    case 'add':
        $result = add_prod($prod, $prodname);
    break;
    case 'plus':
        $result = plus_prod($prod, $prodname);
    break;
    case 'remove':
        $result = remove_prod($prod, $prodname);
    break;
    case 'delete':
        $result = delete_prod($prod, $prodname);
    break;
    default:
        $result = ['result'=>'error'];
    break;
  }
}

echo json_encode($result);

function add_prod($prod, $prodname){
  //sua função para add
 $_SESSION[$prodname] = 1;
 return ['result'=>'success'];
}

function plus_prod($prod, $prodname){
  $_SESSION[$prodname]++;
  return ['result'=>'success', 'val'=>$_SESSION[$prodname]];
}

function remove_prod($prod, $prodname){
  //sua função para remove
  $_SESSION[$prodname]--;
  return ['result'=>'success', 'val'=>$_SESSION[$prodname]];
}

function delete_prod($prod, $prodname){
  //sua função para delete
  $_SESSION[$prodname] = null;
  return ['result'=>'success'];
}
1
  • 1
    you are telling $.ajax to expect json data but that's not what is being sent or how you are handling the response either. change it to html Commented Oct 7, 2016 at 16:41

1 Answer 1

2

Both fabricID and sizeID need to be sent like this in the ajax call:

{size_id: sizeID} & {fabric_id: fabricID}

Sign up to request clarification or add additional context in comments.

6 Comments

look here what i edited, code you can edit if i did it wrong.
Keep the datatype to json
I did now it, and i didn't get the value. look the code i added the calculates.php so i think the json_encode is note sending back the values to $_SESSION['icms']
Mind sharing the full code? Can't help without that.
Also, the key name in $_GET should match the key name of the object you sent, e.g. for size_id --> $_GET['size_id']
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.