Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem przy przesyłaniu daty metoda POST
Forum PHP.pl > Forum > Przedszkole
chybaty
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?
trueblue
Komunikat dotyczy linii 6/7?
chybaty
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
trueblue
Wstaw przed tymi liniami:
  1. echo $_SERVER['REQUEST_METHOD'];
  2. print_r($_POST);


i pokaż wynik podczas zatwierdzania formularza z kłopotliwą datą.
chybaty
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 )
trueblue
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.
chybaty
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ć.
trueblue
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.  

com
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
trueblue
Ten skrypt PHP domyślnie jest wywoływany tylko z tego formularza metodą POST, więc indeksy zawsze będą.
com
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
trueblue
Nawet gdy będą puste pola, to indeksy w tablicy będą.
To raczej kwestia wywoływania skryptu metodą GET.
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.