Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

24 Stron V   1 2 3 > » 

mortus
Napisane: 1.05.2017, 20:49:45





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Przecież wyświetlasz płeć jako liczbę 1 lub 2. Jeśli chcesz wyświetlić tekst, to zmień funkcję getSex() i zastosuj prostego ifa, w którym sprawdzisz czy $this->sex to 1, czy dwa i zwrócisz (return) odpowiednio "female" lub "male".
  Forum: Przedszkole · Podgląd postu: #1215073 · Odpowiedzi: 7 · Wyświetleń: 1 057

mortus
Napisane: 5.11.2014, 20:41:22





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Skoro jest to zabieg celowy, to konstruktor encji Song powinien wyglądać tak:
  1. public function __construction(string $title, Album $album) {
  2. $this->title = $title;
  3. $this->album = $album;
  4. }

Natomiast podczas tworzenia obiektu Song powinieneś podać zarówno jego title, jak i Album, do którego Song jest przypisany:
  1. $album = new Album();
  2. $song = new Song('Jakiś tytuł', $album);

Nie jestem pewien, czy hydrator Doctrine poradzi sobie z tym, gdyby jednak miał, to trzeba to uwzględnić w pętli foreach:
  1. $songsCollection = new \Doctrine\Common\Collections\ArrayCollection();
  2. foreach ($killEmAllData['songs'] as $songArray) {
  3. $songArray['album'] = $killEmAll;
  4. $song = $hydrator->hydrate($songArray, new \Album\Entity\Song());
  5. $songsCollection->add($song);
  6. }
  7. $killEmAll->addSongs($songsCollection);

Mamy tutaj takie małe "błędne" koło.
  Forum: PHP · Podgląd postu: #1131017 · Odpowiedzi: 6 · Wyświetleń: 1 043

mortus
Napisane: 27.10.2014, 20:10:27





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

  1. $tablica_po_zmianie = array();
  2. foreach($tablica_przed_zmiana as $key => $value) {
  3. $region = $value['region'];
  4. $tablica_po_zmianie[$region] = $value;
  5. unset($tablica_po_zmianie[$region]['region']);
  6. }
  Forum: Przedszkole · Podgląd postu: #1129918 · Odpowiedzi: 2 · Wyświetleń: 336

mortus
Napisane: 27.10.2014, 21:05:41





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Jeśli używasz dropdown menu z Wordpres'a, to:
  1. ul.dropdown > li.current-menu-item.menu-item-667 > a {
  2. color: red !important;
  3. }
  4. ul.dropdown > li.current-menu-parent.menu-item-667 > a {
  5. color: red !important;
  6. }
  7. ul.dropdown > li.current-menu-item.menu-item-831 > a {
  8. color: #45D820 !important;
  9. }
  10. ul.dropdown > li.current-menu-parent.menu-item-831 > a {
  11. color: #45D820 !important;
  12. }
  13. ul.dropdown > li.current-menu-item.menu-item-710 > a {
  14. color: #17CEEA !important;
  15. }
  16. ul.dropdown > li.current-menu-parent.menu-item-710 > a {
  17. color: #17CEEA !important;
  18. }

Gdyby to było menu bez rozwijania, to można śmiało usunąć znaki >, które oznaczają przynależność lub relację parent - children (jak kto woli).
  Forum: CSS · Podgląd postu: #1129923 · Odpowiedzi: 4 · Wyświetleń: 1 233

mortus
Napisane: 4.10.2014, 13:49:46





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Ustaw klucz na obie kolumny:
  1. protected $_primary = array('ClientLogin', 'GroupID');

Nie będzie to mieć negatywnych wpływów na działanie aplikacji, a nawet powinno nieco je przyspieszyć. Niestety według specyfikacji Zend_Db_Table nie może korzystać z tabel, które nie posiadają klucza głównego. Więcej na http://framework.zend.com/manual/1.10/en/zend.db.table.html.
  Forum: Frameworki · Podgląd postu: #1127451 · Odpowiedzi: 1 · Wyświetleń: 1 063

