Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] Formularz-błędny zapis do csv
Forum PHP.pl > Forum > Przedszkole
-kakkarot-
mam powazny problem. posiadam formularz, ktory generuje plik csv. wszystko jest ok oprócz jednego szczegółu.. kiedy ktoś zaznaczy któreś pole checkbox, a zaraz je odznaczy, formularz zapisuje w pliku csv tylko tą pierwszą wartość czyli, żę pole zostało zaznaczone.. jak można to naprawić? ja nie mam pojęcia, a formularz robi teraz sporo zamieszania.

proszę o pomoc

kod generujący plik:
  1. // CREATE FILE
  2. touch('results/'.$id.'.csv');
  3. $file = fopen('results/'.$id.'.csv', 'w');
  4.  
  5. $col = array();
  6. $col[0] = array();
  7. $col[1] = array();
  8.  
  9. foreach ($array as $key => $value)
  10. {
  11. if ( ! empty($value))
  12. {
  13. if ($key == 'POBRANIE') continue;
  14. if ($key == 'U_RACH_POBRANIA') $value = preg_replace ('/\D/', '', $value);
  15. if ($key == 'CK' AND $array['PLATNIK'] != 'ZL') $key = substr($array['PLATNIK'], 1).'_CK';
  16. else if ($key == 'CK' AND $array['PLATNIK'] == 'ZL') continue;
  17.  
  18. $col[0][] = $key;
  19. $col[1][] = $value;
  20. }
  21. }
  22.  
  23. $col[0][] = 'N_OS_NADAJACA';
  24. $col[1][] = "tel 888833200 tania-paczka.pl";
  25.  
  26. fputcsv($file, $col[0], ';');
  27. fputcsv($file, $col[1], ';');
  28.  
  29. fclose($file);
