29 messaggi dal 30 agosto 2018
Buonasera, seguendo la guida di questo sito ho creato un carrello prodotti efficiente e funziona bene, c'è solo un problema, quando aggiorno il carrello il prezzo totale raddoppia, so che il problema è dell'if else, ma non so come risolverlo. Aiuti?
<%if T_Tab.Fields("PREZZO_SCONTATO") <> 0 then%>
     <td><%=formatcurrency((T_Tab.Fields("PREZZO")))%></td>
     <td><%=formatcurrency((T_Tab.Fields("PREZZO_SCONTATO")))%></td>
     <%session("prezzo_totale") = session("prezzo_totale") + T_Tab.Fields("PREZZO_SCONTATO")
else%>                
    <td><%=formatcurrency((T_Tab.Fields("PREZZO")))%></td>
    <td> - </td>
    <%session("prezzo_totale") = session("prezzo_totale") + T_Tab.Fields("PREZZO")
end if%>

Modificato da Thebest il 16 marzo 2019 22:04 -
333 messaggi dal 05 novembre 2012
Ciao,

il codice che hai postato non dice tanto ed a una rapida occhiata non vedo nulla che può raddoppiare il prezzo totale...

Eventualmente ad inizio conteggio, session("prezzo_totale") viene rivalorizzato a 0?

/Ciao

Alessio
29 messaggi dal 30 agosto 2018
prezzo_totale viene rivalorizzato a 0 solo quando si elimina il carrello.
Mi sono accorto ora che rileggendo mi sono espresso male, quando aggiorno la pagina e non il carrello il prezzo raddoppia.
Il codice postato è relativo solo al totale del prezzo, non a tutto il carrello.
grazie per la tua risposta.
333 messaggi dal 05 novembre 2012
Thebest ha scritto:
quando aggiorno la pagina e non il carrello il prezzo raddoppia.


Questo comportamento è fisso o incrementale, dopo la seconda volta che ricarichi la pagina il prezzo rimane invariato o continua a raddoppiare?

/Ciao

Alessio
29 messaggi dal 30 agosto 2018
Questo comportamento è incrementale, ogni volta che aggiorno la pagina il prezzo viene aumentato del costo del prodotto. Credo che sia un problema di ciclo di estrazione dei dati dal db.

if not T_Tab.eof then%>
   <tbody>
      <tr>
  <th>CATEGORIA</th>
  <th>DESCRIZIONE</th>
  <th style="width: 100px;">PREZZO</th>
  <th style="width: 100px;">PREZZO SCONTATO</th>
     </tr>
    <%Do while not T_Tab.eof%>
        <tr>
     <td><%=(T_Tab.Fields("CATEGORIA"))%></td>
     <td><%=(T_Tab.Fields("DESCR_ITA"))%></td>
     <%if T_Tab.Fields("PREZZO_SCONTATO") <> 0 then%>
             <td><%=formatcurrency((T_Tab.Fields("PREZZO")))%></td>
              <td><%=formatcurrency((T_Tab.Fields("PREZZO_SCONTATO")))%></td>
              <%session("prezzo_totale") = session("prezzo_totale") + T_Tab.Fields("PREZZO_SCONTATO")
     else%>                
            <td><%=formatcurrency((T_Tab.Fields("PREZZO")))%></td>
            <td> - </td>
             <%session("prezzo_totale") = session("prezzo_totale") + T_Tab.Fields("PREZZO")
     end if%>
       </tr>
  <%T_Tab.MoveNext 
  Loop%>
  <th>
        <td>PREZZO TOTALE</td>
    <td></td>
    <td></td>
    <td><%=FormatCurrency(session("prezzo_totale"))%></td>
  </th>
</tbody>

Modificato da Thebest il 18 marzo 2019 14:47 -
333 messaggi dal 05 novembre 2012
Ciao,

seguendo la tua logica ogni qual volta ricarichi la pagina procedi con il ri-conteggio del carrello
salvando la variabile prezzo_totale in sessione significa che mantiene il proprio valore tra una richiesta e l'altra (e questo fino alla scadenza della sessione)

A questo punto sarebbe utile scoprire perchè salvi la variabile in sessione, devi condividere realmente il valore tra le richieste? ti serve in altre pagine del tuo applicativo?

Senza scendere troppo nel dettaglio la soluzione più veloce è come ti dicevo impostare il prezzo_totale in sessione a 0 ad inizio della procedura, prima di if...tanto se non recuperi alcun articolo da db è corretto che prezzo_totale sia 0

/Ciao

Alessio
29 messaggi dal 30 agosto 2018
La variabile prezzo_totale è una variabile session poiché mi servirà come prezzo da far pagare al cliente al momento che conferma l'ordine. Seguendo il ragionamento che dici tu il prezzo totale sarebbe solo il prezzo dell'ultimo prodotto, poiché session("prezzo_totale") viene inizializzato a 0 ogni volta che si aggiunge un novo prodotto.
Credo di risolvere il problema inizializzando una variabile prezzo = prezzo + il prezzo effettivo del prodotto e poi fuori dal do while assegnarla alla variabile session. Secondo te può avere senso?
Modificato da Thebest il 18 marzo 2019 18:19 -
333 messaggi dal 05 novembre 2012
Seguendo il ragionamento che dici tu il prezzo totale sarebbe solo il prezzo dell'ultimo prodotto, poiché session("prezzo_totale") viene inizializzato a 0 ogni volta che si aggiunge un novo prodotto.

in precedenza mi hai parlato di caricamento della pagina e ciclo di estrazione dei dati dal db...se questa estrazione di dati riguarda tutti i prodotti presenti nel carrello la valorizzazione a 0 deve avvenire in questo momento...di preciso non so dove si trova all'interno del tuo codice

Credo di risolvere il problema inizializzando una variabile prezzo = prezzo + il prezzo effettivo del prodotto e poi fuori dal do while assegnarla alla variabile session. Secondo te può avere senso?

In linea di massima si (a maggior ragione se hai fatto la prova e funziona) ed è decisamente meglio di accedere ogni volta alla variabile di sessione e questo in generale.

Considera però che il contesto applicativo lo conosci bene tu, da poche righe di codice è difficile avere un'idea generale di funzionamento e mi devo fidare di quello che mi dici :)
Non posso dirti con certezza se è la soluzione giusta al tuo problema o se questo può causare un funzionamento errato/inaspettato in altre parti dell'applicativo

Cmq, se hai ancora qualche dubbio chiedi :)

Alessio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.