mortus
Napisane: 23.06.2013, 16:57:50





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Wygląda na to, że połączenie z bazą danych (zmienna $dbc) nie istnieje w tym miejscu i w dodatku nie ma komunikatu o tym, że nie można nawiązać połączenia. Pokaż cały kod, być może mysqli_connect jest czymś uwarunkowane i znajduje się w miejscu, w którym warunek nie jest spełniony.
  Forum: PHP · Podgląd postu: #1052167 · Odpowiedzi: 4 · Wyświetleń: 316

mortus
Napisane: 3.06.2013, 19:01:08





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Cytat(istrd @ 3.06.2013, 17:37:21 ) *
Tak jakby funkcja $.ajax wykonywała się dopiero po wyjściu z pętli.

Bo prawie tak jest, wszystkie te "appendy" i metoda .ajax() uruchamiane są niemal jednocześnie i "nie czekają" na zakończenie żądania AJAX.
Wrzuć je do callback-u success metody .ajax().
  Forum: Po stronie przeglądarki · Podgląd postu: #1048873 · Odpowiedzi: 1 · Wyświetleń: 331

mortus
Napisane: 8.05.2013, 11:15:09





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Zapomnij o findDependentRowset(). Wspomniana metoda działa podobnie, jak to przedstawiłeś i jest to rozwiązanie nieoptymalne. Powinieneś użyć tutaj podwójnego złączenia JOIN. Oczywiście w wyniku dostaniesz masę nadmiarowych danych (i je musisz odpowiednio przetworzyć w pętli), ale i tak będzie to najlepsze rozwiązanie.
  Forum: Frameworki · Podgląd postu: #1043603 · Odpowiedzi: 1 · Wyświetleń: 319

mortus
Napisane: 7.05.2013, 11:28:08





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Najgorszym z możliwych rozwiązań jest takie złączenie:
  1. SELECT `m`.`maska`, SUM(`t`.`cena`) FROM `towary` `t`, `maski` `m`
  2. WHERE LOCATE(`m`.`maska`, `t`.`nazwa`) = 1
  3. GROUP BY `m`.`maska`


Najbardziej optymalnym i w dodatku bezinwazyjnym (nie trzeba modyfikować czyjejś aplikacji) rozwiązaniem wydaje się być utworzenie trzeciej tabeli maski_towarow zawierającej jedynie dwie kolumny id_maski i id_towaru, obie będące kluczem głównym. Później jednorazowym zapytaniem
  1. INSERT INTO `maski_towarow` SELECT `m`.`id`, `t`.`id` FROM `maski` `m`, `towary` `t` WHERE LOCATE(`m`.`maska`, `t`.`nazwa`) = 1

uzupełniamy tabelę maski_towarow i w naszej "części" aplikacji korzystamy właśnie z niej:
  1. SELECT `m`.`maska`, SUM(`t`.`cena`) FROM `maski` `m`
  2. LEFT JOIN `maski_towarow` `mt` ON `m`.`id` = `mt`.`id_maski`
  3. LEFT JOIN `towary` `t` ON `mt`.`id_towaru` = `t`.`id`
  4. GROUP BY `m`.`id`
  Forum: Bazy danych · Podgląd postu: #1043406 · Odpowiedzi: 6 · Wyświetleń: 679

mortus
Napisane: 7.05.2013, 10:00:22





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Bardzo dziwne podejście i w ogóle nieoptymalne. Taki rodzaj produktu powinien być chyba czymś w stylu kategorii. Niemniej da się to zrobić, choć nie wiem po co to złączenie.
  1. SELECT `temp`.`t_maska` `maska`, SUM(`temp`.`t_cena`) `cena_razem` FROM (
  2. SELECT SUBSTRING_INDEX(`t`.`nazwa`, ' ', 1) `t_maska`, `t`.`cena` `t_cena` FROM `towary` `t`
  3. ) `temp`
  4. LEFT JOIN `maski` `m` ON `temp`.`t_maska` = `m`.`maska`
  5. GROUP BY `m`.`maska`

Dać się da, ale nie polecam i radzę się dobrze zastanowić nad funkcjonalnością aplikacji i strukturą bazy danych.
  Forum: Bazy danych · Podgląd postu: #1043393 · Odpowiedzi: 6 · Wyświetleń: 679

