Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem przy przesyłaniu daty metoda POST
chybaty
post 8.10.2021, 09:59:55
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.04.2019

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


Witam,
Mam problem przy przesyłaniu daty starszej niż jeden miesiąc.

Zrobiłem formularz gdzie wybieramy datę od do. Dane przesyłam POST do skryptu który z bazy danych wybiera rekordy które mieszczą się w podanym zakresie dat i exportuję to do CSV który później jest pobierany.
Gdy wybieram np. od 01.09.2021 do 30.09.2021 wszystko ładnie się eksportuję. Natomiast gdy tylko przekroczę różnicę jednego miesiąca czyli wybiorę od 26.08.2021 do 30.09.2021 to dostaję komunikat że index data1 i data2 nie istnieje. Poniżej wklejam kawałek kodu formularza i skrypt php

formularz
  1. <div class="card card-login mx-auto mt-5">
  2. <div class="card-header text-center"><h3>Data</h3></div>
  3. <div class="card-body">
  4. <form action="kontrolaexportcsv2.php" method="post">
  5. <label for="1" class="col-form-label">Od</label>
  6. <input class='form-control' id='1' name='data1' type='date' value="<?php $datetime = new DateTime('today'); echo $datetime->format('Y-m-d'); ?>" required>
  7. <label for="2" class="col-form-label">Do</label>
  8. <input class='form-control' id='2' name='data2' type='date' value="<?php $datetime = new DateTime('tomorrow'); echo $datetime->format('Y-m-d'); ?>" required>
  9. <br><br>
  10. <input class="btn btn-lg btn-success btn-block" id="button" type="submit" value="Dalej">
  11. </form>
  12. </div>
  13. </div>
  14. </div>



plik php
  1. <?php
  2.  
  3. require_once "polaczenie.php";
  4.  
  5.  
  6. $data=$_POST['data1'];
  7. $data2=$_POST['data2'];
  8.  
  9.  
  10. $sql = "SELECT `numer_zle`,`data`,`zmiana`,`uszkodzenia`,`szyba`,`silikon`,`lakier`,`uwagi` FROM `kontrola_jakosci` WHERE `data` >= '$data' and `data`<='$data2' ORDER BY `data` ASC";
  11. $rezultat = $polaczenie->query($sql);
  12.  
  13.  
  14. $ilewierszy = $rezultat->num_rows;
  15.  
  16. if($ilewierszy>0)
  17. {
  18. $i=0;
  19.  
  20. $plik = fopen('kontrola.csv','w+');
  21. $naglowek = array("Numer","Data","Zmiana","Czy jest brak uszkodzeń?","Czy szyba jest zgodna ze standardem producenta?","Czy silikon jest położony zgodnie ze standardem?","Czy powłoka lakiernicza jest zgodna ze standardem>","Inne zauważone nieprawidłowości/uwagi");
  22.  
  23. fputcsv($plik,$naglowek);
  24.  
  25. while($i<$ilewierszy)
  26. {
  27. $wiersz=$rezultat->fetch_assoc();
  28. $numer=$wiersz['numer_zle'];
  29. $data=$wiersz['data'];
  30. $zmiana=$wiersz['zmiana'];
  31. $uszkodzenia=$wiersz['uszkodzenia'];
  32. $szyba=$wiersz['szyba'];
  33. $silikon=$wiersz['silikon'];
  34. $lakier=$wiersz['lakier'];
  35. $uwagi=$wiersz['uwagi'];
  36.  
  37. if($uszkodzenia==1)
  38. {
  39. $uszkodzenia = "Tak";
  40. }
  41. else if ($uszkodzenia==2)
  42. {
  43. $uszkodzenia="Nie";
  44. }
  45. else if ($uszkodzenia==3)
  46. {
  47. $uszkodzenia="Warunkowo";
  48. }
  49.  
  50. if($szyba==1)
  51. {
  52. $szyba = "Tak";
  53. }
  54. else if ($szyba==2)
  55. {
  56. $szyba="Nie";
  57. }
  58. else if($szyba==3)
  59. {
  60. $szyba="Warunkowo";
  61. }
  62.  
  63. if($silikon==1)
  64. {
  65. $silikon = "Tak";
  66. }
  67. else if ($silikon==2)
  68. {
  69. $silikon="Nie";
  70. }
  71. else if ($silikon==3)
  72. {
  73. $silikon="Warunkowo";
  74. }
  75.  
  76. if($lakier==1)
  77. {
  78. $lakier = "Tak";
  79. }
  80. else if ($lakier==2)
  81. {
  82. $lakier="Nie";
  83. }
  84. else if ($lakier==3)
  85. {
  86. $lakier="Warunkowo";
  87. }
  88.  
  89. $lista = array($numer,$data,$zmiana,$uszkodzenia,$szyba,$silikon,$lakier,$uwagi);
  90.  
  91. fputcsv($plik,$lista);
  92.  
  93. $i++;
  94. }
  95. }
  96.  
  97.  
  98.  
  99.  
  100. fclose($plik);
  101.  
  102. $fileName = "kontrola.csv";
  103.  
  104. $fd = fopen($fileName,"r");
  105. $size = filesize($fileName);
  106. $contents = fread($fd, filesize($fileName));
  107.  
  108. fclose($fd);
  109.  
  110. header("Content-Type: application/octet-stream");
  111. header("Content-Length: $size;");
  112. header("Content-Disposition: attachment; filename=$fileName");
  113.  
  114. echo $contents = iconv(mb_detect_encoding($contents), 'ISO-8859-2', $contents);
  115.  
  116. ?>


