Jump to content
pi3lgrzym

Aktualizacja ceny

Recommended Posts

Witam

Mam prośbę bo nigdzie nie mogę tego znaleźć.

Mam na poziomie tpl zmianę ceny. Na zasadzie, że można wpisać jaka długość produktu klient chce kupić. 

Tam jest przeliczana cena tylko w jaki sposób zaktualizować stronę produktu aby do koszyka trafiało ze zaktualizowaną ceną?

 

 

Share this post


Link to post
Share on other sites

Witam, jak się masz? Czy możesz wyjaśnić zadanie obrazami bardziej szczegółowymi?

Share this post


Link to post
Share on other sites

Chodzi o to że klient na stronie wpisuje wysokość i szerokość firanki. 

W pliku tpl javascript wylicza cenę  w zależności od rozmiaru i wykończenia. 

I teraz chciałbym, żeby to wyliczenie ceny przypisać do kupowanego produktu.

firanka.jpg

Share this post


Link to post
Share on other sites

Czyli tak naprawdę ajaxem? przesłać 2 wymiary  (wysokość, szerokość) i kwotę

Share this post


Link to post
Share on other sites

Zrozumiałem cię. Właściwie proces wydaje się prawidłowy, ale wydaje się, że JS aktualizuje niewłaściwą wartość. Czy możesz podać mi adres swojego sklepu i (jeśli wiesz, pokaż mi dokładnie JS, który oblicza ceny)?

Share this post


Link to post
Share on other sites

adres sklepu
 

Quote


{literal}
<script>
const selectElement = document.querySelector('.wysokosc');
var cena = product.querySelector('[itemprop=price]').getAttribute('content');

selectElement.addEventListener('change', (event) => {	
	
		var $max = parseInt($('#wysokosc').attr('max'));
		var $min = parseInt($('#wysokosc').attr('min'));
  
	  if (document.getElementById("wysokosc").value>$max){
		  selectElement.value = $max;
		  const result = document.querySelector('.errorMsg1');
		  result.style.display = 'block';
		  result.textContent = `Maksymalny wymiar to ` + $max + `cm`;
		  
	  }
	  else if (document.getElementById("wysokosc").value<$min) {
		  selectElement.value = $min;
		  const result = document.querySelector('.errorMsg1');
		  result.style.display = "block";
		  result.textContent = `Minimalny wymiar to ` + $min + `cm`;
	  }
	  else {
	  const result = document.querySelector('.errorMsg1');
	  result.style.display = 'none';
	  }
});


const selectElement2 = document.querySelector('.szerokosc');

selectElement2.addEventListener('change', (event) => {	
	
		var $max = parseInt($('#szerokosc').attr('max'));
		var $min = parseInt($('#szerokosc').attr('min'));
		var $wartosc = document.getElementById("szerokosc").value
  
	  if (document.getElementById("szerokosc").value>$max){
		  selectElement2.value = $max;
		  const result2 = document.querySelector('.errorMsg2');
		  result2.style.display = 'block';
		  result2.textContent = `Maksymalny wymiar to ` + $max + `cm`;
	  }
	  else if (document.getElementById("szerokosc").value<$min) {
		  selectElement2.value = $min;
		  const result2 = document.querySelector('.errorMsg2');
		  result2.style.display = "block";
		  result2.textContent = `Minimalny wymiar to ` + $min + `cm`;
	  }
	  else {
	  const result2 = document.querySelector('.errorMsg2');
	  result2.style.display = 'none';
	  const result3 = document.querySelector('.text');	  
	  var cenakoncowa = (cena/100)*$wartosc;
	  cenakoncowa = cenakoncowa.toFixed(2);
	  
	  result3.textContent = cenakoncowa.replace("\.",",") + ' zł';
	  product.querySelector('[itemprop=price]').setAttribute('content',cenakoncowa);
	  product.querySelector('[itemprop=price]').innerHTML = cenakoncowa.replace("\.",",") + ' zł';
	  }
});

</script>
{/literal}

tak naprawde to narazie tylko podmineniam na stronie wyświetlanie ceny a chciałem ją podmienić

Share this post


Link to post
Share on other sites

aha zapomniałem napisać bo na razie to tylko próbny skrypt czy mi się to uda zrobić od tej strony to na stronie sklepu działa to zmieniając wartość "Szerokości użytkowej".  

Share this post


Link to post
Share on other sites

Witam, przepraszam za spóźniony powrót. Sprawdzam to. Napiszę ci Myślę, że możesz podać mi referencje, jeśli zajdzie taka potrzeba.

Share this post


Link to post
Share on other sites

Dzięki, liczę na pomoc bo jestem w lesie a  nie znalazłem takiej informacji na necie.  To nie może być trudne z javascript przerzucić wartość do zmiennej $Product->Price...

Share this post


Link to post
Share on other sites

Witam. Może ktoś jednak może mi pomóc z aktualizacją zmiennej ceny za pomocą javascript?. Będę wdzięczny.

Share this post


Link to post
Share on other sites


Zobacz na przykładowe skrypty, są tylko szkice i działać pewnie nie będą.

javascript/jquery

$(document).on('click', '#updateProductPrice', function(e) {
        
    $.ajax({
        type: 'post',
        url: 'update_price.php',
        
        data: {    
            id_product : $('#id_product').val(),
            new_price: $('#new_price').val(),
            ajax: true,
        },
            
        dataType: 'json',
        
        success: function(response) {
            // jakis kod
        },
                
        error: function(jqXHR, textStatus, errorThrown)    {
            // jakis kod
        }
    }); // ---- ajax
});

skrypt php

<?php


if ($id_product = (int)Tools::getValue('id_product')) {
    
    $product = new Product($id_product);
    
    if (Validate::isLoadedObject($product)) {
        $product->price = (float)Tools::getValue('new_price');
        $product->update();
    }
}


        
To co chcesz zrobić chyba nie jest najlepszym pomysłem.
Wszystko będzie ok do czasu jak klient będzie chciał kupić jeden raz ten produkt, np. o rozmiarach 200x200 za cenę 100zł.

Zastanów się co się stanie jak doda drugi raz do koszyka ten sam produkt o rozmiarach np. 200x400 za cenę 200zł, jaka będzie wartość koszyka?

Share this post


Link to post
Share on other sites

Dzięki. To może da się tak zrobić że za każdym razem do koszyka dodawane jest jako inny produkt. Tak jak przy wyborze kombinacji. Produkt dodawany do koszyka będzie się różnił długością lub wysokością.

Share this post


Link to post
Share on other sites

Kurcze nie oto mi chodziło. 

   $product->price = (float)Tools::getValue('new_price');
        $product->update();

zmienia cenę produktu ale ogólnie, w bazie. 

A ja potrzebuje tylko zmienić cenę produktu dodawanego do koszyka

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More