mortus
Napisane: 1.05.2013, 11:44:46





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Przede wszystkim takie użycie metod __set() i __get() nie ma praktycznego zastosowania, bo zmusza programistę do kontrolowania wszystkich właściwości klasy (trzeba znać dokładnie nazwy tych właściwości). Lepiej użyć, jak już zwracaliśmy uwagę, tablicy:
  1. class Car {
  2. private $features = array();
  3. public function __set($key, $value) {
  4. $this->features[$key] = $value;
  5. }
  6. public function __get($key) {
  7. return $this->features[$key];
  8. }
  9. }
  10. $car = new Car;
  11. $car->max_speed = 200;
  12. var_dump($car);

Poza tym źle napisałeś metodę __get(), gdybyś miał np. pole prywatne kolor i próbował pobrać wartość tego pola za pomocą $pojazd->kolor, to nadal otrzymasz wartość prędkości maksymalnej.

No i w końcu to co stricte dotyczy OOP, settery i gettery (również te magiczne) nie są dobrym miejscem do kontrolowania wartości zmiennych. Powinna do tego raczej służyć osobna metoda np. sprawdzPredkosc().

I jeszcze jedno... takie przeciążone metody __set() i __get() raczej nie nadają się do powszechnego użytku (w ogóle nie pasują do klasy Samochod). Zdecydowanie lepszy przykład podał CuteOne - klasa Rejestr, która ma za zadanie przechowywać dowolne lecz istotne dane dla naszej aplikacji. W klasie Samochod lepiej będzie wykorzystać po prostu setPredkoscMaksymalna() i getPredkoscMaksymalna().
  Forum: Przedszkole · Podgląd postu: #1042413 · Odpowiedzi: 8 · Wyświetleń: 319

mortus
Napisane: 1.05.2013, 08:59:25





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

@CuteOne: Metody magiczne powinny być publiczne, bo oczekujemy publicznego/globalnego dostępu do nich. Niemniej metody zadeklarowane jako prywatne również działają, co jest karygodnym błędem twórców PHP (zdaje się że w wersji 5.3 PHP pojawiał się w tej sytuacji WARNING).

Jednak nie o to mi chodziło we wcześniejszej odpowiedzi. Łopatologicznie:
przykład, w którym nie korzystamy z metod __set() i __get()
  1. class A {
  2. public $a;
  3. public function __set($key, $value) {
  4. $this->$key = $value;
  5. }
  6. public function __get($key) {
  7. return $this->$key;
  8. }
  9. }
  10. $o = new A;
  11. $o->a = 10;
  12. echo $o->a;

Ponieważ właściwość $a klasy A jest właściwością publiczną, mamy do niej bezpośredni dostęp za pomocą operatora wyłuskania -> i magiczne metody __set() i __get() nie będą w tej sytuacji wywoływane.

przykład, w którym korzystamy z metod __set() i __get()
  1. class A {
  2. private $a;
  3. public function __set($key, $value) {
  4. $this->$key = $value;
  5. }
  6. public function __get($key) {
  7. return $this->$key;
  8. }
  9. }
  10. $o = new A;
  11. $o->a = 10;
  12. echo $o->a;

Ponieważ właściwość $a klasy A jest właściwością prywatną, nie mamy do niej bezpośredniego dostępu za pomocą operatora wyłuskania -> i tutaj potrzebujemy magicznych metod __set() i __get() - tutaj będą one wywoływane.

Niemniej wykorzystanie tych metod magiczny w ten sposób jest bez sensu, bo musielibyśmy dokładnie kontrolować wszystkie właściwości klasy. Rozwiązanie, które podał CuteOne ma zdecydowanie większy sens.
  Forum: Przedszkole · Podgląd postu: #1042370 · Odpowiedzi: 8 · Wyświetleń: 319

