2014-02-13 2 views
0

Я создаю корзину покупок, и у меня возникают проблемы с правильной работой jquery и php. У меня есть функция, называемая displayAmount($price), которая на данный момент просто форматирует число до 2 десятичных точек и добавляет к нему символ фунта стерлингов. Я хотел бы сохранить эту функцию как в будущем, когда я посмотрю, как разрешить пользователю изменять свою местную валюту, она будет использовать эту функцию для расчета и отображения правильной цены и валюты.использовать jquery, чтобы изменить цену выбора, цену эха с помощью функции php

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

Так что у меня это:

JQuery:

$("select").live('change',function() { 
     var price = 0; 
     $("select option:selected").each(function() { 
     price += parseFloat($(this).data('price')); 
     }); 
     $('#productPriceLabel').html(price); 
    }); 

HTML:

<select class='productSelectOptions'> 
<option data-price='+10'>+10</option> 
<option data-price='+20'>+20</option> 
</select> 
<br> 
<span id='productPriceLabel'></span> 

Это прекрасно работает, чтобы изменить цену. Однако мне нужно уметь эхо-цену, используя echo displayAmount($price)

Как это сделать?

Благодаря

EDIT:

function displayAmount($amount) 
    { 
     $xamount = str_replace('.', '', $amount); 
     $type = gettype($xamount); 

     if($type = integer) { 
      global $Config; 
      return $Config['currency'] . number_format($amount, 2); 
     } else { 
      return $amount; 
     } 
    } 

ВТОРОЙ EDIT: (FULL КОД)

// Get prices from database 
        $priceSQL = "SELECT * 
           FROM shopProductsPrices 
           WHERE pd_id = '$productId'";  
        $priceResult = dbQuery($priceSQL); 
        $priceOptions = ""; 
        $productLowestPrice = 10500; 
        while($priceRow = dbFetch($priceResult)) { 
         if($productLowestPrice > $priceRow['spp_price']) { $productLowestPrice = $priceRow['spp_price']; } 
         $priceOptions .= "<option data-price='+".$priceRow['spp_price']."'>".$priceRow['spp_name']."</option>"; 
        } 
        if($productLowestPrice == 10500) { $productLowestPrice = 0; } 







<table style="border: none; width: 300px;"> 
               <tr> 
                <td> 
                 <span id="productContentItem">Package:</span> 
                </td> 
                <td> 
                 <select class='productSelectOptions'> 
                  <?= $priceOptions ?> 
                 </select> 
                </td> 
               </tr> 
               <tr> 
                <td> 
                 <span id="productContentItem">Quantity:</span> 
                </td> 
                <td> 
                 <select class='productSelectOptionsQty'> 
                  <option value="1">x1</option> 
                  <option value="2">x2</option> 
                  <option value="3">x3</option> 
                 </select> 
                </td> 
               </tr> 
               <tr> 
                <td> 
                </td> 
                <td> 
                 <?= $productAddToBasket ?> 
                </td> 
               </tr> 
              </table> 

                 <span id='productPriceLabel'><?= displayAmount($productLowestPrice) ?></span> 
<script> 
    $(".productSelectOptions").live('change',function() { 
     var price = 0; 
     $(".productSelectOptions option:selected").each(function() { 
     price += parseFloat($(this).data('price')); 
     $.ajax({ 
      type: "POST", 
      dataType: "html", 
      url: '<?= SERV_ROOT ?>library/common.php', 
      data: '&price='+price, 
      success: function(returnedData){ 
      $('#productPriceLabel').html(returnedData); 
      }, 
      error: function(){ 
      $('#productPriceLabel').html('Error Formatting'); 
      } 
     }); //END Ajax 
     }); 

    }); 
</script> 
+0

опубликовать функцию PHP здесь. –

+0

добавлено в исходное сообщение Извините – user3306587

+0

Когда вы используете jQuery, взаимодействие с вашим пользователем происходит на стороне клиента (в браузере вашего пользователя). Весь скрипт PHP обрабатывается на стороне сервера (другими словами, PHP обрабатывается до того, как страница будет передана клиенту). Если вы хотите, чтобы ваш пользователь изменил валюту на вашей странице и изменил ее цену, используя ваш PHP-скрипт, вам нужно будет использовать Ajax. Смотрите: https://api.jquery.com/jQuery.ajax/ Если вы хотите, я могу попытаться разработать, но я не могу как комментарий. –

ответ

1

Вот что я не мог положить в мой комментарий:

я изменил ваша функция «select on change» будет выполняться только при изменении вашего «productSelectOptions». В противном случае он будет выполняться при изменении параметра ANY select. Это то, что вы хотели?

Вот измененный код jQuery, который отправит вашу новую цену на вашу PHP-страницу, чтобы отформатировать ее с помощью вашей функции PHP.

$(".productSelectOptions").live('change',function() { 
    var price = 0; 
    $(".productSelectOptions option:selected").each(function() { 
    price += parseFloat($(this).data('price')); 
    $.ajax({ 
     type: "POST", 
     dataType: "html", 
     url: 'formatdisplayAmount.php', 
     data: '&price='+price, 
     success: function(returnedData){ 
     $('#productPriceLabel').html(returnedData); 
     }, 
     error: function(){ 
     $('#productPriceLabel').html('Error Formatting'); 
     } 
    }); //END Ajax 
    }); 

}); 

Ваш "formatdisplayAmount.php" будет включать в себя ваши функции форматирования и посмотреть что-то, как показано ниже:

function displayAmount($amount) 
{ 
    $xamount = str_replace('.', '', $amount); 
    $type = gettype($xamount); 

    if($type = integer) { 
    global $Config; 
    return $Config['currency'] . number_format($amount, 2); 
    } else { 
    return $amount; 
    } 
} 

echo displayAmount($_POST['price']); 
+0

Спасибо. Я попробовал это, но это не сработает. Цена не проходит через _POST? Вот URL страницы, над которой я работаю. Может быть, это поможет. http://bitandpiecesvape.co.uk/site/?cid=28&pdid=82 EDIT: Я также редактировал свое оригинальное сообщение, чтобы включить код в целом, не включая функцию php, которая в настоящее время такая же, как в Ваше сообщение. – user3306587

+0

Итак, Библиотека/общая.php не получает переменную $ _POST «цена», отправляемая через $ .ajax? Не могли бы вы добавить: 'print_r ($ _ POST);' на вашей странице common.php и добавить 'console.log (returnData);' функции Ajax Success и lemme знаете, что говорит ваш debug? –

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