Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP] Formularz-błędny zapis do csv
--kakkarot--
post
Post #1





Goście







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);
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nigdzie nie widzę tu formularza.... chyba nie sądzisz, że będziemy wróżyć z fusów?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kakkarot
post
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 7.04.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kakkarot
post
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 7.04.2010

Ostrzeżenie: (0%)
-----


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. });
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kakkarot
post
Post #7





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 7.04.2010

Ostrzeżenie: (0%)
-----


tak, czyli form. zachowuje się tak jakby nie był on zaznaczony, a jednak w csv zapisuje, że jest
Go to the top of the page
+Quote Post
fnt
post
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 19.11.2012

Ostrzeżenie: (0%)
-----


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.

Ten post edytował fnt 23.11.2012, 17:04:29
Go to the top of the page
+Quote Post
kakkarot
post
Post #9





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 7.04.2010

Ostrzeżenie: (0%)
-----


czyli jak powinien wyglądać taki kod jeśli chciałbym aby skrypt wykonywał się po wciśnięciu przycisku Podsumowanie?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 09:12