![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Usiłuję wykonać generator numeru PESEL KOD TUTAJ
Mam prośbę o sprawdzenie i poprawienie błędów. Ten post edytował Malinaa 29.01.2020, 13:50:55 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
Nie bede ocenial czy prawidlowo to generujesz, ale pare poprawek odnosnie kodu
1) Zacznij uzywac PSR bo tragicznie sie czyta twoj kod, albo uzywaj php-cs-fixer co ci juz mowiono. A najlepiej i to ito 2) uzywaj === - tez zdaje ci sie juz mowilem. Po co pytasz o poprawy kodu skoro potem i tak sie nie stosujesz do wskazowek 3) brak typowania 4) Po co losujesz 2 liczby skoro i tak uzywasz zawsze jednej? array_rand($arrMale, 2); 5) if ($pRadioOptions == 'male') { $arand = array_rand($arrMale, 2); $sex = $arrMale[$arand[0]]; } else { $arand = array_rand($arrFemale, 2); $sex = $arrFemale[$arand[0]]; } Strasznie duza i bezsensowna duplikacja. Pomysl jak to poprawic 6) Jak juz uzywasz [] a nie array() to badz konsekwentny a nie raz to a raz tamto -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
1) PSR jest tu taka ilość materiału, że nie wiem jak się za to zabrać (a kod na dzisiaj).
2) === jak mam stosować jak nie znam zastosowania (w PHP 5 nie stosowałem, a 7 dopiero zacząłem używać) 3) typowanie tzn. try i catch - myślałem, że to tylko przy zapytaniach SQL 5) dobra byłaby tu jedna tablica $arrSex = array ( 'male' => array (1, 3, 5, 7, 9), 'female' => array (0, 2, 4, 6, 8) ); ale jak tu wylosować liczbę dla wartości male lub female? 6) jak rozumiem nowa składnia tablicy, powinna wyglądać tak: $arrSex = [ 'male' => [1, 3, 5, 7, 9], 'female' => [0, 2, 4, 6, 8] ]; Czy to masz na myśli? -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
ad2) No naprawde nie potrafisz zajrzec do manuala?
https://www.php.net/manual/en/language.oper....comparison.php ad3) Typowanie a nie lapanie wyjatkow. Typowanie czyli okreslanie typow dla zmiennych oraz typow dla zwrotek funkcji ad5) Nie, nie kazalem ci robic z tego tablicy wielowymiarowej, tylko usunac duplikacje ![]() Ad6 No tak, zmiana array() na [] ad1) Na poczatek zacznij od psr-1 oraz psr-12. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
2. Wiem co oznacza operator
=== identyczne == równe ale jeszcze nie czuję różnicy podobnie jak z array a [] . Tablice już poczułem ![]() 3. zacząłem w kodzie dodawać przed zmiennymi (int), (string)... chociaż tak sobie mi to jeszcze wychodzi. 5. Jeden jaki przyszedł mi pomysł na tę duplikacje to napisanie funkcji Kod function randomSex($arrValues = []) { $arrRand = array_rand($arrValues, 2); $sex = $arrValues[$arrRand[0]]; return $sex; } // Sex if ($pRadioOptions == 'male') { $sex = randomSex($arrMale); } else { $sex = randomSex($arrFemale); } ale kiedy usunę te 2: $arrRand = array_rand($arrValues); nie działa? Ten post edytował Malinaa 28.01.2020, 18:25:04 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
Cytat ale kiedy usunę te 2: $arrRand = array_rand($arrValues); nie działa? Bo nie czytasz manuala.... Cytat When picking only one entry, array_rand() returns the key for a random entry. Otherwise, an array of keys for the random entries is returned. Cytat Jeden jaki przyszedł mi pomysł na tę duplikacje to napisanie funkcji No i widzisz jak ladnie. Jak chcesz to potrafisz ![]()
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czytałem wymienione zdanie, ale nie skumałem co z tym zrobić.
Piękna jest ta funkcja. Jestem pełen podziwu: piękna, czysta i wspaniała jak kwiat doskonała ![]() Myślałem, że o takich rzeczach tylko się marzy, a tu proszę. Opowiedz jeśli można o tym: $sex = $pRadioOptions === 'male' ? randomSex($arrMale) : randomSex($arrFemale); kiedyś zdarzyło mi się pisać taki kod, ale obecnie średnio kumam ![]() jak to działa === ? : i gotowe (proste, bez cudowania z ifami - super) Teraz jest tak: https://dbm.org.pl/ Pozostała kosmetyka, kłopot jest z inputem. Jak dam input hidden nie kopiuje. Jak ukryć input, ale aby kopiowało numer? Ten post edytował Malinaa 29.01.2020, 13:52:28 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
Cytat Czytałem wymienione zdanie, ale nie skumałem co z tym zrobić. Tam bylo napisane, ze jak dasz 1 to zwroci ci od razu wylosowany element. Jak dasz wiecej niz 1, to zwroci ci tablic elementow. A na przyszlosc jak nie wiesz co pisza, to rob var_dump() i patrz co dostajesz. No banalniejszej metody na sprawdzanie juz nie ma. Odnosnie ?: znowu odsylam do manuala https://www.php.net/manual/en/language.oper...parison.ternary Co do pola ukrytego: widocznie nie dziala z polami ukrytymi. Tu masz obejscie https://stackoverflow.com/questions/3159329...xt-to-clipboard -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję bardzo. I kosmetyka została poprawiona.
Jest jeszcze fragment kodu... nie najlepszy. Czy możemy ten fragment poprawić? Kod // 10 digits number $fdigits = $lyear.$cmonth.$day.$rnumber.$sex; // Check digit $arrDigits = [9, 7, 3, 1, 9, 7, 3, 1, 9, 7]; $number = (string)$fdigits; $strlen = strlen($number); $count = 0; for ($i=0; $i<$strlen; $i++) { $count = $count + ((int)$arrDigits[$i] * (int)$number[$i]); $count ++; } $control_number = substr(strstr($count/10, '.'), 1); if ($control_number == '') $control_number = 0; // PESEL $pesel = $fdigits.$control_number; -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie musisz zmieniać na hidden. Wystarczy, że przesuniesz input poza ekran.
-------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
Pomijajac PSR, === oraz zbedne rzutowanie na INT w jednym miejscu to
substr(strstr($count/10, '.'), 1); - czyli chcesz pobrac reszte z dzielenia przez 10? Do tego sluzy MODULO czyli % w php -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Poprawiłem, teraz jest tak
Kod // 10 digits (number) $digits_number = $year_last.$month_number.$day.$random_number.$sex; // Number sum $arrBalance = [9, 7, 3, 1, 9, 7, 3, 1, 9, 7]; $number = (string)$digits_number; $strlen = strlen($number); $digit_sum = 0; for ($i=0; $i<$strlen; $i++) { $digit_sum += ($arrBalance[$i] * (int)$number[$i]); } // Checksum $checksum = $digit_sum % 10; // PESEL $pesel = $digits_number.$checksum; Pomińmy PSR (w tym kodzie), gdzie tutaj można użyć === ? INT - czy o ten chodziło. MODULO czy teraz jest dobrze? Zobaczyłem jeszcze jedno Kod // Month $month_number = $arrMonthsMore[(int)$year_first][(int)$month]; if (strlen($month_number) < 2) $month_number = (int)'0'.$month_number; W większości przypadków liczba (dla miesięcy) jest dwu cyfrowa, ale dla lat 1900-1999 są liczby jedno cyfrowe i brakuje 0 z przodu liczby przez co PESEL ma 10 nie 11 cyfr. Jak dodać 0 przed liczbą: 1, 2, 3... (01, 02, 03) -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
Cytat gdzie tutaj można użyć === No teraz w kodzie nie masz juz zadnego porownania wiec nigdzie,Tak, o ten INT chodzilo Zacznij uzywac PHP BBCODE a nie CODE - zle sie czyta co wstawiasz MODULO ok Cytat Jak dodać 0 przed liczbą: 1, 2, 3... (01, 02, 03) Oj leniuszk leniuszku...https://www.php.net/manual/en/function.str-pad.php -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Również poprawione, jest dobrze.
Jeszcze tylko PSR i będzie super. Ten post edytował Malinaa 29.01.2020, 13:28:15 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
Tak na totalnym marginesie:
nie: nie prawidłowa a: nieprawidłowa "nie " z przymiotnikami piszemy razem ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Totalnie nie zwróciłem uwagi w skrypcie na pisownie
i machnąłem orta (późno, ale poprawione). Zapytałbym jeszcze o inny temat, na który nie znalazłem jeszcze sposobu: http://forum.php.pl/index.php?showtopic=267491 Może ktoś wie więcej, jak zrobić taką ocenę dobrze? -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 01:03 |