mortus
Napisane: 26.04.2013, 21:30:51





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

  1. UPDATE `toplista` `t1` LEFT JOIN (SELECT @pos:=@pos+1 `pos`, `t2`.* FROM (SELECT @pos:=0) `init`, `toplista` `t2` ORDER BY `t2`.`votes` DESC) `temp` ON `t1`.`id` = `temp`.`id`
  2. SET `t1`.`lastpos` = `temp`.`pos`, `t1`.`votes` = 0;


Pamiętaj, że zapytanie to zadziała prawidłowo tylko wówczas, gdy ktoś rzeczywiście odda głos. Jeśli nie będzie głosów, a będą informacje o poprzednio zajmowanej pozycji, to nie powinieneś tego zapytania wykonywać, bo jego wynik będzie przypadkowy (zależny od wewnętrznych ustawień serwera MySQL).
  Forum: Przedszkole · Podgląd postu: #1041566 · Odpowiedzi: 1 · Wyświetleń: 335

mortus
Napisane: 24.04.2013, 19:21:15





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Przy takiej budowie tabeli, jaką opisałeś (swoją drogą całkowicie niepoprawną) powinno zadziałać to
  1. SELECT `p`.`imie`, `p`.`nazwisko`, MAX(`p`.`wyplata`) `najwieksza_wyplata` FROM `pracownicy` `p` GROUP BY `p`.`imie`, `p`.`nazwisko`
  Forum: Przedszkole · Podgląd postu: #1041186 · Odpowiedzi: 20 · Wyświetleń: 462

mortus
Napisane: 21.04.2013, 10:06:00





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Po pierwsze taka stricte techniczna uwaga: dane, które otrzymujemy od serwera i te same którymi posługujemy się w callback-u success to odpowiedź (response) serwera, a nie żądanie (request).

Jeśli response to:
  1. <input type="text" name="added_field" class="added" />

To:
[JAVASCRIPT] pobierz, plaintext
  1. // ...
  2. $.ajax({
  3. // ...
  4. success: function(response) {
  5. $('#widok').html(response);
  6. $('#widok .added').uniform();
  7. $.uniform.update();
  8. }
  9. });
  10. // ...
[JAVASCRIPT] pobierz, plaintext
  Forum: Przedszkole · Podgląd postu: #1040446 · Odpowiedzi: 2 · Wyświetleń: 308

mortus
Napisane: 21.04.2013, 09:37:52





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Dzieje się tak dlatego, że kolejne "komendy" JS wykonywane są niemal równocześnie. Trzeba użyć jakiegoś callback-a. pyro podał Ci link do gotowej biblioteki w jQuery. Prościej można to pokazać w taki sposób:
[JAVASCRIPT] pobierz, plaintext
  1. function myCallback() {
  2. console.log('myCallback: ' + IS);
  3. }
  4. var IS;
  5. setInterval(function(){
  6. IS = GetUAnswers();
  7. console.log('setInterval: ' + IS);
  8. myCallback();
  9. }, 5000);
[JAVASCRIPT] pobierz, plaintext

Na żywo - odpal konsolę i sprawdź.
Jednak postpone z pewnością ma zaimplementowane wszystkie niezbędne funkcjonalności, dlatego warto z tego skorzystać.
  Forum: JavaScript · Podgląd postu: #1040444 · Odpowiedzi: 22 · Wyświetleń: 1 177

mortus
Napisane: 10.04.2013, 18:25:12





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Raczej
[JAVASCRIPT] pobierz, plaintext
  1. $('#parent1 li ul').addClass('artUkryj');
[JAVASCRIPT] pobierz, plaintext
  Forum: Przedszkole · Podgląd postu: #1038366 · Odpowiedzi: 5 · Wyświetleń: 409

mortus
Napisane: 3.04.2013, 18:02:06





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Radzę zainstalować edytor z możliwością sprawdzania składni. Brakuje tam nawiasu zamykającego elseif, czyli ).
  Forum: Przedszkole · Podgląd postu: #1036772 · Odpowiedzi: 2 · Wyświetleń: 257

mortus
Napisane: 2.04.2013, 18:33:00





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

A czym jest element o id completed? Jeśli odnośnikiem, to przeładowanie strony jest normalne i zrozumiałe. Niemniej spróbuj:
[JAVASCRIPT] pobierz, plaintext
  1. $('#completed').click(function() {
  2. // Twój skrypt
  3. return false;
  4. });
