![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
Mam taką tabelkę ze zmiennymi:
W sumie 8 pozycji (do litery "H") Problem w tym, że na końcu muszę dodać te zmienne (wiersz 9 i dalsze w przedstawionym kodzie) pod warunkiem, że... i tutaj zaczynają się schody. Zmienna $wiersz2['Pow_Uzyt_A'] ma być brana pod uwagę w dodawaniu tylko wtedy, kiedy zmienna $wiersz2['Status_A'] = 'A' . I analogicznie wartość ze zmiennej $wiersz2['Pow_Uzyt_B'] będzie dodawana, jeżeli zmienna $wiersz2['Status_B'] = 'B' i tak dalej. W bazie pole w kolumnach "Status_[A...H]" po prostu zawiera tylko jedną literę (A...H) lub jest puste. Jak to zrobić? Ten post edytował Therminus 24.08.2022, 13:23:50 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Użyj funkcji if.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Wykorzystanie (w Twoim przypadku): Ten post edytował Salvation 24.08.2022, 16:26:56 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat PS. Czy ktoś może wyłączyć parsowanie na emoty w blokach kodu? Niestety nie. Ale mozesz zrobic to sam przed wyslaniem postu, WYLACZ EMOTKI czy jakos tak checkbox. To wylaczy dla calego postu |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie. Ale mozesz zrobic to sam przed wyslaniem postu, WYLACZ EMOTKI czy jakos tak checkbox. To wylaczy dla calego postu Dzięki! Zapamiętam (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ps: oj ta funkcja co naskrobales to chyba cos ci nie wyszla (IMG:style_emoticons/default/wink.gif) I to tak dosc mocno (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Niby dlaczego? Wszystko dobrze jest wg mnie: https://3v4l.org/4MkRf
Ten post edytował Salvation 24.08.2022, 16:26:17 |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A widzisz, nie doczytalem o co chodzilo autorowi. Zwracam honor (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
[quote name='Salvation' date='24.08.2022, 16:52:52 ' post='1259713']
Coś mi się ta funkcja nie odpala z moim kodem.
Nie jestem pewien wiersza nr 3. Być może tutaj jest błąd. Ten post edytował Therminus 25.08.2022, 13:53:39 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Czemu zrobiles
mysqli_fetch_array $row ? Przeciez wyraznie miales napisane array $row Row to tablica ps: I patrze nadal masz wywalone na to ze twoj skrypt jest podatny na sql injection. Zamiast to poprawic jak ci to juz dawno mowiono to ty wiesz "lepiej " |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie jestem pewien wiersza nr 3. Być może tutaj jest błąd. Nie być może, a tak. Niepotrzebnie zmieniałeś deklarację funkcji. Miałeś zrobić jedynie copy-paste do siebie do kodu. I popraw ten SQL Injection, bo Puchatek zaraz krwotoku dostanie (IMG:style_emoticons/default/haha.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
ps: I patrze nadal masz wywalone na to ze twoj skrypt jest podatny na sql injection. Mam wywalone, bo mnie w LAN nikt atakował nie będzie. (IMG:style_emoticons/default/oneeyedsmiley02.png) Niepotrzebnie zmieniałeś deklarację funkcji. Na początku rzeczywiście przekopiowałem tak jak było, ale nie działało. Potem kombinowałem i zmieniłem na próbę, a przed wysłaniem posta zapomniałem zmienić z powrotem. Mam w przeglądarce biały ekran. Jak zakomentuję tę funkcję, to stronka się wyświetla (oczywiście z błędem o próbie użycia nie zadeklarowanej funkcji). Wersja PHP: 7.4.29 Cytat(Salvation) I popraw ten SQL Injection, bo Puchatek zaraz krwotoku dostanie (IMG:style_emoticons/default/haha.gif) (IMG:style_emoticons/default/haha.gif) Ten post edytował Therminus 26.08.2022, 13:05:32 |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Mam wywalone, bo mnie w LAN nikt atakował nie będzie Tyko kiedys zaczniesz pisac poza LAN i nagle ZONK bo zle nawyki zostaly. Jaki problem tam uzyc binodwania? Toz to 10 sekund roboty :/ Cytat Na początku rzeczywiście przekopiowałem tak jak było, ale nie działało. Potem kombinowałem i zmieniłem na próbę, a przed wysłaniem posta zapomniałem zmienić z powrotem. Mam w przeglądarce biały ekran. Jak zakomentuję tę funkcję, to stronka się wyświetla (oczywiście z błędem o próbie użycia nie zadeklarowanej funkcji). Pewnie uzywasz starego php. Salvation niestety lubi zakladac ze ludzie jada na najnowszym. Od mysli ze ktos uzywa starego to jemu krwotok grozi (IMG:style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
Jaki problem tam uzyc binodwania? Toz to 10 sekund roboty :/ Jak się już wie co to jest bindowanie w tym przypadku. A ogarnięcie tematu, to dla mnie pewnie kilkanaście godzin. (IMG:style_emoticons/default/tongue.gif) Cytat(nospor) Pewnie uzywasz starego php. Salvation niestety lubi zakladac ze ludzie jada na najnowszym. Od mysli ze ktos uzywa starego to jemu krwotok grozi (IMG:style_emoticons/default/tongue.gif) Tak pomyślałem, dlatego edytowałem poprzedniego posta PHP 7.4.29 (cli) (built: Apr 14 2022 14:45:47) ( ZTS ) Nie taki bardzo stary, zatem... EDIT: Sprawdziłem na tej stronce gdzie Salvation umieścił kod i wybrałem moją wersję PHP i... tam działa. (IMG:style_emoticons/default/smile.gif) A u mnie nie chce. Ten post edytował Therminus 26.08.2022, 13:38:36 |
|
|
![]()
Post
#15
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Skoro masz biala strone to sprawdz logi, jakis blad masz
Cytat Jak się już wie co to jest bindowanie w tym przypadku. A ogarnięcie tematu, to dla mnie pewnie kilkanaście godzin https://www.php.net/manual/en/mysqli-stmt.bind-param.php |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
Skoro masz biala strone to sprawdz logi, jakis blad masz Wiemy coś więcej. PHP Fatal error: strict_types declaration must be the very first statement in the script in /var/www/(...)/lok_uzytkowe.php on line 147, U mnie ta linia to:
Dzięki za linka. |
|
|
![]()
Post
#17
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat PHP Fatal error: strict_types declaration must be the very first statement in the script in /var/www/(...)/lok_uzytkowe.php on line 147, Komunikat dosc jasny... Daj declare(strict_types=1); Na poczatku pliku jako pierwsza linia albo wywal to w ogole |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#19
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No bo w kodzie masz
$userPower = (int)($row['Pow_Uzyt_'.$char] questionmark.gif 0); zamien na $userPower = (float)($row['Pow_Uzyt_'.$char] questionmark.gif 0); Dostales pare linije kkodu, no naprawde mogles sie zastanowic co robi kazda z nich. Branie z forum tez polega na nauce tego co sie dostaje Cytat Na początku pliku, to znaczy zaraz za <?php ? Tak miałem od początku. Komunikat bledu mowil jednak co innego, mowil tez ze bylo to w linii 147 a nie na poczatku pliku |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Od mysli ze ktos uzywa starego to jemu krwotok grozi :P xDDD dokładnie! przy dodawaniu nie bierze pod uwagę części dziesiętnych liczb. Bo masz rzutowanie na INT, no ale to już nospor wyjaśnił. Na początku pliku, to znaczy zaraz za <?php ? Tak miałem od początku. Jak znam życie, to ten plik co umieściłeś w temacie include'ujesz do index.php albo do innego pliku, prawda? |
|
|
![]()
Post
#21
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Jak znam życie, to ten plik co umieściłeś w temacie include'ujesz do index.php albo do innego pliku, prawda? Includowanie tu nie ma nic do znaczenia. declare ma byc na poczatku i tyle w temacie. Bardziej bym odstawial ze na poczatku tego pliku ma wpyte kodu HTML, a dokladnie 146 linii ( (IMG:style_emoticons/default/wink.gif) ) a dopiero potem otwiera <?php i daje declare. A na poczatku znaczy na poczatku i tyle (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
No bo w kodzie masz $userPower = (int)($row['Pow_Uzyt_'.$char] questionmark.gif 0); Aaaa... ślepota. (IMG:style_emoticons/default/haha.gif) Cytat(nospor) Komunikat bledu mowil jednak co innego, mowil tez ze bylo to w linii 147 a nie na poczatku pliku Ale jesteś czujny, (IMG:style_emoticons/default/smile.gif) W pliku mam trochę HTML-a, potem jedną sekcję PHP, potem znowu HTML, i drugą sekcję PHP. I te 147 jest właśnie na początku tej drugiej sekcji. Już dodaje dobrze. (IMG:style_emoticons/default/smile.gif) Przy okazji mam pytanie nietypowe... chcę w rzeczonej tabelce dać kolorowe litery, cyfry i jednocześnie pogrubione, ale nie mogę tego efektu uzyskać. Albo mam bold, albo kolor Coś takiego: Jak wyrzucę z kodu "font-weight: bold" to kolor jest, jak wyrzucę "color:blue", to mam pogrubienie (czarne). Zaklęcia jakie znalazłem w sieci nie działają. (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#23
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
nie
style= "font-weight: bold", "color:blue" a: style= "font-weight: bold,color:blue" |
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
style= "font-weight: bold,color:blue" To było pierwsze, co zastosowałem, potem kombinowałem inaczej (IMG:style_emoticons/default/smile.gif) Niestety, kolor działa, bold nie działa. (IMG:style_emoticons/default/thumbsdownsmileyanim.gif) |
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
style= "font-weight: bold; color:blue"
|
|
|
![]()
Post
#26
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Oczywiscie sredni a nie przecinek jak raczyl poprawic trueblue.
|
|
|
![]()
Post
#27
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#28
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
@Salvation troszkę się przyczepię do tej funkcji.
Mnie uczono na studiach, że funkcja napisana dobrze poza oczywistymi przypadkami ma być nienaruszalna. A co jeśli kodującemu przyjdzie ochota rozszerzyć zakres dajmy na to do K? Tablica ta powinna być argumentem funkcji. Po co też dodatkowa funkcja mb_strtoupper? Nie można od razu tablicy z dużymi literami zdefiniować? Sorki, że się czepiam, ale jeśli chodzi o kod to troche pedantyczny jestem a że wywodzę się z C to operatory trójargumentowe jakoś same mi się piszą :) Kod function summary(array $chars, array $row): int
{ $sum = 0; foreach($chars as $char) { $status = (string)($row['Status_' . $char] ?? ''); $userPower = (int)($row['Pow_Uzyt_' . $char] ?? 0); $sum += ($status === $char) ? $userPower : 0; } return $sum; } $chars = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']; $array = [ 'Status_A' => 'A', 'Pow_Uzyt_A' => 10, 'Status_B' => 'B', 'Pow_Uzyt_B' => 25, 'Status_C' => '', 'Pow_Uzyt_C' => 100, ]; echo summary($chars, $array); Ten post edytował gino 27.08.2022, 06:48:14 |
|
|
![]()
Post
#29
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Mnie uczono na studiach, że funkcja napisana dobrze poza oczywistymi przypadkami ma być nienaruszalna. Też kończyłem studia i takich głupot nie słyszałem na wykłądach. A co jeśli kodującemu przyjdzie ochota rozszerzyć zakres dajmy na to do K? Tablica ta powinna być argumentem funkcji. Jak dla mnie, niepotrzebne rozszerzenie o argument. Sama tablica powinna być "zamknięta" w funkcji, bo to jest baza funkcji. + Nie programuje się na zapas. Jest to jedna z zasad dobrych praktyk (IMG:style_emoticons/default/wink.gif) Po co też dodatkowa funkcja mb_strtoupper? Nie można od razu tablicy z dużymi literami zdefiniować? Można. Szybciej mi jednak było użyć małych liter i skorzystać z funkcji (IMG:style_emoticons/default/biggrin.gif) - z założenia też wychodzę, że to co "przyjmę" jest z małych liter. Równie dobrze możesz użyć stringa i iterować po tym :shrug: Rozwiązanie zależy od autora (IMG:style_emoticons/default/wink.gif) A żeby było prawilniej i z zachowaniem typowania od początku, to $row powinno być VO, ale wiadomo jak to jest z "projektami do szuflady" i nauką (IMG:style_emoticons/default/wink.gif) Ten post edytował Salvation 28.08.2022, 22:40:16 |
|
|
![]()
Post
#30
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Może inaczej ujmę nienaruszalność, chodzi o to, że minimalizuje się czas do późniejszego grzebania w funkcjach, metodach ogólnie w bibliotekach współdzielonych lub pisanych dla konkretnego programisty, czasem mniej ogarniętego - do zera. Opis co ma robić ta funkcja nie narusza praktyki pisania na zapas w żadnym wypadku.
Coś należy lub nie do "bazy" funkcji? Sorki, nie znam takiego pojęcia. Może to jakiś skrót myślowy, niemniej domyślam się o co chodzi. Dane które mogą być w przyszłości zmienione lub rozszerzone nie należą do niej. Pracowałeś kiedyś w projekcie w którym brało udział kilkunastu programistów wzwyż? Bo ja wiele razy. I jeśli widzieliśmy, pomimo opisu projektu często niedokładnego z racji tego, że ktoś kto to nadzorował miał delikatnie mówiąc wywalone, jakieś założenie nie było opisanie dokładnie np. jak tutaj zakres może ulec zmianie to się to pisało od razu. Uwierz, to czasem dobra praktyka. Później piszesz coś innego, ktoś sobie jednak przypomni że zakres może się zmienić i zawraca Ci głowę, którą masz zaprzątniętą czymś innym bo już piszesz coś innego. A uwierz mi też, że wszystko jest na wczoraj, cito, już, death line itd. Funkcja nie traci nic z opisu i działania i nic nie jest pisane na zapas. Sorki, że trochę nieopatrznie wywołałem dyskusje zupełnie tutaj zbędną, więc to ostatni mój post w tym temacie. |
|
|
![]()
Post
#31
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem w ogóle skąd pomysł na CR w wątku (IMG:style_emoticons/default/biggrin.gif) to nie SO. Mogłeś dać swoje rozwiązanie i tyle, a nie czepiać się teraz czyjegoś kodu, bo wg Ciebie nie jest "piękny".
Jakoś w innych tematach nie widać Twoich postów z poprawianiem czyichś kodów, a też nie są idealne ;D A odnośnie "bazy", to miałem na myśli to, że funkcja "summary" podsumowuje JEDYNIE kolumny A-H. Na chwilę obecną spełnia założenia. Trzeba będzie to rozszerzyć, przepisać lub delikatnie zmienić, to przyjdzie czas na to. Tak działa green field. NIGDY nie pisze się idealnego kodu od razu, bo jedynie co się traci, to czas. A czas, to pieniądze klienta. I dla Twojej wiadomości. Pracowałem i sam, i w zespołach po 15-20 osób. Także multi-narodowościowych (IMG:style_emoticons/default/wink.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 15:06 |