Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Sprawdzanie poprawności daty
Forum PHP.pl > Forum > Przedszkole
Dreiven
Witam,

Mam problem z takim oto kodem:

  1. <!DOCTYPE html>
  2. <meta charset="UTF-8">
  3. <title>DATA</title>
  4. </head>
  5. <form action="data.php" method="get">
  6. <div><label for="firstname">Imię:
  7. <input type="text" required="required" name="firstname" id="firstname" placeholder="Imię"></label>
  8. </div>
  9. <div><label for="date">Data urodzenia:
  10. <input type="text" required="required" name="date" id="date" placeholder="MM/DD/RRRR"</label>
  11. </div>
  12. <div><input type="submit" value="Wyślij"></div>
  13. </form>
  14. </body>
  15. </html>


  1. <?php
  2. $firstName = $_POST['firstname'];
  3. $Date = $_POST['date'];
  4. if (bool checkdate ( int $month , int $day , int $year )) {
  5. echo "Data jest poprawna";
  6. } else {
  7. echo "Data jest niepoprawna";
  8. }
  9. ?>


Pojawia się błąd: Parse error: syntax error, unexpected T_STRING in /data.php on line 4

Czy ktoś może pomóc i powiedzieć co jest nie tak? Szukałem już chyba wszędzie i nie mogę dojść co nie tak.
johny_s
1) nie int a (int)

2) nie masz zdefiniowanych $month, $day, $year
robertpiaty
Spróbuj coś takiego
  1. $data = explode('/',$date);
  2. $year = array_key_exists(2,$data) ? 0 : (int)$data[2];
  3. $day = array_key_exists(1,$data) ? 0 : (int)$data[1];
  4. $month = array_key_exists(0,$data) ? 0 : (int)$data[0];
  5.  
  6. if ( checkdate ( $month , $day , $year )) {
  7.  
  8. dalej twój kod
Dreiven
Czyli wychodzi kod:

  1. <?php
  2. $firstName = $_POST['firstname'];
  3. $Date = $_POST['date'];
  4. $data = explode('/',$date);
  5. $year = array_key_exists(2,$data) ? 0 : (int)$data[2];
  6. $day = array_key_exists(1,$data) ? 0 : (int)$data[1];
  7. $month = array_key_exists(0,$data) ? 0 : (int)$data[0];
  8.  
  9. if ( checkdate ( $month , $day , $year )) {
  10.  
  11. echo "Data jest poprawna";
  12. } else {
  13. echo "Data jest niepoprawna";
  14. }
  15. ?>



W każdej konfiguracji jest "Data jest nie poprawana".
robertpiaty
Ale się walnąłem smile.gif

Zamień
  1. $data = explode('/',$date);
  2. $year = array_key_exists(2,$data) ? 0 : (int)$data[2];
  3. $day = array_key_exists(1,$data) ? 0 : (int)$data[1];
  4. $month = array_key_exists(0,$data) ? 0 : (int)$data[0];

na
  1. $data = explode('/',$Date);
  2. $year = !array_key_exists(2,$data) ? 0 : (int)$data[2];
  3. $day = !array_key_exists(1,$data) ? 0 : (int)$data[1];
  4. $month = !array_key_exists(0,$data) ? 0 : (int)$data[0];
Dreiven
Poprawiony:

  1. <?php
  2. $firstName = $_POST['firstname'];
  3. $Date = $_POST['date'];
  4. $data = explode('/',$Date);
  5. $year = !array_key_exists(2,$data) ? 0 : (int)$data[2];
  6. $day = !array_key_exists(1,$data) ? 0 : (int)$data[1];
  7. $month = !array_key_exists(0,$data) ? 0 : (int)$data[0];
  8.  
  9. if ( checkdate ( $year , $day , $month )) {
  10.  
  11. echo "Data jest poprawna";
  12. } else {
  13. echo "Data jest niepoprawna";
  14. }
  15. ?>


Wyskakuje: Data jest niepoprawna

Format daty to np: 20150222 (taką datę wpisuje)
robertpiaty
Bo data jest niepoprawna. W kodzie HTML w paceholder masz format MM/DD/RRRR Czyli powinno być 02/22/2015
Dreiven
Nadal komunikat Data jest niepoprawna.

Kombinowałem z różnymi konf. daty przy wpisywaniu.
robertpiaty
Sprawdź kolejność parametrów jakie przekazujesz do funkcji checkdate http://php.net/manual/en/function.checkdate.php
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.