Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dynamic list + zapisywanie do arraya.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
dirtyhustlaz
no wiec tak, musze zrobic do szkoly skrypt do bookawania biletow, musi on uzywac dynamic list i zapisywac informacje do arraya zebym mogl pozniej je wyswietlic w formie zamowienia. mam problem zapisuje mi tylko dane z pierwszej i drugiej listy a 3 i 4 zapisuje wszystkie opcje naraz.

powinno byc: artysta - miasto - wybrana data - wybrana cena
a pokazuje: artysta - miasto - wszystkie dostepne daty - wszystkie dostepne ceny

przez to tez mi nie podlicza total na zamowieniu.

oto kod mojego skryptu:
http://snipt.org/vahv9

okej, okroilem troche skrypt, dane personalne wrzucilem na inna podstrone, teraz zostal tylko wybor artysty, miasta, daty i ceny.

dalej mi sie wyswietla
wybrany artysta - wybrane misato - wszystie daty - wszystkie ceny

a chce
wybrany artysta - wybrane miasto - wybrana data - wybrana cena

dlaczego zapisuje mi tylko poprawne informacje z pierwszej listy i drugien a z trzeciej i czwartej bierze wszystkie opcje??! juz kij w to podliczanie ale zeby poprawnie zapisywalo i wyswietlalo.


http://snipt.org/embed/vahQ4

juz znalalzlem blad i wyswietla mi sie poprawnie, teraz mam problem z podliczaniem ceny. chcialbym zeby ceny wszystkich dodanych do arraya biletow byly podliczane razem na koniec i zeby dodawalo dodatkowo 10 do total jesli jest wiecej nic 4 bilety.


prosze pomocie musze oddac to do 5 godziny biggrin.gif


