• User Attivo

    problema somma

    ciao a tutti, io avrei un problema, non riesco a fare la somma di una variabile che è uguale a un insieme di importi.
    Il mio script è cosi':

    [php]
    //determino l'importo totale

    //$importo_tot = "select sum(prezzo) from carrello_temp where id_utente ='".$_SESSION['logged'][0]."'";
    $importo_tot="SELECT * from carrello_temp where id_utente = '".$_SESSION['logged'][0]."' order by id_carrello_temp";
    $importo_tot2 = mysql_query($importo_tot);
    while($importo_tot3 = mysql_fetch_array($importo_tot2))
    {

    $prezzo=$importo_tot3[0];
    $spese=$importo_tot3['spese'];
    //prova
    $importo_variato="SELECT COUNT(*) FROM carrello_temp where id_utente ='".$_SESSION['logged'][0]."'";
    $importo_variato2 = mysql_query($importo_variato);
    $importo_variato3 = mysql_fetch_array($importo_variato2);

    if($importo_variato3[0]>1){
    $spese=20/$importo_variato3[0];
    }
    }
    }
    $totalissimo=$prezzo+$spese;
    //INIZIO INSERIMENTO
    $get = time();
    $time=date("Y-m-d H:i:s", $get);
    echo " prova: ".$time;

    $q = "insert into ordini (";
    $q .= " id_utente";
    $q .= " ,id_prodotto";
    $q .= " ,data_ordine";
    $q .= " ,data_ord_format";
    $q .= " ,importo";

    $q .= " ) values (";
    $q .= " '" . $_SESSION['logged'][0] . "'";
    $q .= " ,'" . $carrello3['id_prodotto'] . "'";
    $q .= " ,'" . $time . "'";
    $q .= " ,'" . $get . "'";
    $q .= " ,'" . $totalissimo. "'";

    $q .= " )";

    mysql_query($q);

    [/php]Questo script in questo modo funzionerebbe anche...
    Pero' se ad esempio io faccio eseguire questo script inserendo 2 prodotti anziche uno, vengono inseriti 2 records (che è esattamente quello che voglio) per tutti i campi tranne 1 e cioè il $totalissimo che invece mi inserisce solo un record e mi sballa la cifra.
    Cioè io vorrei per esempio inserire 2 prodotti del valore di 150,00 e uno col valore 220,00.
    Siccome c'è la condizione che indica che se c'è piu' di un valore allora le spese (20,00) devono essere dimezzate per il valore dei record (in modo da fare sempre 20 come totale), mi sballa la cifra: cioè anzichè fare 390 (150 + 220 + 20)distribuite in 2 records, mi inserisce sempre 2 records ma nel campo del prezzo un solo totale di 380 e l'altro lo lascia vuoto. Io avrei voluto inserire su 2 records: 195 e 195 in modo da fare il totale esatto e dimezzando le spese per i records...
    Cavolo forse un po' complicato da spiegare...
    Riuscite mica a darmi una risposta?
    Grazie a tutti!


  • Consiglio Direttivo

    Ciao maubox8 😉
    Allora, io avrei approcciato diversamente la cosa...
    Avrei messo per ogni riga l'importo del singolo prodotto, così da avere una storia, dato che il numero di ordine è legato ai vari record, quando ti serve il totale ti estrapoli gli importi legati al numero d'ordine e te li sommi 😉


  • User Attivo

    ciao, ti ringrazio di cuore per la risposta...
    Ma io a dire il vero vorrei fare cosi', cioè inserire tanti records quanti sono gli ordini.
    Il problema è anche che se per esempio un utente fa piu' di un ordine in un unica operazione, volevo dimezzare le spese di quell'ordine in modo che come totale venga sempre 20.

    Esempio: per un ordine con 3 prodotti io voglio far pagare 20 euro e non 20*3. Quindi nel database vorrei inserire:

                prezzo   spese
            --------------------
    

    ordine 1) 100 + 6,66
    ordine 2) 150 + 6,66
    ordine 3) 220 + 6,66

    In modo tale che poi faccio la query che mi estrapola tutti gli importi e li somma..
    Pero' mi sfugge qualcosa forse...
    :bho:


  • Consiglio Direttivo

    Pare mio: ti complichi solo la vita, in una tabella a parte ti metti le spese ordine (o comunque le imposti come costante).
    Io inserirei nel Db tutti i record con dettaglio id (prodotto, ordine, utente, altro se serve) per il ripescaggio.
    Quando ti servirà qualcosa vedrai che avrai una completa e totale possibilità di manipolazione di questi dati.
    Ma come detto è un mio parere 😉
    Se vuoi fare un record per ogni ordine....allora dovresti inserire in un unico campo tutti gli id prodotto contenuti nell'ordine utilizzando un separatore tra id ed id (esempio: 1@5@6 per i prodotti 1, 5 e 6) e nel totale fare la somma degli importi dei tre prodotti ed alla fine aggiungere le spese 😉


  • User Attivo

    @Samyorn said:


    Ok.. grazie, pero' aspetta, forse non ho ben chiara la cosa che hai scritto:
    Io ho proprio un database come hai detto tu e cioè con "id prodotto", "ordine" "id:utente" "data" e "prezzo".ecc. (ora non ricordo bene prchè non ce l'ho davanti).
    Quando c'è un ordine che ha piu' di un prodotto, automaticamente mi crea tanti record quanti sono i prodotti, ed è esattamente quello che voglio perchè cosi' ho proprio la storia di ogni prodotto.
    Non dovrebbe essere un problema ricavare la somma di tutti i prodotti di quel id_utente con la funzione sum.
    Il problema è che non capisco come gestire le spese.
    Cioè io vorrei che quando uno compra un solo prodotto ad esempio avrà 15 euro di spesa, uno che invece ne compra piu' di uno ne deve avere comunque 20 in totale.
    Dove posso inserire le spese secondo te?
    Sempre nello stesso database?
    Pero' cosi' non ritornerei al problema di prima?
    grazie ancora!


  • Consiglio Direttivo

    Le spese di spedizione le metti in una tabella a parte e quando estrapoli i dati li sommi al totale che ti esce fuori 😉
    Addirittura puoi, se puo' servire, creare dei codici di spese (se ne hai di più) da inserire in un altro campo.

    Altra soluzione che mi viene in mente e che quando inserisci i record dell'ordine crei anche un altro record per le sole spese di spedizione 😄


  • User Attivo

    Ok ti ringrazio molto! Adesso provero' con calma a fare il tutto!
    Ciao