• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ostatni dzień miesiąca - Gdzie w kodzie umieścić -1 lub jakie są inne sposoby na napisanie kodu.

Cloud VPS
0 głosów
326 wizyt
pytanie zadane 12 czerwca 2020 w PHP przez Martita Bywalec (2,520 p.)
edycja 12 czerwca 2020 przez Martita

Jest jakiś sposób aby zrobić ten skrypt w inny sposób?

Mam skrypt, który ma pokazać ile dni ma dany miesiąc po wskazaniu miesiąca z formularza przez użytkownika. 


<form action="ostatni_dzien_miesiaca.php" method="post">
<label for="miesiac">Miesiąc:</label>
    <select name="miesiac">
        <?php
                 for($l=1;$l<=12;++$l)
             echo '<option value="'.$l.'">'.$l.'</option>';
        ?>
    </select></br></br>
         </br></br><input type="submit" name="sprawdz"  value="Sprawdź dzień tygodnia" />
         </br></br><input type="reset" name="reset"  value="Wyczyść" />
    </form>

<?php
 $miesiac = date('t', strtotime($_POST['miesiac'] . '/1'));
 echo $miesiac;
?> 

 

Skrypt,, gdzie trzeba wstawić -1, ale nie wiem gdzie. Chyba że źle myślę. Jestem początkująca.

<?php
 $miesiac = date('t', strtotime($_POST['miesiac']));
 echo $miesiac;
?>

 

4 odpowiedzi

0 głosów
odpowiedź 13 czerwca 2020 przez Martita Bywalec (2,520 p.)
Proszę o pomoc
0 głosów
odpowiedź 13 czerwca 2020 przez SzkolnyAdmin Szeryf (90,110 p.)
Skrypt ma pokazywać liczbę dni w danym miesiącu (stąd 't' jako format). Po prostu utwórz tablicę indeksowaną numerycznie, która przechowuje liczbę dni miesiąca. Odebrana z pola select wartość jest indeksem tej tablicy.
komentarz 14 czerwca 2020 przez Martita Bywalec (2,520 p.)
Tablice indeksową numerycznie umiem utworzyć , ale nie wiem jak zrobić żeby przechowywała.

Proszę o pomoc
komentarz 14 czerwca 2020 przez SzkolnyAdmin Szeryf (90,110 p.)

Proszę oto kod PHP (bez walidacji):

$liczba_dni = [0,31,28,31,30,31,30,31,31,30,31,30,31];
echo "Miesiąc {$_POST["miesiac"]} ma {$liczba_dni[$_POST["miesiac"]]} dni.";

Tablica liczba_dni jest 13 elementowa (nie ma miesiąca o numerze 0, ale już nie chciałem zmieniać twojego kodu). Użycie klamer w instrukcji echo powoduje, że nie potrzeba używać operatora konkatenacji (kropki).

Dla ścisłości powinno się podawać jeszcze rok, ponieważ w latach przestępnych luty ma 29 dni.

0 głosów
odpowiedź 14 czerwca 2020 przez Martita Bywalec (2,520 p.)

Proszę o poprawienie błędów.

Jak wybiorę 6 miesiąc to pokazuje 30, ale też pokazuje błąd .

Jak wybiorę 7 miesiąc to pokazuje też 30, ale też pokazuje błąd .

Błąd Notice: Undefined variable: miesiac in C:\xampp\htdocs\Data\ostatni_dzien_miesiaca.php on $miesiac = date('t', mktime(0, 0, 0, date($miesiac)-1, 1, ));.

Warning: A non-numeric value encountered in C:\xampp\htdocs\Data\ostatni_dzien_miesiaca.php on$miesiac = date('t', mktime(0, 0, 0, date($miesiac)-1, 1, ));
30

 

–1 głos
odpowiedź 14 czerwca 2020 przez Ehlert Ekspert (215,050 p.)
  1. Zamiast tworzyć swoje selecty itp to użyj input type month.
  2. Zwaliduj dane 
  3. Jak robisz jakiś śmieciowy skrypt to użyj https://www.php.net/manual/en/function.cal-days-in-month.php
  4. Jak chcesz ładnie to zrobić proponuję Carbon.
komentarz 14 czerwca 2020 przez Martita Bywalec (2,520 p.)
edycja 14 czerwca 2020 przez Martita

Uczę się PHP i próbuje zrozumieć PHP.

Nie chce carbonem. Chce to napisać jak najprościej i jak najzrozumialej. Takim kodem jak poniżej tylko że poprawie

Może mi pokażesz jak ten kod powinien prawidłowo wyglądać i nie śmieciowo.

<form action="ostatni_dzien_miesiaca.php" method="post">
<label for="miesiac">Miesiąc:</label>
<input type="month" name="bdaymonth">
         </br></br><input type="submit" name="sprawdz"  value="Sprawdź dzień tygodnia" />
         </br></br><input type="reset" name="reset"  value="Wyczyść" />
    </form>
<?php
$miesiac = date('t', mktime(0, 0, 0, date($miesiac)-1, 1, ));
echo $miesiac;
?>

 

Podobne pytania

0 głosów
1 odpowiedź 451 wizyt
0 głosów
3 odpowiedzi 569 wizyt

93,481 zapytań

142,414 odpowiedzi

322,758 komentarzy

62,893 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...