Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Zyx, dodany: 30.06.2009 16:13, tagi: php

Dzisiaj, po czterech wersjach RC ukazała się finalna wersja PHP 5.3.0. Wnosi ona stosunkowo sporo nowości w samym języku, ale wciąż zachowuje prawie kompletną wsteczną kompatybilność ze starszymi skryptami. O tym, co się zjawi, napisanych zostało wiele artykułów, również na tym blogu, dlatego skupię się na nieco innym aspekcie - wdrożeniu oraz mniej znanej funkcjonalności.

Autor wpisu: Athlan, dodany: 30.06.2009 11:46, tagi: sql

Ostatnimi czasy potrzebowałem danych z sąsiedniej tabeli przy UPDATE jedngo z pól w bazie danych. Danych do przetworzenia było sporo, więc zwracałem uwagę na wydajność zapytania. Aby zebrać potrzebne informacje, można użyć jednego ze sposobów:

  1. Zebrać potrzebne dane za pomocą SELECT‘a, co sprawiłoby, że zajęta zostanie niepotrzebna pamięć w środowisku PHP podczas przypisania rezultatu do zmiennej.
  2. Wykonać SET z podzapytaniem, ale potrzebnych mi było kilka kolumn z sąsiedniej tabeli, podzapytanie może zwrócić tylko jedną określoną wartość.
  3. Wykonać JOIN przy update, czego niestety wówczas nie potrafiłem zrobić.

Kartkując manual nie natrafiłem się w standardowej dokumentacji na nic konkretnego, aż nie spojrzałem na bardzo przydatne komentarze użytkowników. Okazało się, że przy UPDATE można wykonywać dowolne JOIN‘y, schemat jest następujący:

UPDATE table JOIN another_table SET ...

W tym momencie mamy do dyspozycji wszystkie pola z dołączonej tabeli. Bardzo przydatne.

Przykład z życia.

Miałem za zadanie odznaczyć typy bukmacherskie na trafione, nietrafione, odwołane z przyczyn odwołania całego meczu piłkarskiego oraz te, które jeszcze nie mogą zostać oznaczone jako trafione lub nie, gdyż mecz się jeszcze nie odbył.

UPDATE typer_tickets_items
LEFT JOIN typer_events ON(event_id = item_event)
SET item_status = (
CASE
WHEN event_status IS NULL THEN NULL # mecz nie zostal rozegrany
WHEN event_status = -1 THEN -1 # mecz anulowany
WHEN event_status = item_bet THEN 1 # typ trafiony
ELSE 0 END # typ nietrafiony
) WHERE item_status IS NULL

Mam nadzieję, że komuś się przyda…

Autor wpisu: Potasiak, dodany: 27.06.2009 19:27, tagi: design, php

Ostatnio czytam dużo różnych opinii o systemach szablonów. Jedne są za ich używaniem, drugie na odwrót. Zwykle w argumentach przeciw pojawia się to samo uzasadnienie - tak, czy siak trzeba dodać trochę kodu do pliku szablonu. Po krótkich przemyśleniach i kilkunastu minutach pisania kodu udało mi się doprowadzić do unicestwienia tego argumentu.

Autor wpisu: Potasiak, dodany: 25.06.2009 21:46, tagi: php

Przez ostatnie lata bardzo popularne stały się znaczniki BBcode, używane jako odpowiedniki HTML-a dla osób, które tego języka nie znają. Większość z nich stała się już standardem, więc jeśli chcesz tworzyć witrynę w myśl Web 2.0, to bbcode będzie do niej doskonałym dodatkiem. Przedstawię wam jak możecie zrobić własny mechanizm znaczników.

Autor wpisu: Potasiak, dodany: 24.06.2009 19:01, tagi: php, sql

Wiele osób boryka się z problemem przechowywania daty w PHP. Najpierw zapisują ją w określonym formacie, a później pojawia się problem zmiany tegoż formatu lub dodania np. godziny, czy minut. Jest na to pewien bardzo dobry sposób, który Wam tutaj przedstawię. Pokażę także w jaki sposób możecie skonwertować źle sformatowaną datę na dowolny format.

Autor wpisu: eRIZ, dodany: 23.06.2009 16:25, tagi: php

Jakiś czas temu Mateusz poprosił o parę słów na temat stanowiska do webdeveloperki na maszynie pracującej pod kontrolą Windows. Zagadnienie nie jest takie banalne, na jakie się wydaje, gdyż pierwotnie to systemy Unixowe były projektowane bardziej dla developerów, potem zaczęto myśleć o ZU. Natomiast w przypadku Windows można powiedzieć, że sytuacja była odwrotna.

Sam pracuję pod Windows (z wyboru, nie z przymusu), niektórzy pewnie też próbują; postaram się udowodnić, że wbrew obiegowym opiniom i pod Oknami da się wygodnie kodzić.

Grunt, to odpowiednio przygotowane środowisko, bo łyżeczką jeziora nie wykopie. [;

Autor wpisu: stormfly, dodany: 20.06.2009 14:31, tagi: sql

Pomagałem dzisiaj na IRCnet (#php.pl) w zapytaniu do bazy MySQL, które polegało na wybraniu rekordów z najmniejszą ceną pogrupowanych według wybranej kolumny. Bardzo szybko napisałem jak to ma wyglądać w PostgreSQL, ale niestety w MySQL użycie DISTINCT jest trochę ułomne. Zacznijmy...
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.