Marta Długa 13 Czerwca 2020 13 Czerwca 2020 Skrypt, który ma pokazać ile dni ma dany miesiąc po wskazaniu miesiąca i roku z formularza przez użytkownika. Nie wiem gdzie mam błąd. Proszę o poprawienie błędu w kodzie php. <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> <label for="rok">Rok:</label> <select name="rok"> <?php for($i=1900; $i<=2090;++$i) echo '<option value="'.$i.'">'.$i.'</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 $rok['rok'] = $miesiac['miesiac']; for ($i = 1; $i <= 12; $i++) { $miesiac[$i] = date("t", mktime(0, 0, 0, $i, 1, $rok)); } var_dump($miesiac); ?> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 13 Czerwca 2020 13 Czerwca 2020 To musi być `select`? <?php declare(strict_types=1); function getIntFromPost(string $inputName, int $min, int $max): ?int { $options = [ 'default' => null, 'min_range' => $min, 'max_range' => $max, ]; return filter_var(filter_input(INPUT_POST, $inputName, FILTER_SANITIZE_NUMBER_INT), FILTER_VALIDATE_INT, [ 'options' => $options, ]); } $month = getIntFromPost('miesiac', 1, 12); $year = getIntFromPost('rok', 1900, 2090); if ($month === null || $year === null) { return 0; } $dateTime = \DateTimeImmutable::createFromFormat('Y.m', sprintf('%d.%d', $year, $month), new \DateTimeZone('Europe/Warsaw')); return (int)($dateTime->format('t')); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 13 Czerwca 2020 Autor 13 Czerwca 2020 Ten kod nie działa. Użytkownik wybiera z formularza miesiąc np. czerwiec i rok np. 2020, klika sprawdź. Pisze błąd declare(strict_types=1); Usunęłam declare(strict_types=1); klikam sprawdź i nic nie wyświetla. Powinno mu się wyświetlić 30 a tu nic się nie wyświetla Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 13 Czerwca 2020 13 Czerwca 2020 51 minut temu, Marta Długa napisał: Pisze błąd declare(strict_types=1); To jaką Ty masz wersję PHP? A to, że się nie wyświetla, to przez to, że są return (dwa ostatnie), a nie echo. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 13 Czerwca 2020 Autor 13 Czerwca 2020 Korzystam z xamp i pisze kod w notepad++ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 13 Czerwca 2020 13 Czerwca 2020 2 minuty temu, Marta Długa napisał: Korzystam z xamp No ale aktualny Xampp ma wersję PHP 7.4 z tego co widzę: https://www.apachefriends.org/pl/download.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 13 Czerwca 2020 Autor 13 Czerwca 2020 Tak aktualny instalowałam najnowszą wersje Nie przyjmuje declare(strict_types=1); wywala błąd Jest jakiś inny łatwiejszy sposób dla początkujących ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 13 Czerwca 2020 13 Czerwca 2020 34 minuty temu, Marta Długa napisał: Nie przyjmuje declare(strict_types=1); wywala błąd Daj konkretną treść błędu. 34 minuty temu, Marta Długa napisał: Jest jakiś inny łatwiejszy sposób dla początkujących ? Pewnie że jest - strukturalnie. Podobnie jak zrobiłaś to z 'kalkulatorem'. Tylko, że w swoim kodzie nawet nie odebrałaś danych z formularza. Nie wiem też po co tam jest ta pętla. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 13 Czerwca 2020 Autor 13 Czerwca 2020 Błąd Fatal error: strict_types declaration must be the very first statement in the script in C:\xampp\htdocs\Data\ostatni_dzien_miesiaca.php on line 21 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 13 Czerwca 2020 13 Czerwca 2020 No, musi być na samym początku. Co masz wcześniej? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 13 Czerwca 2020 Autor 13 Czerwca 2020 Po zmianie na echo błąd Fatal error: strict_types declaration must be the very first statement in the script in C:\xampp\htdocs\Data\ostatni_dzien_miesiaca.php on line 21 Na początku html i podnim php. <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> <label for="rok">Rok:</label> <select name="rok"> <?php for($i=1900; $i<=2090;++$i) echo '<option value="'.$i.'">'.$i.'</option>'; ?> </select></br></br> </br></br><input type="submit" name="sprawdz" value="Sprawdź" /> </br></br><input type="reset" name="reset" value="Wyczyść" /> </form> <?php declare(strict_types=1); function getIntFromPost(string $inputName, int $min, int $max): ?int { $options = [ 'default' => null, 'min_range' => $min, 'max_range' => $max, ]; echo filter_var(filter_input(INPUT_POST, $inputName, FILTER_SANITIZE_NUMBER_INT), FILTER_VALIDATE_INT, [ 'options' => $options, ]); } $month = getIntFromPost('miesiac', 1, 12); $year = getIntFromPost('rok', 1900, 2090); if ($month === null || $year === null) { echo 0; } $dateTime = \DateTimeImmutable::createFromFormat('Y.m', sprintf('%d.%d', $year, $month), new \DateTimeZone('Europe/Warsaw')); echo (int)($dateTime->format('t')); ?> Dałam na początek przed html <?php declare(strict_types=1); ?> I nadal błąd Fatal error: strict_types declaration must be the very first statement in the script in C:\xampp\htdocs\Data\ostatni_dzien_miesiaca.php on line 2 Poproszę o kod prościejszy bo ten jest dla mnie nie zrozumiały. Dopiero się uczę Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 13 Czerwca 2020 13 Czerwca 2020 <?php declare(strict_types=1); function getIntFromPost(string $inputName, ?int $min = null, ?int $max = null): ?int { $options = []; $options['default'] = null; if ($min !== null) { $options['min_range'] = $min; } if ($max !== null) { $options['max_range'] = $max; } return filter_var(filter_input(INPUT_POST, $inputName, FILTER_SANITIZE_NUMBER_INT), FILTER_VALIDATE_INT, [ 'options' => $options, ]); } $month = getIntFromPost('miesiac', 1, 12); $year = getIntFromPost('rok', 1900, 2090); $days = 0; if ($month !== null && $year !== null) { $dateTime = \DateTimeImmutable::createFromFormat('Y.m', sprintf('%d.%d', $year, $month), new \DateTimeZone('Europe/Warsaw')); $days = (int)($dateTime->format('t')); } if ($days > 0) { echo sprintf('Ilość dni w mięsiącu: %d', $days); } ?> <form action="ostatni_dzien_miesiaca.php" method="post"> <label for="miesiac">Miesiąc:</label> <select name="miesiac"> <?php for($m = 1; $m <= 12; $m++) { echo '<option value="' . $m . '">' . $m . '</option>'; } ?> </select> <label for="rok">Rok:</label> <select name="rok"> <?php for($y = 1900; $y <= 2090; $y++) { echo '<option value="' . $y . '">' . $y . '</option>'; } ?> </select> <input type="submit" name="sprawdz" value="Sprawdź" /> <input type="reset" name="reset" value="Wyczyść" /> </form> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 14 Czerwca 2020 Autor 14 Czerwca 2020 Nadal błąd declare(strict_types=1); Fatal error: strict_types declaration must be the very first statement in the script in C:\xampp\htdocs\Data\ostatni_dzien_miesiaca.php on line 3 Poproszę o kod bez declare(strict_types=1). To ma być kod dla początkujących łatwy do zrozumienia. Ten kod jest niezrozumiały. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 14 Czerwca 2020 14 Czerwca 2020 Przecież ten kod działa. Testowałem go u siebie... Sprawdź czy plik masz w dobrym kodowaniu: UTF-8 (bez BOM). Czego nie rozumiesz w tym kodzie? To Ci wytłumaczę. Ewentualnie staraj się napisać kod samej, a później odezwij się w temacie. Odebrałaś dane z formularza w poprzednim temacie, więc tutaj też nie powinnaś mieć problemu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 14 Czerwca 2020 Autor 14 Czerwca 2020 Już mam o to mi chodziło kod łatwy i zrozumiały. <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> <label for="rok">Rok:</label> <select name="rok"> <?php for($i=1900;$i<=2090;++$i) echo '<option value="'.$i.'">'.$i.'</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 "Wybrany miesiąc ma ". $miesiac . "dni." ; ?> Jak zamienić cyferki na miesiące? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
aXenDev 14 Czerwca 2020 14 Czerwca 2020 33 minuty temu, Marta Długa napisał: Jak zamienić cyferki na miesiące? Na przykład za pomocą switch. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 14 Czerwca 2020 Autor 14 Czerwca 2020 Nie pokazuje błędu , ale nadal pokazuje cyfry zamiast miesiące. Prosze o pomoc <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>'; switch ($l) { case '01': $l = 'stycze?'; break; case '02': $l = 'luty'; break; case '03': $l = 'marzec'; break; case '04': $l = 'kwiecie?'; break; case '05': $l = 'maj'; break; case '06': $l = 'czerwiec'; break; case '07': $l = 'lipiec'; break; case '08': $l = 'sierpie?'; break; case '09': $l = 'wrzesie?'; break; case '10': $l = 'pa?dziernik'; break; case '11': $l = 'listopad'; break; case '12': $l = 'grudzie?'; break; } ?> </select></br></br> <label for="rok">Rok:</label> <select name="rok"> <?php for($i=1900;$i<=2090;++$i) echo '<option value="'.$i.'">'.$i.'</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 "Wybrany miesiąc ma ". $miesiac . "dni." ; ?> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 14 Czerwca 2020 14 Czerwca 2020 1 godzinę temu, Marta Długa napisał: Jak zamienić cyferki na miesiące? Najwygodniej użyć tablicy. Wtedy `select` będzie wyglądać tak: <?php $months = ['Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Piździernik', 'Listopad', 'Grudzień']; ?> <select name="miesiac"> <?php foreach ($months as $number => $monthName) { echo '<option value="' . $number + 1 . '">' . $monthName . '</option>'; } ?> </select> Polecam zabrać się za 'czyste' programowanie. Nie rozumiesz podstaw, więc będzie ciężko Ci zrozumieć niektóre mechanizmy. Najlepiej zacząć od C++ i programowania strukturalnego w konsoli. Nie możesz użyć zmiennej wcześniej niż jej deklaracja, bo będzie rzucać błędem. Tak samo ze switch() - użyłaś instrukcji po samym wyświetleniu `option`. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
aXenDev 14 Czerwca 2020 14 Czerwca 2020 13 minut temu, Marta Długa napisał: Nie pokazuje błędu , ale nadal pokazuje cyfry zamiast miesiące. Prosze o pomoc <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>'; switch ($l) { case '01': $l = 'stycze?'; break; case '02': $l = 'luty'; break; case '03': $l = 'marzec'; break; case '04': $l = 'kwiecie?'; break; case '05': $l = 'maj'; break; case '06': $l = 'czerwiec'; break; case '07': $l = 'lipiec'; break; case '08': $l = 'sierpie?'; break; case '09': $l = 'wrzesie?'; break; case '10': $l = 'pa?dziernik'; break; case '11': $l = 'listopad'; break; case '12': $l = 'grudzie?'; break; } ?> </select></br></br> <label for="rok">Rok:</label> <select name="rok"> <?php for($i=1900;$i<=2090;++$i) echo '<option value="'.$i.'">'.$i.'</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 "Wybrany miesiąc ma ". $miesiac . "dni." ; ?> Bo zmieniasz je po wyświetleniu. Zmienną $l bierze wtedy z pętli. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 14 Czerwca 2020 Autor 14 Czerwca 2020 7 minut temu, -n3veR napisał: Polecam zabrać się za 'czyste' programowanie. Nie rozumiesz podstaw, więc będzie ciężko Ci zrozumieć niektóre mechanizmy. Najlepiej zacząć od C++ i programowania strukturalnego w konsoli. Zaczynałam od C++ ale tam jeszcze gorzej mi szło. Zależy mi na nauczeniu się PHP bo chce projektować strony . U mnie jest problem taki że nie wiem co do czego wykorzystać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 14 Czerwca 2020 14 Czerwca 2020 1 minutę temu, Marta Długa napisał: U mnie jest problem taki że nie wiem co do czego wykorzystać. Cieszę się, że masz determinację i wiesz co chcesz robić w przyszłości, ale zacznij od kursów i tutoriali - będziesz mniej sfrustrowana 'nierozumieniem'. Mamy sporo tematów z tego zakresu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 14 Czerwca 2020 Autor 14 Czerwca 2020 Przeczytałam wszystkie kursy w internecie chyba . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mativve 14 Czerwca 2020 Mativve jest moderatorem 14 Czerwca 2020 Przeczytać a przeczytać i zrozumieć to dwie różne rzeczy. Nie jestem za bardzo w temacie, ale przede wszystkim podstawy. Bez podstaw ciężko będzie cokolwiek pojąć. 14 minut temu, Marta Długa napisał: Zależy mi na nauczeniu się PHP bo chce projektować strony . Jeśli chcesz projektować strony pod względem wizualnym to PHP na wstępnym etapie jest zbędne. Tutaj wchodzi tak zwany UI (wygląd strony) oraz UX (to jakie odczucia ma użytkownik korzystając ze strony) oraz HTML, CSS oraz JS - dzięki temu projektuje się strony wizualnie. W wersji statycznej nic nie jest więcej potrzebne. Potem można zacząć wchodzić na wyższy poziom ucząc się frameworków do JS (React, Vue, Angular) lub wspomnianego tutaj PHP i także jego frameworków. Obie te części rozdziela się na kilka sekcji. Front-end - HTML, CSS, JS + frameworki Back-end - bazy danych, PHP + frameworki Full-stack - wszystko co wyżej + duża znajomość rzeczy z programowania Na początkowym etapie warto sobie zadać pytanie, co chcę robić programując/kodując bo potem można sobie nieźle w bani namieszać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marta Długa 14 Czerwca 2020 Autor 14 Czerwca 2020 Najpierw nauczyłam się HTML i CSS z tym problemu nie miałam. Chce wszystko robić co jest związane z html i CSS ale żeby przyjęli mnie do pracy musze znać jeszcze PHP i JS. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 14 Czerwca 2020 14 Czerwca 2020 @Marta Długa nie wiem na jakim poziomie masz angielski, więc podrzucam video po polsku: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kontynuuj dyskusję
Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.