je fais appelle à vos connaissances parce que je me retrouve face à un problème depuis une semaine.
Et à force de tripatouiller mes codes, je m'y paume !!!
Donc en gros, j'essaye d'actualiser un prix suivant un longueur qui elle même calcule un supplément le tout fait en jquery. jusque là, pas de problème.
Je choisi ma longueur et mon prix est actualisé correctement.
Par exemple :
Prix = 10
Supplément calculé = 5
Prix total = 15
Maintenant, si je choisis une quantité, mon prix "retombe" à son prix originale
Par exemple :
Prix = 10
Supplément calculé = 5
Prix total = 15
quantité = 2
Prix total recalculé = 10
Mon code perd la valeur de mon supplément lorsque la quantité est choisie.
Par contre si je choisi d'abord une quantité de 2, mon prix ainsi que mon supplément se calcule parfaitement.
Voici le code Javascript :
Code : Tout sélectionner
function getPrice(price,product_id,supplement)
{
var url = 'http://www.monsite.com/images/';
var qte = $('#quantite').val();
var uiLa = $('#largeur').val();
var uiHa = $('#hauteur').val();
xhr = getxmlHttpObj();
xhr.onreadystatechange=function()
{
if (xhr.readyState==4)
{
getImageSize(url+'tassetest.png', function(size) {
//alert(size.w+'x'+size.h);
$( "#slider-range-ha" ).slider({
range: "min",
value: 0,
min: 10,
max: 300,
slide: function( event, uiHa )
{
$( "#hauteur" ).val( uiHa.value);
$('#slider-range-la').slider('value', uiHa.value); // Déplacement proportionnel slider largeur
},
stop: function( event, uiHa )
{
var width = Math.round((uiHa.value*size.w*10)/size.h)/10; // Calcul de la largeur suivant infos image
$( "#largeur" ).val(width);
}
});
$( "#slider-range-la" ).slider({
range: "min",
value: 0, /* Renseigner la largeur originale en cm*/
min: 10, /* Renseigner la largeur originale en cm*/
max: 300,
slide: function( event, uiLa )
{
$( "#largeur" ).val( uiLa.value);
$('#slider-range-ha').slider('value', uiLa.value); // Déplacement proportionnel slider hauteur
},
stop: function( event, uiLa )
{
var height = Math.round((uiLa.value*size.h*10)/size.w)/10; // Calcul de la hauteur suivant infos image
$( "#hauteur" ).val(height);
/**** CALCUL DU SUPPLEMENT ****/
supplement = Math.round(((uiLa.value*height)/10000)*220);
getPrice(price,product_id,supplement);
/**** FIN CALCUL DU SUPPLEMENT****/
}// Fin stop function
});// Fin slider range la
});//Fin getImageSize
document.getElementById("prixArticle").innerHTML = 'Prix = ' + xhr.responseText;
} else if (xhr.readyState < 4) {
document.getElementById("prixArticle").innerHTML = 'Actualisation...';
}
}
xhr.open("GET","ajax_onchange_price_flash.php?price="+price+"&product_id="+product_id+"&supplement="+supplement+"&largeur="+uiLa+"&hauteur="+uiHa+"&quantite="+qte,true);
xhr.send("supplement="+supplement);
}
Voici mon code pour la requête :
Code : Tout sélectionner
<?php
require('includes/application_top.php');
$product_id = $_GET['product_id'];
$supplement = $_GET['supplement'];
$uiLa = $_GET['largeur'];
$uiHa = $_GET['hauteur'];
$modified_price = $_GET['price'];
$qte = $_GET['quantite'];
//$modified_price = 0;
$product_new_price_query = tep_db_query("select * from " .TABLE_PRODUCTS_ATTRIBUTES. " where products_id = '" . (int)$product_id . "'");
$product_new_price = tep_db_fetch_array($product_new_price_query);
var $option = $supplement;
$modified_price = round(($modified_price * 1.196) + $supplement) * $qte;
//echo $modified_price;
$product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$product_id . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
$product_info_ajx = tep_db_fetch_array($product_info_query);
if ($new_price = tep_get_products_special_price($product_info_ajx['products_id'])) {
$new_price = round(($new_price * 1.196) + $supplement) * $qte;
$products_price = '<s>' . $modified_price . ',00 €</s><br><span class="prixPromo">PROMO = ' . $new_price . ',00 €</span>';
} else {
$products_price = $modified_price . ',00 €';
}
echo $products_price;
?>
Code : Tout sélectionner
<label for="largeur">Largeur en Cm :</label>
<?php echo tep_draw_input_field('products_text_attributes_' . $text_attributes['products_text_attributes_id'], '10', 'id="largeur" style="border:0; color:#f6931f; font-weight:bold;" onChange="getPrice('. $products_price .','. $products_id .','.$option.')"', 'text'); ?>
</p>
<div id="slider-range-la"></div>
<p>
<label for="hauteur">Hauteur en Cm :</label>
<input type="text" id="hauteur" style="border:0; color:#f6931f; font-weight:bold;"/>
</p>
</div>
<?php
}
}
}
}
?>
<div class="titreFiche">
<h2>Quantité :</h2>
<?php
for ($i=0; $i<10; $i++) {
$qty_array[] = array('id' => $i+1, 'text' => $i+1);
}
?>
<p id="qteArticle"><?php echo tep_draw_pull_down_menu('quantity', $qty_array, 1,' id="quantite" onChange="getPrice('. $products_price .','. $products_id .','.$option.')"'); ?></p>
</div>
<div class="titreFiche">
<h2>Notre prix :</h2>
<p id="prixArticle" class="prixArticle"></p>
</div>
<script>
getPrice('<?php echo $products_price;?>','<?php echo $products_id;?>','<?php echo $option;?>')
</script>