Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

JSP - Kolejno dodawanie liczb do sumy.

toma5z 15 Gru 2010 11:55 1313 8
  • #1 15 Gru 2010 11:55
    toma5z
    Poziom 13  

    Witajcie mam pewien problem:

    Mam na stronie 3 radiobuttony:
    - jabłka 2,50zl
    - banany 3,50zl
    - ser 4,70zl

    Pod tym przycisk "dodaj".
    Pod przyciskiem "łączna cena to:"

    Gdy klient wybierze coś sobie z tego, np jabłka kliknie dodaj, to w "łączna cena:" pojawi się 2,50.
    Następnie wybierze ser, to do łącznej ceny doda się 4,70... Itd.

    Mój początkowy pomysł wyglądał tak:

    plik: suma.jsp

    Code:

    <form action="suma.jsp" method="post">
    <input type="radio" name="grupa" value="jablka"> jabłka 2,50zl<br>
    <input type="radio" name="grupa" value="banany"> banany 3,50zl<br>
    <input type="radio" name="grupa" value="ser"> ser 4,70zl<br>
    <button type="sumbit">Dodaj</button>
    </form>
    <%
    String grupa= request.getParameter("grupa");
    double suma;
    if(grupa.equals("jablko"))
    {
        suma = suma + 2.50;
    }
    else if(grupa.equals("banany"))
    {
        suma = suma + 3.50;
    }
    else if(grupa.equals("ser"))
    {
        suma = suma + 4.70;
    }
    %>


    Niestety, nie działa to tak pięknie jak wygląda.
    Kolejne moje pomysły, to aby sume zrobić w cookie i tam dodawać ceny - tak jakby sumować coś w stosie.

    Następnie pomyślałem aby zrobić tablice i dodawać do pierwszego rekordu w tablicy.

    Nie wiem jak to ugryźć od strony kodu. Proszę o pomoc i ew. przykład.

    0 8
  • #3 15 Gru 2010 13:08
    toma5z
    Poziom 13  

    Ok, fakt, faktem masz racje.
    Nie umiem się uporać z sesjami, tak jak zmienne umie przechowywać, to nie umię dodawać zmiennych do sesji.

    Utworzyłem sobie zmienną sesyjną typu double suma.
    Gdy user wybierze daną opcje z radiobuttona to np: suma += 1.40;

    niestety wyświetla mi aktualny stan sesji, czyli to co jest w niej nadpisywane jest aktualną wybraną opcją.

    Z poziomu kodu wygląda to następująco:

    Code:

    <%
    double suma = 0;
    if(grupa==null)
    {
       out.println("Wybierz jakąś opcje");
    }
    else if(grupa.equals("1.30"))
    {
       suma += 1.30;
       session.setAttribute( "suma", suma );
       out.println(session.getAttribute( "suma" ));
    }
    else if(grupa.equals("2.00"))
    {
       suma += 2.00;
       session.setAttribute( "suma", suma );
       out.println(session.getAttribute( "suma" ));
    }
    else if(grupa.equals("3.50"))
    {
       suma += 3.50;
       session.setAttribute( "suma", suma );
       out.println(session.getAttribute( "suma" ));
    }
    %>

    0
  • #4 15 Gru 2010 13:26
    dj_west
    Poziom 16  

    A przypadkiem nie widzę na samym początku skryptu zerowania sumy?

    0
  • #5 15 Gru 2010 13:57
    toma5z
    Poziom 13  

    Hmmm... masz racje, z automatu sobie wpisałem.

    Z tym, że bez inicjacji tej zmiennej program nie ruszy...

    0
  • #7 15 Gru 2010 15:00
    toma5z
    Poziom 13  

    Dżyszla napisał:
    nadaj jej wartość 0 dopiero, gdy zmienna sesyjna nie istnieje. w przeciwnym razie nadaj jej wartość ze zmiennej sesyjnej.


    Ok, mógłbyś przedstawić to na przykładzie ?
    Zaczynam dopiero programowanie w jsp i jeszcze kuleje.

    0
  • #9 15 Gru 2010 22:40
    toma5z
    Poziom 13  

    heh...
    to może php... ?
    przerobie sobie na jsp... ;p


    edit:

    Dobra Dżyszla dałem rade, pomyślałem logicznie i zrobiłem to, a wygląda od kodu to tak:

    Code:
    <%
    
    String grupa= request.getParameter("grupa");

    HttpSession sesja = request.getSession(true);
    Double wartosc = (Double)sesja.getValue("suma");

    if (wartosc == null)
    {
       wartosc = 0.0;
       sesja.putValue("suma",wartosc);
    }
    else{
       if(grupa==null)
       {
          out.println("Wybierz jakąś opcje");
       }
       else if(grupa.equals("1.30"))
       {
          wartosc += 1.30;
          session.setAttribute( "suma", wartosc );
          out.println(session.getAttribute( "suma" ));
       }
       else if(grupa.equals("2.00"))
       {
          wartosc += 2.00;
          session.setAttribute( "suma", wartosc );
          out.println(session.getAttribute( "suma" ));
       }
       else if(grupa.equals("3.50"))
       {
          wartosc += 3.50;
          session.setAttribute( "suma", wartosc );
          out.println(session.getAttribute( "suma" ));
       }
       else if(grupa.equals("5.00"))
       {
          wartosc += 5.00;
          session.setAttribute( "suma", wartosc );
          out.println(session.getAttribute( "suma" ));
       }
       else if(grupa.equals("8.00"))
       {
          wartosc += 8.00;
          session.setAttribute( "suma", wartosc );
          out.println(session.getAttribute( "suma" ));
       }
    }
    %>

    0