Może ktoś miał podobny problem?
Go to the top of the page
+Quote Post
trueblue
post 8.10.2021, 13:25:36
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Komunikat dotyczy linii 6/7?


--------------------
Go to the top of the page
+Quote Post
chybaty
post 8.10.2021, 13:34:50
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.04.2019

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


Cytat(trueblue @ 8.10.2021, 14:25:36 ) *
Komunikat dotyczy linii 6/7?

Sorki zapomniałem dopisać której linii dotyczy problem.
Tak komunikat dotyczy linii 6 i 7
Go to the top of the page
+Quote Post
trueblue
post 8.10.2021, 13:39:44
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Wstaw przed tymi liniami:
  1. echo $_SERVER['REQUEST_METHOD'];
  2. print_r($_POST);


i pokaż wynik podczas zatwierdzania formularza z kłopotliwą datą.


--------------------
Go to the top of the page
+Quote Post
chybaty
post 8.10.2021, 13:46:19
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.04.2019

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


Cytat(trueblue @ 8.10.2021, 14:39:44 ) *
Wstaw przed tymi liniami:
  1. echo $_SERVER['REQUEST_METHOD'];
  2. print_r($_POST);


i pokaż wynik podczas zatwierdzania formularza z kłopotliwą datą.


Niedawno właśnie wpadłem na podobny pomysł tylko że wyświetlałem zmienne i najlepsze jest to że pomimo wyboru kłopotliwych dat zmienne są przypisane poprawnie.

Twój kod wypluwa mi dokładnie takie coś :

POSTArray ( [data1] => 2021-08-02 [data2] => 2021-10-09 )
Go to the top of the page
+Quote Post
trueblue
post 8.10.2021, 13:47:56
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Jeśli dane są w tablicy, a dokładnie w podanych indeksach $_POST, to nie ma możliwości, aby wyświetlił się ten komunikat podczas zatwierdzania tego formularza.


--------------------
Go to the top of the page
+Quote Post
chybaty
post 8.10.2021, 13:52:23
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.04.2019

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


Cytat(trueblue @ 8.10.2021, 14:47:56 ) *
Jeśli dane są w tablicy, a dokładnie w podanych indeksach $_POST, to nie ma możliwości, aby wyświetlił się ten komunikat podczas zatwierdzania tego formularza.


No a tutaj problem polega na tym że tak się dzieje i sam zachodzę w głowę jak to możliwe. Może są jakieś ustawienia w php.ini które muszę przestawić aby było ok?
Nie wiem czy doczytałeś do końca ja tutaj tworzę plik csv może on ma coś wspólnego z tym? Jak myślisz ?

EDIT

Dobra temat teoretycznie rozwiązany można zamknąć.
Dla potomnych jakby ktoś miał podobny problem

Przed liniami 6 i 7 zostawiłem samo
  1. print_r($_POST);


O dziwo plik csv generuje się jednak na jego początku mam wybrane daty. Co jakimś dużym problemem nie jest bo wystarczy je usunąć ale jednak nie do końca miało to tak wyglądać.

Ten post edytował chybaty 8.10.2021, 14:05:41
Go to the top of the page
+Quote Post
trueblue
post 8.10.2021, 14:03:53
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Pokaż w takim razie fragment gdzie widać jednocześnie dane w tablicy i błąd, czyli:

  1. echo $_SERVER['REQUEST_METHOD'];
  2. print_r($_POST);
  3.  
  4. $data = $_POST['data1'];
  5. $data2 = $_POST['data2'];
  6.  



--------------------
Go to the top of the page
+Quote Post
com
post 8.10.2021, 14:21:14
Post #9





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


no ale czekaj, musisz sprawdzić czy masz te dane w tym post a nie odczytywać z tablicy która przed wysłaniem posta jest pusta smile.gif brakuje jakiegoś ifa

Ten post edytował com 8.10.2021, 14:21:45
Go to the top of the page
+Quote Post
trueblue
post 8.10.2021, 14:37:56
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Ten skrypt PHP domyślnie jest wywoływany tylko z tego formularza metodą POST, więc indeksy zawsze będą.


--------------------
Go to the top of the page
+Quote Post
com
post 8.10.2021, 14:41:40
Post #11





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


trueblue
Cytat
O dziwo plik csv generuje się jednak na jego początku mam wybrane daty. Co jakimś dużym problemem nie jest bo wystarczy je usunąć ale jednak nie do końca miało to tak wyglądać.


to jednak sugeruje coś innego, zresztą nie sprawdzenie czy post istnieje zawsze potem się mści wink.gif

Ten post edytował com 8.10.2021, 14:42:05
Go to the top of the page
+Quote Post
trueblue
post 8.10.2021, 14:46:08
Post #12





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Nawet gdy będą puste pola, to indeksy w tablicy będą.
To raczej kwestia wywoływania skryptu metodą GET.


--------------------
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 Wersja Lo-Fi Aktualny czas: 19.04.2024 - 13:47