[JAVASCRIPT] pobierz, plaintext


PS: Brakuje tu również jednej z metod inicjalizacji skryptu jQuery, co może powodować przeładowanie strony.
[JAVASCRIPT] pobierz, plaintext
  1. // na przykład
  2. $(document).ready(function() {
  3. // tutaj obsługa zdarzenia click dla elementu o id completed
  4. });
[JAVASCRIPT] pobierz, plaintext
  Forum: AJAX · Podgląd postu: #1036551 · Odpowiedzi: 2 · Wyświetleń: 956

mortus
Napisane: 28.03.2013, 19:27:18





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

[JAVASCRIPT] pobierz, plaintext
  1. $('#kno3a, #kno3b, #kno3c, #kno3d').on('keyup', function() {
  2. // obliczenia
  3. });
[JAVASCRIPT] pobierz, plaintext
  Forum: Przedszkole · Podgląd postu: #1035552 · Odpowiedzi: 11 · Wyświetleń: 2 966

mortus
Napisane: 28.03.2013, 17:01:45





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

eval nie służy do obliczania wartości wyrażeń matematycznych. No i trzeba pamiętać o błędach precyzji przy obliczeniach wykonywanych w JS.
  Forum: Przedszkole · Podgląd postu: #1035523 · Odpowiedzi: 11 · Wyświetleń: 2 966

mortus
Napisane: 24.03.2013, 17:33:12





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

[JAVASCRIPT] pobierz, plaintext
  1. $('#data').datetimepicker({
  2. onSelect: function(selectedDateTime) {
  3. // AJAX
  4. },
  5. // pozostałe opcje
  6. });
[JAVASCRIPT] pobierz, plaintext
  Forum: Przedszkole · Podgląd postu: #1034635 · Odpowiedzi: 2 · Wyświetleń: 191

mortus
Napisane: 21.03.2013, 08:55:54





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Walidacja HTML5 jest wykonywana po uruchomieniu zdarzenia submit, zatem to właśnie pod to zdarzenie powinieneś podpiąć wysyłanie wiadomości z użyciem AJAX-a.
Poza tym nie widzę sensu tworzenia tutaj dodatkowej funkcji send(), bo w sumie do tego są metody jQuery (z jednej z nich .ajax() nawet korzystasz).

Byłbym zapomniał: przykład.

Powyżej wykorzystuję najnowszą stabilną wersję jQuery - 1.9.1.
  Forum: JavaScript · Podgląd postu: #1033780 · Odpowiedzi: 8 · Wyświetleń: 375

mortus
Napisane: 20.03.2013, 15:54:48





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

No cóż, trzeba samemu obsłużyć przypadek, gdy podana zmienna nie jest obiektem typu Course:
  1. public function addItem($obj, $key = null) {
  2. if(!$obj instanceof Course) {
  3. throw new SomeException('Parametr $obj nie jest obiektem klasy Course');
  4. }
  5. // reszta metody
  6. }

Zadziała prawie tak samo, a nawet lepiej, bo w tym przypadku to my decydujemy co ma się stać, jeśli przekazany obiekt nie będzie obiektem określonej klasy (w tym przypadku rzucam wyjątkiem SomeException). Wymuszanie typu ma to do siebie, że podanie nieprawidłowego parametru spowoduje fatal error i przerwanie skryptu.

Swoją drogą - skąd ta klasa Collection?
  Forum: Object-oriented programming · Podgląd postu: #1033661 · Odpowiedzi: 3 · Wyświetleń: 1 625

mortus
Napisane: 20.03.2013, 13:12:20





Grupa: Zarejestrowani
Postów: 2 178
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----

Wszystko jest dobrze, tylko na niektórych podstronach nie masz treści i nie pojawia się wtedy pasek przewijania w dół.
  Forum: Przedszkole · Podgląd postu: #1033628 · Odpowiedzi: 3 · Wyświetleń: 220

24 Stron V   1 2 3 > » 

New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 19:10