nospor
Nigdzie nie widzę tu formularza.... chyba nie sądzisz, że będziemy wróżyć z fusów?
kakkarot
sorki

  1. <div id="summary">
  2. <div id="summary-inner">
  3.  
  4. </div>
  5. <tr>
  6. <td>
  7. <input type="image" src="wst.jpg" id="step-correct" />
  8. <input type="image" src="zapisz.jpg" id="step-save" />
  9. </td>
  10. </tr>
  11. </table>
  12. </div>
  13. <div id="container">
  14. <form action="save.php" target="_self" method="post" id="order-form">
  15. <fieldset id="price">
  16. <img src="cost.jpg" align="center" width="150" height="150" hspace="0" vspace="50" /> Do zapłaty: <strong name="DO_ZAPLATY" id="amount">0.00 PLN</strong>
  17.  
  18.  
  19. <fieldset id="form-1" style="display: block;">
  20. <p>
  21. <label>Usługa:</label>
  22. <select name="USLUGA" class="required">
  23. <option value="E">paczka Express Standard</option>
  24. <option value="L">paleta (48h)</option>
  25. </select>
  26. </p>
  27. <p class="hidden player">
  28. <label>Płatność:</label>
  29. <select name="PLATNIK" class="required">
  30. <option value="GN">gotówką nadawca</option>
  31. <option value="GO">gotówką odbiorca</option>
  32. <option value="ZL" selected="selected">zleceniodawca</option>
  33. </select>
  34. </p>
  35. <p class="hidden payer">
  36. <label>Nr płatnika:</label>
  37. <input type="text" name="CK" value="CK" maxlength="9" />
  38. </p>
  39. <p class="buttons">
  40. <input type="hidden" name="ZLECENIODAWCA" value="CK0000000" />
  41. <input type="image" src="dal.jpg" class="step-next" />
  42. </p>
  43.  
  44. <fieldset id="form-2">
  45. ......dane nadawcy.......
  46. <p class="buttons">
  47. <input type="image" src="wst.jpg" class="step-prev" />
  48. <input type="image" src="dal.jpg" class="step-next" />
  49. </p>
  50.  
  51. <fieldset id="form-3">
  52. ......dane odbiorcy......
  53. <p class="buttons">
  54. <input type="image" src="wst.jpg" class="step-prev" />
  55. <input type="image" src="dal.jpg" class="step-next" />
  56. </p>
  57.  
  58. <fieldset id="form-4">
  59.  
  60. .....tresc z form 4.......
  61. <p class="buttons">
  62. <input type="image" src="wst.jpg" class="step-prev" />
  63. <input type="image" src="dal.jpg" class="step-next" />
  64. </p>
  65.  
  66. <fieldset id="form-5">
  67. <legend>Usługi dodatkowe</legend>
  68. <p>
  69. <input id="ubezp_check" type="checkbox" name="U_UBEZP" value="T" data-attached="insurance" /> Ubezpieczenie
  70. </p>
  71. <p class="hidden insurance">
  72. <label>Wartość ubezpieczenia(min.wart.pobrania):</label>
  73. <input type="text" id="wart_ubezp" name="U_WART_UBEZP" class="small" />
  74. </p>
  75. <p>
  76. <input id="pobr_check" type="checkbox" name="POBRANIE" value="T" data-attached="cash-on" data-late-required="true" onchange="document.getElementById('ubezp_check').checked = this.checked" /> Pobranie
  77. </p>
  78. <p class="hidden cash-on">
  79. <input type="radio" name="U_POBRANIE" checked="checked" value="T" /> Standard (zwrot gotówki 7 dni)
  80. <input type="radio" name="U_POBRANIE" value="E" /> Express (zwrot gotówki 3 dni)
  81. </p>
  82. <p class="hidden cash-on">
  83. <label>Wartość pobrania:</label>
  84. <input type="text" id="wart_pobr" name="U_WART_POBRANIA" class="small" data-late-required="true" /> PLN
  85. </p>
  86. <p class="hidden cash-on">
  87. <label>Rachunek bankowy pobrania:</label>
  88. <input type="text" name="U_RACH_POBRANIA" data-late-required="true" maxlength="32" />
  89. </p>
  90. <p>
  91. <label>Wymiary:</label>
  92. <input type="radio" name="ILOSC_NIESTANDARD" value="0" data-attached="dimensions" checked="checked" /> standardowe (suma wymiarów do 220 cm)<br />
  93. <input type="radio" name="ILOSC_NIESTANDARD" value="1" data-attached="dimensions" /> niestandardowe (suma wymiarów do 260 cm, lub nieregularny kształt)
  94. </p>
  95. <p class="hidden dimensions">
  96. <label>Wysokość:</label>
  97. <input type="text" name="NIEST_WYSOKOSC" value="0" class="small" data-late-required="true" data-onempty-zero="true" /> cm
  98. </p>
  99. <p class="hidden dimensions">
  100. <label>Długość:</label>
  101. <input type="text" name="NIEST_DLUGOSC" value="0" class="small" data-late-required="true" data-onempty-zero="true" /> cm
  102. </p>
  103. <p class="hidden dimensions">
  104. <label>Szerokość:</label>
  105. <input type="text" name="NIEST_SZEROKOSC" value="0" class="small" data-late-required="true" data-onempty-zero="true" /> cm
  106. </p>
  107. <p class="buttons">
  108. <input type="image" src="wst.jpg" class="step-prev" />
  109. <input type="button" value="Podsumowanie &raquo" class="button" id="step-summary" />
  110. </p>
  111.  
  112.  
  113.  
  114. </form>
  115. </div>


jak ktos zaznaczy np, U_POBRANIE a zaraz się rozmysli i odchaczy, formularz przejdzie do następnego krok przez walidację tak jakby wszystko bylo ok, ale plik csv zawiera opis, ze U_POBRANIE jest zaznaczone
nospor
1) Czyli ze co, zaznaczenie powoduje automatyczne przejscie na następną stronę formularza? Czy moze jednak trzeba wcisnać jakiś guzik by przejsc dalej?

2) Jeśli trzeba wcisnac jakis guzik by przejsc dalej, to znaczy ze jest tam jeszcze jakis kod js, który zapamietuje stan checkboxów. Masz takowy kod js?
kakkarot
trzeba wciasnąć guzik aby przejść dalej i przechodzi mimo, że nie powinno, bo skoro "jest zaznaczony" U_POBRANIA to obowiązkowo trzeba wypełnic U_WART_POBR, a tak się nie dzieja.

