Kawałek Kodu

Co tu się odskryptala?! Czyli programistyczne porady na luzie

Zły brat bliźniak, czyli usuwanie duplikatów w MySQL.

Zdarza się, że chcemy w tabeli usunąć duplikaty. Przemilczmy powód, dla którego nie powinny się one tam znaleźć. Natomiast innym powodem, o którym możemy mówić, może być sytuacja gdy po prostu z jakiegoś źródła dostajemy takie dane (przychodzą z urządzenia rejestrującego lub importujemy dane zewnętrzne).

Dajmy za przykład tabelę gdzie przechowujemy temperatury z danego dnia. Ale urządzenie odczytujące temperaturę i zapisujące do bazy danych robi to w ciągu doby kilkukrotnie.

Czytaj dalej

Chciałbym podkreślić że...Czyli o podkreśleniu tekstu w edytowalnym polu.

Niedawno trafiłem na artykuł dotyczący dynamicznego wydłużania podkreślenia wpisywanego tekstu. Rozwiązanie opisywane w artykule jest zastosowane w wyszukiwarce serwisu TripAdvisor. Opiera się o bibliotekę React, a elementem podkreślenia "śledzącym" długość tekstu jest element SPAN.

My dziś podejmiemy wyzwanie i zrobimy to inaczej. Bez użycia JavaScript.

Czytaj dalej

Radio z klonu, czyli o klonowaniu zaznaczonego przycisku radio.

Jeśli doszedłeś już do etapu kiedy to klonowanie elementów nie jest wiedzą tajemną i nie sprawnia Ci żadnych problemów, to być może przed kolejnym etapem natrafiłeś na inny problem.

Podczas kopiowania zaznaczonego elementu radio ten traci swoje zaznaczenie.

Dlaczego tak się dzieje?

Czytaj dalej

Ale numer! Czyli o numeracji atrybutów klonowanych elementów formularza.

Nadawanie unikalnych atrybutów dla kolonowanych elementów formularza może przyprawić o ból głowy. Jeśli chodzi o atrybut id, to element nie musi go posiadać, ale jeśli powiążemy do niego etykietę (LABEL), która nie otacza tego elementu, to należałoby etykiecie nadać atrybut for, a co za tym idzie elementowi atrybut id. Co do atrybutu name, to oczywistym jest, że chcemy go mieć, jeśli dane będziemy przesyłać dalej. A jeśli to element klonowany, to pewnie wartości całej grupy takich elementów będziemy odbierać jako tablicę, czyli tu na pewno musimy mieć unikalne name w formie tablicowej.

Czy można się objeść bez wyrażeń regularnych?

Czytaj dalej

I was framed! Czyli jak wrobić element w kilka ramek.

Wydusiłeś kiedyś wszystkie informacje z CSS, na tyle, że zabrakło kolejnej ramki do elementu na stronie? Chciałoby się rzec: The border is not enough. Jeśli tak się stało, to dziś mam dla Ciebie tajną misję polegającą na znalezieniu dwóch nowych agentów udających border. Border już poznałeś. Współpracuje blisko z naszym elementem.

A jacy są pozostali dwaj?

Czytaj dalej

Święta, święta i po świętach, czyli dni świąteczne w MySQL.

Chyba zetknąłeś się Czytelniku z problemem uwzględniania dni świątecznych w systemach zależnych od czasu/daty. Jeśli nie, to się zetkniesz, a dziś zapraszam Cię na skosztowanie tego co może Ci się przydać.

Zaczniemy od wygenerowania danych dotyczących stałych świąt. Użyjemy do tego następującego zapytania (numer 1):

SELECT CONCAT(rok,dm) AS data
FROM
(SELECT '-01-01' AS dm UNION ALL SELECT '-01-06' UNION ALL SELECT '-05-01' UNION ALL SELECT '-05-03' UNION ALL SELECT '-08-15' UNION ALL SELECT '-11-01' UNION ALL SELECT '-11-11' UNION ALL SELECT '-12-25' UNION ALL SELECT '-12-26') AS dni,
(SELECT 2018 AS rok) AS lata

Utworzyliśmy tu zapytanie korzystające z wyniku iloczynu karezjańskiego (każdy z każdym) dwóch podzapytań. Jednym zapytaniem generujemy dni i miesiące Świąt, drugim rok. W tym przypadku rok ustaliliśmy na stałe, choć można użyć wyrażenia: YEAR(CURDATE()). Jeśli zapytanie będzie wybierać kilka lat (poprzez UNION ALL), wtedy wynik zapytania wygeneruje dni świąteczne dla tych kilku lat.

Czytaj dalej