Visualizzazione dei risultati da 1 a 3 su 3

Discussione: somma carrello

  1. #1

    somma carrello

    Buonasera a tutti.....

    dovrei fare la somma parziale e totale di un carrello.......
    questo è il codice php
    Codice PHP:
    <?php
        
    if (contaArticoli()==0) {
            echo 
    '<h1>Il tuo carrello è vuoto</h1>';
        }
        else {
            
    $i=0;
            
    $boundary md5(uniqid(microtime()));
            
    $query_cart mysql_query("SELECT *,`".$_SESSION['temp_tablename']."`.`id` AS `id_elem` FROM `".$_SESSION['temp_tablename']."` JOIN `prodotti` ON `".$_SESSION['temp_tablename']."`.`id_prod`=`prodotti`.`id` ORDER BY `id_elem` DESC");
            while (
    $row_prodCart mysql_fetch_array($query_cart)) {
                echo 
    '
    <div class="row" data-id="'
    .$row_prodCart['id_elem'].'" id="rec'.$row_prodCart['id_elem'].'">
        <div class="col-md-3 col-xs-12">
            <div class="portfolio-thumb">
                <img src="public/amministrazione/img/prodotti/'
    .$row_prodCart['img'].'" alt="'.$row_prodCart['prodotto'].'" class="img-thumbnail" />
            </div> <!-- /.portfolio-thumb -->
        </div> <!-- /.col-md-3 -->
        <div class="col-md-9 col-xs-12">
            <div class="portfolio-info">
                <h1>'
    .$row_prodCart['prodotto'].'</h1>
                <p>Prezzo unitario <span class="przUnix1" title="'
    .$row_prodCart['prezzo'].'">&euro; '.$row_prodCart['prezzo'].'</span></p>
                <label>quantità <select name="quantita" id="quantita1">'
    ;
                for (
    $qi=1$qi<=10$qi++) {
                    echo 
    '<option value="'.$qi.'">'.$qi.'</option>
                    '
    ;
                } 
                echo 
    '</select></label>
                <label>Totale &euro; <span id="somma1">'
    .$row_prodCart['prezzo'].'</span></label>
                <label class="btnCart fa-remove">elimina <i class="fa fa-remove"></i></label>
            </div> <!-- /.portfolio-thumb -->
        </div> <!-- /.col-md-3 -->
    </div> <!-- /.row -->
                '
    ;
            }
        }
        
    ?>
        <div id="totCart">qui: </div>
    e questo è javascript
    codice HTML:
    $(document).ready(function(){
    
      $('.portfolio-info').each(function() {
      $("#quantita1").change(function(){
        var valone = $('#quantita1').val();
        var valtwo = $('.przUnix1').attr('title');
        var total = new Number((valone * 1) * (valtwo * 1));
        total = total.toFixed(2);
        $('#somma1').text(total);
      });
     totCart += total;
    
    $("#totCart").text(totCart);
    });
    Solo che fa il calcolo del primo record e basta, e non mi fa neanche il totale....


    grazie

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,692
    Ciao, c'è un grossolano errore di fondo che prescinde da JavaScript.
    Gli "id" devono essere univoci all'interno di uno stesso documento HTML.
    Ho l'impressione che ti stia sfuggendo questo concetto basilare.

    Mi pare di capire che il tuo PHP, attraverso il ciclo while, generi un codice HTML per il quale si ottengono più elementi con lo stesso "id" (vedi "quantita1" e "somma1"). Chiaramente questo non può che generare dei problemi, tra cui quello che hai indicato.

    In sostanza non puoi usare degli id per questo scopo.
    Potresti usare delle classi e quindi modificare opportunamente il tuo jQuery per recuperare i valori in modo relativo sull'evento change degli elementi select. Vedi il concetto di utilizzo della parola chiave this.

    Noto inoltre che ci sono dei probabili errori nella logica di funzionamento del tuo jQuery. Non capisco come, secondo te, dovrebbe funzionare questo: totCart += total;

    Dove hai definito totCart e a cosa dovrebbe riferirsi total.
    Se total fa riferimento alla stessa variabile dichiarata sull'evento change, allora ho l'impressione, nuovamente, che ti manchino dei principi fondamentali, in questo caso, sul concetto di gestione degli eventi.

    Ad ogni modo, personalmente non saprei come meglio consigliarti perché non ho idea di cosa esca fuori dal tuo PHP e cosa esattamente vuoi ottenere con JavaScript.

    Nel caso, ti consiglio di postare un link ad una pagina pubblica, se puoi, e specificare meglio ciò che vuoi ottenere.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Ciao, ci sono riuscitaa
    naturalmente ho cambiato strategia. Prima cosa fondamentale ho messo l'incremento della quantià al posto della select.....

    metto il codice, servisse a qualcuno
    Codice PHP:
                            <?php
                                
    if (contaArticoli()==0) {
                                    echo 
    '<h1>Il tuo carrello è vuoto</h1>';
                                }
                                else {
                                    
    $i=0;
                                    
    $boundary md5(uniqid(microtime()));
                                    
    $query_cart mysql_query("SELECT *,`".$_SESSION['temp_tablename']."`.`id` AS `id_elem` FROM `".$_SESSION['temp_tablename']."` JOIN `prodotti` ON `".$_SESSION['temp_tablename']."`.`id_prod`=`prodotti`.`id` ORDER BY `id_elem` DESC");
                                    while (
    $row_prodCart mysql_fetch_array($query_cart)) {
                                        echo 
    '
                            <div class="row" data-id="'
    .$row_prodCart['id_elem'].'" id="rec'.$row_prodCart['id_elem'].'">
                                <div class="col-md-3 col-xs-12">
                                    <div class="portfolio-thumb">
                                        <img src="public/amministrazione/img/prodotti/'
    .$row_prodCart['img'].'" alt="'.$row_prodCart['prodotto'].'" class="img-thumbnail" />
                                    </div> <!-- /.portfolio-thumb -->
                                </div> <!-- /.col-md-3 -->
                                <div class="col-md-9 col-xs-12">
                                    <div class="portfolio-info">
                                        <h1>'
    .$row_prodCart['prodotto'].'</h1>
                                        <p>Prezzo unitario <span class="przUnix1">&euro; '
    .$row_prodCart['prezzo'].'</span></p>
                                            <button class="less">-</button>
                                            <input value="1" type="text" data-rel="'
    .$row_prodCart['prezzo'].'" readonly>
                                            <button class="more">+</button>
                                        <label>Totale &euro; <span class="parzial">'
    .$row_prodCart['prezzo'].'</span></label>
                                        <label class="btnCart fa-remove">elimina <i class="fa fa-remove"></i></label>
                                    </div> <!-- /.portfolio-thumb -->
                                </div> <!-- /.col-md-3 -->
                            </div> <!-- /.row -->
                                        '
    ;
                                    }
                                }
                                
    ?>
                                <div id="totCart">qui: </div>
    e questo è javascript
    codice HTML:
    <script>
    function totCart(){
    var sum = 0;
    $('.portfolio-info .parzial').each(function() {
            value = 0;
            var value = $(this).text();
            if(!isNaN(value) && value.length != 0) {
                sum += parseFloat(value);
    
            }
        $('#totCart').text(sum.toFixed(2));
    });
    }
    function quantityWidget(){
        var currval;
        $(".portfolio-info .less").click(function(){
            currval = parseInt($(this).parent().find("input").val());
            var money = $(this).parent().find("input").attr("data-rel");    
            if (currval > 0){
            $(this).parent().find("input").val((currval-1));
            var currqty = currval-1;
            var total = new Number(currqty * money);
            total = total.toFixed(2);
            $(this).parent().find(".parzial").text(total);
            totCart();
            }
        });
        $(".portfolio-info .more").click(function(){
            currval = parseInt($(this).parent().find("input").val());    
            var money = $(this).parent().find("input").attr("data-rel");    
            $(this).parent().find("input").val((currval+1));
            var currqty = currval+1;
            var total = new Number(currqty * money);
            total = total.toFixed(2);
            $(this).parent().find(".parzial").text(total);
            totCart();
        });
    }
    
    $(function(){
        quantityWidget();
        totCart();
    });
    </script>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.