posiadam jeszcze taki kod js:

  1. $(window).load(function() {
  2. // fields
  3. var fields = ['NAZWA', 'KOD_POCZTOWY', 'ULICA', 'MIEJSCOWOSC', 'NR_DOMU', 'NR_LOK', 'NIP', 'EMAIL', 'TEL'];
  4.  
  5. // set refresher
  6. setInterval(calculate, 1000);
  7.  
  8. // buttons
  9. $('.step-next, .step-prev').click(function(e) {
  10. var clicked;
  11. var status = true;
  12.  
  13. if ($(this).hasClass('step-next'))
  14. {
  15. clicked = parseInt($(this).parent().parent().attr('id').substr(5, 1)) + 1;
  16. var item;
  17.  
  18. $('#form-' + (clicked - 1) + ' .required').each(function() {
  19. item = new Validate($(this));
  20.  
  21. if ( ! item.check())
  22. {
  23. status = false;
  24. }
  25. });
  26.  
  27. if (clicked == '5')
  28. {
  29. var one = false;
  30. $('#form-' + (clicked - 1) + ' p:visible input[data-one-required]').each(function() {
  31. if ($(this).val() != '') one = true;
  32. });
  33.  
  34. if ( ! one)
  35. {
  36. alert('Przynajmniej jedna paczka/koperta musi zostać nadana!');
  37. return false;
  38. }
  39. }
  40. }
  41. else
  42. {
  43. clicked = parseInt($(this).parent().parent().attr('id').substr(5, 1)) - 1;
  44. }
  45.  
  46. if (status)
  47. {
  48. $(this).parent().parent().fadeOut('fast', function() {
  49. $('#form-' + clicked).fadeIn('fast');
  50. });
  51. }
  52.  
  53. e.preventDefault();
  54. return false;
  55. });
  56.  
  57. $('#step-summary').click(function() {
  58. var status = true;
  59.  
  60. $('#form-5 .required').each(function() {
  61. item = new Validate($(this));
  62.  
  63. if ( ! item.check())
  64. {
  65. status = false;
  66. }
  67. });
  68.  
  69. if (status) summary();
  70. });
  71.  
  72. $('#step-correct').click(function() {
  73. $('#summary').fadeOut('fast', function() {
  74. $('#container').fadeIn('fast');
  75. })
  76. });
  77.  
  78. $('#step-save').click(function() {
  79. $('#order-form').submit();
  80. });
  81.  
  82. // service type
  83. $('select[name=USLUGA]').change(function() {
  84. if ($(this).val() == 'E')
  85. {
  86. $('.express').css('display', 'block');
  87. $('.ltl').css('display', 'none');
  88. }
  89. else
  90. {
  91. $('.ltl').css('display', 'block');
  92. $('.express').css('display', 'none');
  93. }
  94.  
  95. calculate();
  96. });
  97.  
  98. // togglers
  99. $('input[data-attached]').change(function() {
  100. var handle = $('.' + $(this).attr('data-attached'));
  101.  
  102. handle.children('[data-late-required]').toggleClass('required');
  103. handle.toggle('fast');
  104. });
  105.  
  106. // zero putter
  107. $('input[data-onempty-zero]').blur(function() {
  108. if ($(this).val() == '' || $(this).val() == ' ')
  109. {
  110. $(this).val('0');
  111. }
  112. });
  113.  
  114. // payer
  115. $('select[name=PLATNIK]').change(function() {
  116. if ($(this).children('option:selected').val() == 'ZL')
  117. {
  118. $('.payer').hide();
  119. }
  120. else
  121. {
  122. $('.payer').show();
  123. }
  124. });
  125. });
nospor
Cytat
bo skoro "jest zaznaczony" U_POBRANIA to obowiązkowo trzeba wypełnic U_WART_POBR
Przecież sam pisałes, ze potem odznaczasz ten checkbox, wiec wartosc nie jest obowiązkowa po odznaczeniu....
kakkarot
tak, czyli form. zachowuje się tak jakby nie był on zaznaczony, a jednak w csv zapisuje, że jest
fnt
Wydaje mi sie ze musisz określić w skrypcie kiedy chcesz aby wykonywal sie :

fputcsv($file, $col[0], ';');
fputcsv($file, $col[1], ';');

najlepiej po wysłaniu formularza.a raczej w tym samym momencie choc moge sie mylic jestem raczkujacy.
kakkarot
czyli jak powinien wyglądać taki kod jeśli chciałbym aby skrypt wykonywał się po wciśnięciu przycisku Podsumowanie?
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.