to jest moja funkcja wyswietlania biletow: ( to tu bym chcial zeby byly podliczane wszystkie bilety i dodawane 10 jesli jest ich wiecej niz 4

  1. function displayOrder()
  2. {
  3. var total = 0;
  4. for(var i = 1; i < index; i++)
  5. {
  6. document.write(i+". "+nameOfArtist[i]+" - "+nameOfCity[i]+" - "+dataOfConcert[i]+" - "+priceOfTicket[i]+"<br>");
  7. total += parseFloat(priceOfTicket[i]);
  8.  
  9. }
  10. total = parseFloat(total).toFixed(2);
  11. document.write("<br><b>Total: </b>"+total);
  12. }
wszerad
Ale syfiasty kod... Mam nadzieje, że robisz to bo jesteś zmuszany:D
"to tu bym chcial zeby byly podliczane wszystkie bilety i dodawane 10 jesli jest ich wiecej niz 4" - możesz to przetłumaczyć bo nie wiem co się dzieje. Jeżeli wybierzesz więcej niż 4 bilety to do całkowitego kosztu dodajesz 10? Jakies to bez sensu...
dirtyhustlaz
no o to chodzi ze jak dodam do listy wiecej niz 4 bilety to musi doliczyc 10 do total, to nie ja wymyslalem tylko takie zadanie dostalem ze szkoly
wszerad
"When tou order more than 10 ticket you will be charged extra 10 pound."
Taki kawałek miałeś w kodzie ale zrobie jak chcesz:
  1. function displayOrder(){
  2. var total = 0;
  3. for(var i = 1; i < index; i++)
  4. {
  5. document.write(i+". "+nameOfArtist[i]+" - "+nameOfCity[i]+" - "+dataOfConcert[i]+" - "+priceOfTicket[i]+"<br>");
  6. total += parseFloat(priceOfTicket[i]);
  7.  
  8. }
  9. if(index>5) //zauważyłem, że dla jednego biletu index ma już 2 więc +1
  10. total += 10;
  11.  
  12. total = parseFloat(total).toFixed(2);
  13. document.write("<br><b>Total: </b>"+total);
  14. }


Dodawane jest tylko raz, nie za każde 4 bilety tak jak by Ci coś nie pasowało. W tablicach pierwszy element ma index 0 więc ucina ci tu pierwszy bilet, chyba że już to pozmieniałeś względem tego co wkleiłeś.
dirtyhustlaz
dzieki za pomoc, widze ze to spoko bedzie dzialac jak mi sie uda wogole doprowadzic do porzadku podliczanie cen.

Podam jeszcze raz kod calego skryptu, aktualnej wersji, moglbys spojrzec swiezym okiem i powiedizec czemu podliczanie nie dziala?! wink.gif

<< kod calego skryptu >> http://snipt.org/vahR3
wszerad
  1. <input type="button" onclick="addTicket()" value="Add Ticket"></input>
  2. <input type="button" onclick="displayOrder()" value="Calculate"></input>

zamiast tych "button"
dirtyhustlaz
zmiana buttonow tez nic nie dala, wszystko sie wyswietlalo jak dalem calculate, tyko nie podlicza total.
wszerad
  1. var nameOfArtist = Array(), nameOfCity = Array(), dataOfConcert = Array(), priceOfTicket = Array(), numberOfTickets = Array(), index = 1, total = 0, tickets = [];
  2.  
  3. function addTicket(){
  4. var form = document.forms['form'],
  5. art = form['artist'].value,
  6. city = form['city'].value,
  7. data = form['data'].value,
  8. price = form['price'].value,
  9. tnumber = form['tnumber'].value;
  10.  
  11. tickets.push([art,city,data,price,tnumber]);
  12. }
  13.  
  14. function displayOrder(){
  15. var total = 0;
  16.  
  17. for(var i=0;i<tickets.length;i++){
  18. var ticket = tickets[i];
  19. document.write((i+1)+'. '+ticket[0]+' - '+ticket[1]+' - '+ticket[2]+' - '+ticket[3]+'<br>');
  20. total += ticket[3]*ticket[4];
  21. }
  22.  
  23. document.write("<br><b>Total: </b>"+total.toFixed(2));
  24. }
  25.  
  26.  
  27. </script>
  28.  
  29. </head>
  30.  
  31. <body>
  32.  
  33. <form name="form">
  34. <h3> Choose you tickets:</h3>
  35. <h5>Artist:</h5>
  36. <select id="artist" onchange="GetArtist()">
  37. <option value="">Choose Artist</option>
  38. <option value="Madonna">Madonna</option>
  39. <option value="Rod Stewart">Rod Stewart</option>
  40. <option value="Guns n Roses">Guns n Roses</option>
  41. <option value="Oasis">Oasis</option>
  42. <option value="Beyonce">Beyonce</option>
  43. </select>
  44. <h5>City:</h5>
  45. <select id="city" onchange="GetDates()">
  46. <option value="">Choose City</option>
  47. <option value="London">London</option>
  48. <option value="Manchaster">Manchaster</option>
  49. </select>
  50. <h5>Dates available:</h5>
  51. <select id="data" onchange="GetPrices()">
  52. <option value="">Choose date</option>
  53. <option value="17 July">17 July</option>
  54. <option value="18 July">18 July</option>
  55. </select>
  56. <h5>Prices:</h5>
  57. <select id="price">
  58. <option value="">Choose Price</option>
  59. <option value="30">30</option>
  60. <option value="45">45</option>
  61. <option value="70">70</option>
  62. </select>
  63. <h5>No of people:</h5>
  64. <select id="tnumber">
  65. <option value="">No of people</option>
  66. <option value="1">1</option>
  67. <option value="2">2</option>
  68. <option value="3">3</option>
  69. <option value="4">4</option>
  70. <option value="5">5</option>
  71. <option value="6">6</option>
  72. </select>
  73. <input type="button" onclick="addTicket()" value="Add Ticket"></button>
  74. <input type="button" onclick="displayOrder()" value="Calculate"></button>
  75. </form>
  76.  
  77. When tou order more than 4 ticket you will be charged extra 10 pound.
  78.  
  79. </body>
  80.  
  81. </html>


Musiałem sobie zapisać w pliku zeby sprawdzic co sie dzieje, u mnie jest ok (zmodyfikowalem kod wyżej pare sekund po publikacji wiec odswiez jak cos)

  1. function addTicket(){
  2. var form = document.forms['form'],
  3. art = form['artist'].value,
  4. city = form['city'].value,
  5. data = form['data'].value,
  6. price = form['price'].value,
  7. tnumber = form['tnumber'].value;
  8.  
  9. while(tnumber--){
  10. tickets.push([art,city,data,price]);
  11. }
  12. }
  13.  
  14. function displayOrder(){
  15. var total = 0;
  16.  
  17. for(var i=0;i<tickets.length;i++){
  18. var ticket = tickets[i];
  19. document.write((i+1)+'. '+ticket[0]+' - '+ticket[1]+' - '+ticket[2]+' - '+ticket[3]+'<br>');
  20. total += ticket[3]*1;
  21. }
  22.  
  23. document.write("<br><b>Total: </b>"+total.toFixed(2));
  24. }

teraz juz chyba wszystko
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.