Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

32 Stron V   1 2 3 > » 

Athlan
Napisane: 11.11.2012, 12:56:47





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Czołem!

Napotałem na problem z zapisaniem entity Doctrine2 w relacji OneToOne.

Opis problemu:

Posiadam dwie encje: UserEntity (użytkownik) oraz UserDataEntity (dane o użytkowniku). Każdy UserEntity może posiadać UserDataEntity (ale nie jest to wymagane gdy nie podano danych), ale każdy UserDataEntity musi mieć UserEntity, którego dotyczy.

Kiedy próbuję zapisać UserEntity, otrzymuję komunikat z PostgreSQL:

> SQLSTATE[23502]: Not null violation: 7 BŁĄD: pusta wartość w kolumnie "id" narusza ograniczenie wymaganej wartości

Poniżej moje encje:

  1. <?php
  2. /**
  3.   * A user.
  4.   *
  5.   * @ORM\Entity
  6.   * @ORM\Table(name="users")
  7.   */
  8. class UserEntity extends AbstractEntity
  9. {
  10. /**
  11.   * @ORM\Id
  12.   * @ORM\Column(type="integer");
  13.   * @ORM\GeneratedValue(strategy="AUTO")
  14.   */
  15. protected $id;
  16.  
  17. /**
  18.   * @ORM\Column(type="string")
  19.   */
  20. protected $name;
  21.  
  22. /**
  23.   * @ORM\OneToOne(targetEntity="ModuleAdmin\Entity\TradesmanDataEntity", inversedBy="parent", cascade={"persist"})
  24.   * @ORM\JoinColumn(name="id", referencedColumnName="data_id")
  25.   */
  26. protected $data;
  27.  
  28. public function setData(UserDataEntity $data)
  29. {
  30. $this->data = $data;
  31. }
  32. }

I dane użytkownika:

  1. <?php
  2. /**
  3.   * A user's data.
  4.   *
  5.   * @ORM\Entity
  6.   * @ORM\Table(name="users_data")
  7.   */
  8. class UserDataEntity extends AbstractEntity
  9. {
  10. /**
  11.   * @ORM\Id
  12.   * @ORM\OneToOne(targetEntity="ModuleAdmin\Entity\TradesmanEntity", mappedBy="parent", cascade={"persist"})
  13.   * @ORM\JoinColumn(name="data_id", referencedColumnName="id")
  14.   */
  15. protected $parent;
  16.  
  17. /**
  18.   * @ORM\Column(type="string")
  19.   */
  20. protected $email;
  21.  
  22. /**
  23.   * @ORM\Column(type="string")
  24.   */
  25. protected $phone;
  26.  
  27. /**
  28.   * Provides creation for new empty entity.
  29.   *
  30.   */
  31. public function __construct(TradesmanEntity $parent)
  32. {
  33. $this->parent = $parent;
  34. }
  35. }


Moja schema wygląda tak:

  1. CREATE TABLE users
  2. (
  3. id serial NOT NULL,
  4. name character varying(255) NOT NULL,
  5. CONSTRAINT users_pkey PRIMARY KEY (id )
  6. );
  7.  
  8.  
  9. CREATE TABLE users_data
  10. (
  11. data_id integer NOT NULL,
  12. email character varying(255) NOT NULL,
  13. phone character varying NOT NULL,
  14. CONSTRAINT users_data_pkey PRIMARY KEY (data_id ),
  15. CONSTRAINT users_data_data_id_fkey FOREIGN KEY (data_id)
  16. REFERENCES users (id) MATCH SIMPLE
  17. ON UPDATE RESTRICT ON DELETE CASCADE
  18. );


Chciałbym zachować integralność bazy danych i ogarnienia na poziomie bazy danych, nie ORM'a.
  Forum: Bazy danych · Podgląd postu: #1005307 · Odpowiedzi: 0 · Wyświetleń: 828

Athlan
Napisane: 15.03.2011, 20:27:20





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Wskazało plik Vframe.Class.php.

Zrobiłem dalsze testy, wsadziłem coś takiego:

  1. if(class_exists( 'Vframe', FALSE ) )
  2. {
  3. $class = new ReflectionClass( 'Vframe' );
  4. die( $class -> getFileName() );
  5. }
  6. else
  7. echo 'allright';


Niestety, przy próbie załączenia pliku Vframe.Class.php wyskakuje ścieżka z die(). Jeżeli klasa by była już zadeklarowana, przynajmniej raz bym otrzymał na ekranie napis allright. Niestety się tak nie dzieje. Co więcej, po wyrzuceniu require_once z index.php dalsza część kodu wyrzuca informacje, że nie ma zdefiniowanej klasy Vframe.

Oznaczałoby to, że plik Vframe.Class.php wykonuje samego siebie jeszcze raz, skoro nigdzie indziej nie ma deklaracji tej klasy. Niestety, nie może się to stać, bo w tym przypadku również bym otrzymał przynajmniej raz napis allright.

Wykonałem dodatkowy test, zmieniłem nazwę klasy na VframeB, zeby przetestować ewentualne powiązania autoloadu z nazwą pliku. Nazwę zmieniłem również w przeklejonym wyżej kodzie testującym, okazało się, że problem jest ten sam! o.O
  Forum: PHP · Podgląd postu: #846258 · Odpowiedzi: 3 · Wyświetleń: 575

Athlan
Napisane: 15.03.2011, 17:58:44





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Witam.

Ostatnio natrafiłem na bardzo dziwny problem. Jak programuję kilka lat, tak to mnie zbiło z nóg. Mianowicie, za każdym razem uruchamiany jest plik index.php, który robi require_once Vframe.Class.php, który zawiera deklarację klasy Vframe.

W losowych zupełnie przypadkach dla tych samych danych wejściowych requestu dostaję informację, że nie można redeklarować klasy Vframe. Co dziwne:
  • klasa nie jest deklarowana nigdzie indziej, niż w pliku Vframe.Class.php
  • plik Vframe.Class.php jest dołączany require_once tylko w pliku index.php
  • nie ma innych require/include (bez once) w dalszej części kodu


Nie mam zielonego pojęcia, co może być nie tak. Wycieki pamięci? PHP Version 5.2.5 (x64), serwer IIS7.
  Forum: PHP · Podgląd postu: #846219 · Odpowiedzi: 3 · Wyświetleń: 575

Athlan
Napisane: 9.03.2011, 18:26:33





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Witam.

Mam problem z nachodzącym flashem na innego flasha na mojej stronie www.

Baner, który pojawia się w treści strony przysłania baner, który jest toplayerem pływającym za użytkownikiem do momentu kliknięcia na krzyżyk. E w efekcie wygląda to tak:


Toplayer oczywiście jest position: fixed z z-index: 10000;

Czy ktoś natknął się na podobny problem?
  Forum: Po stronie przeglądarki · Podgląd postu: #844565 · Odpowiedzi: 1 · Wyświetleń: 702

Athlan
Napisane: 17.02.2011, 01:00:15





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

1. Pierwsze 5 stron wyników mam wyklikane. Zrobiłem wszystko poza updgrade/downgrade pomiędzy 5.1 i 5.0. Spróbuję zejść do serwerowni i zrobić down/up do minimalnej wersji, może to naprawi potencjalnie uszkodzoną strukturę plików.
2. Nieracjonalne.
  Forum: Bazy danych · Podgląd postu: #837934 · Odpowiedzi: 4 · Wyświetleń: 1 093

Athlan
Napisane: 16.02.2011, 22:12:00





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Cześć,

na tabelę mysql.proc dałem repair, optimize, a następnie flush. Założyłem też dla testów nową bazę danych i w niej przykładowe tabele (podobne do Twoich). Niestety, otrzymuję ten sam komunikat.
  Forum: Bazy danych · Podgląd postu: #837876 · Odpowiedzi: 4 · Wyświetleń: 1 093

Athlan
Napisane: 16.02.2011, 21:15:05





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Witam,

próbuję stworzyć prostą procedurę, natomiast MySQL zwraca mi błąd informujący o za małej ilości pól w tabeli systemowe, w której są one przechowywane.

Cytat
#1547 - Column count of mysql.proc is wrong. Expected 20, found 16. The table is probably corrupted.


  1. CREATE PROCEDURE `AnnouncementsDatesItemsCount`(IN iAnnouncement INT)
  2. BEGIN
  3. UPDATE cms_announcements
  4. SET
  5. announce_date_relase_count = (SELECT COUNT(date_start) FROM cms_announcements_dates WHERE date_item = announce_id)
  6. WHERE announce_id = iAnnouncement;
  7. END


Może ktoś się z tym potkał. Z góry dzięki za pomoc.
  Forum: Bazy danych · Podgląd postu: #837847 · Odpowiedzi: 4 · Wyświetleń: 1 093

Athlan
Napisane: 28.12.2010, 09:53:17





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Cześć.

Mam do zaprojektowania zapytanie, które powinno wyciągnąć newsy powiązane tagami do wyświetlanego newsa (newsa-wzorca).

Założyłem kilka rzeczy, nie wiem, czy prawidłowo:
  • newsy sortowane są po "trafności", czyli ile tagów newsa-wzorca pasuje do tagów newsa powiązanego, a następnie po dacie
  • news powiązany nie musi zawierać wszystkich tagów newsa-wzorca


Struktura mojej bazy jest następująca:
- id_newsa int(11) unsigned
- id_tagu int(11) unsigned
primary na oba pola

Moje pytania:
  1. Czy założenia są prawidłowe? Jeżeli nie, jakie wg Ciebie powinny być?
  2. Jak optymalnie wyciągnąć zdefiniowaną wcześniej "trafność" tagów newsa w stosunku do newsa-wzorca?
  Forum: PHP · Podgląd postu: #821129 · Odpowiedzi: 0 · Wyświetleń: 335

Athlan
Napisane: 27.12.2010, 21:32:23





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

@Zyx dobrze prawi, właśnie w taki sposób działają wyrażenia regularne. Może niezbyt praktycznie, ale warto mieć elementarną wiedzę na temat tego, co się używa. W zaawansowanych przypadkach (optymalizacja) ta wiedza staje się podstawową (i nie tylko regexp). Nawiasem mówiąc, warto poczytać o http://pl.wikipedia.org/wiki/Maszyna_Turinga
  Forum: PHP · Podgląd postu: #821039 · Odpowiedzi: 6 · Wyświetleń: 990

Athlan
Napisane: 27.12.2010, 15:06:29





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Kiedyś @Matix przesłał mi kod, który postanowiłem nieco zmodyfikować. Używasz tego jak selectorów jQuery, tylko przez metodę get() i query(). Potężne narzędzie używające domxPath.

http://athlan.pl/code/VframeLib_Map.Class

Baw się, dumpuj, bo dajemy za darmo ; )
  Forum: PHP · Podgląd postu: #820858 · Odpowiedzi: 6 · Wyświetleń: 990

Athlan
Napisane: 27.12.2010, 15:11:21





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Niestety, jeżeli chcesz używać poleceń command line, musisz mieć udostępnione exec lub shell_exec. PHP Ci nie pomoże.

W grę wchodzi Crontab?
  Forum: PHP · Podgląd postu: #820862 · Odpowiedzi: 4 · Wyświetleń: 728

Athlan
Napisane: 27.12.2010, 15:46:46





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Ja tylko się zastanawiam, dlaczego nie użyjecie do przekazania tych parametrów jednej tablicy. Rozwiązanie jest o tyle elastyczne, że można w przyszłości oddzielić argument przekazujący parametry url'a od dodatkowych argumentów (np. flag, etc). Poza tym to nieco szybszy sposób, łatwo się na tym operuje, dane masz takie same, jak w przypadku func_get_args().
  Forum: Object-oriented programming · Podgląd postu: #820874 · Odpowiedzi: 11 · Wyświetleń: 1 553

Athlan
Napisane: 27.12.2010, 15:09:02





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

1. spróbuj użyć $.post() (więcej na temat przekazywanych przez Ciebie parametrów w manualu jQ), w funkcji response mi zawsze widzi wszystkie zmienne.
2. spróbuj usunąć var sprzed deklaracji zmiennej.
  Forum: XML, AJAX · Podgląd postu: #820860 · Odpowiedzi: 1 · Wyświetleń: 507

Athlan
Napisane: 27.12.2010, 15:29:34





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Możesz przechwytywać takie rzeczy __autoload, parsować nazwę po czym tworzyć sobie obiekty dziedziczące po klasie abstrakcyjnej, którą sobie stworzysz.
  Forum: Object-oriented programming · Podgląd postu: #820867 · Odpowiedzi: 5 · Wyświetleń: 932

Athlan
Napisane: 27.12.2010, 15:17:03





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

  1. $sString = preg_replace('#bla#i', 'zamiennik', $sString)

Używasz flagi i po delimiterze, ignoruje on case-sensitive.
  Forum: PHP · Podgląd postu: #820863 · Odpowiedzi: 2 · Wyświetleń: 1 317

Athlan
Napisane: 27.12.2010, 15:18:51





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Tak jak prawi @Crozin. Uzyj flagi FILE_APPEND.
  Forum: PHP · Podgląd postu: #820864 · Odpowiedzi: 2 · Wyświetleń: 640

Athlan
Napisane: 26.12.2010, 18:16:21





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Tylko w obrębie klasy oraz tych, które po niej dziedziczą. Jeżeli nie chcesz, żeby dzieci dziedziczące po tej klasie nie miały dostępu do zmiennej, użyj private zamiast protected. Na zewnątrz tylko public. Oczywiście public jest niezalecane, lepiej walidować, rzutować etc., możesz mieć śmieci w klasie.

A jeżeli chcesz już używać zmiennych publicznie, składuj je w prywatnej tablicy, która jest sterowana metodami magicznymi __get i __set. Kiedyś pisałem klasę, po której często dziedziczę:
http://athlan.pl/code/Attribute.Class

Co czego się przyda? Ano do wszystkiego.
http://athlan.pl/code/Tagcloud.Class

Grunt, żeby zmienne które nie są protected $_aAttributes = array(); nie były widoczne na zewnątrz.
  Forum: Object-oriented programming · Podgląd postu: #820604 · Odpowiedzi: 3 · Wyświetleń: 1 038

Athlan
Napisane: 26.12.2010, 17:57:51





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Jeżeli jest to zmienna publiczna i statyczna, możesz się do niej odwoływać w sposób następujący:

  1. class core
  2. {
  3. public static $a = '';
  4. }
  5.  
  6. core::$a = 'aa';
  7. var_dump(core::$a);
  Forum: Object-oriented programming · Podgląd postu: #820597 · Odpowiedzi: 3 · Wyświetleń: 1 038

Athlan
Napisane: 27.12.2010, 21:37:46





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Skutków ubocznych nie ma. Poziom notice m.in. to informacja, że próbujesz dodać coś do niezadeklarowanej wcześniej zmiennej. Język PHP ma tę zaletę (lub w wielu przypadkach wadę), że można nie deklarować zmiennych i się do nich odwoływać. Nie jest to dobra praktyka, ale pehap taki już jest, tak samo nie ma czegoś takiego jak typy danych przy zmiennych - każda zmienna = każdy typ.

Wystarczy, że gdzieś na początku kodu dodasz:
  1. error_reporting(E_ALL & ~E_NOTICE); // kopia z manuala, trochę ambicji...


Skutki uboczne natomiast wygenerujesz sobie, gdy będziesz miał wyłączone error_display. Wtedy do błędów nie dotrzesz, pozostaną tylko logi serwera.

Pamiętaj na przyszłość (może nie w tym przypadku):
Cytat
Note:

Enabling E_NOTICE during development has some benefits. For debugging purposes: NOTICE messages will warn you about possible bugs in your code. For example, use of unassigned values is warned. It is extremely useful to find typos and to save time for debugging. NOTICE messages will warn you about bad style. For example, $arr[item] is better to be written as $arr['item'] since PHP tries to treat "item" as constant. If it is not a constant, PHP assumes it is a string index for the array.
  Forum: PHP · Podgląd postu: #821040 · Odpowiedzi: 14 · Wyświetleń: 1 257

Athlan
Napisane: 27.12.2010, 19:30:59





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Cześć,

ukryj error_reporting, aby nie pokazywało noticów, lub zadeklaruj z początku lastRSS::$rsscp = null; (jeżeli niepotrzebne).
  Forum: PHP · Podgląd postu: #820981 · Odpowiedzi: 14 · Wyświetleń: 1 257

Athlan
Napisane: 26.12.2010, 18:19:32





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

To spróbuj pominąć kodowanie wejściowe (niech wykrywa sam):
  1. $out[1] = mb_convert_encoding($out[1], 'iso-8859-2');
  Forum: PHP · Podgląd postu: #820607 · Odpowiedzi: 14 · Wyświetleń: 1 257

Athlan
Napisane: 26.12.2010, 18:05:28





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Mogę ewentualnie Ci pomóc, jeżeli masz odwagę (chęci) zaingerować w kod.

Jeżeli na serwerze masz dostępny Multibyte Strings (większość serwerów to ma), wówczas kodowanie możesz zrobić w sposób następujący:
  1. $sZawartoscZmiennej = mb_convert_encoding($sZawartoscZmiennej, 'kodowanie-wyjsciowe', 'kodowanie-wejsciowe');

Przy czym kodowanie wejściowe to parametr opcjonalny. Używasz go jeżeli jesteś pewien, że takie jest (jedno, w miarę stałe źródło informacji). Jeżeli nie, pomiń. W Twoim przypadku może to być:
  1. $out[1] = mb_convert_encoding($out[1], 'iso-8859-2', 'utf-8');


Przy okazji: zalecam Ci zmianę kodowania swojej strony na utf-8. Możesz wygoglować site:forum.php.pl, dlaczego.
  Forum: PHP · Podgląd postu: #820600 · Odpowiedzi: 14 · Wyświetleń: 1 257

Athlan
Napisane: 26.12.2010, 18:11:10





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Wydaje mi się, że Twoje wszystkie problemy rozwiąże parse_url sprawdzając odpowiednie elementy, które zostają zwrócone w tablicy (patrząc na Twoje flagi).

Pomimo zaleceń:
Cytat
This function is not meant to validate the given URL, it only breaks it up into the above listed parts. Partial URLs are also accepted, parse_url() tries its best to parse them correctly


Działa bardzo dobrze.
  Forum: PHP · Podgląd postu: #820602 · Odpowiedzi: 1 · Wyświetleń: 536

Athlan
Napisane: 26.12.2010, 17:23:23





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Odnośnie zabezpieczania sesji:
http://phpsec.org/projects/guide/4.html
  Forum: PHP · Podgląd postu: #820585 · Odpowiedzi: 12 · Wyświetleń: 1 374

Athlan
Napisane: 26.12.2010, 09:52:19





Grupa: Developerzy
Postów: 823
Dołączył: 18.12.2005

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

Szansa przechwycenia jest identyczna, jak w przypadku normalnego rozwiązania. Pamiętaj, że session_handler to tylko system składowania danych sesji, a nie system całej sesji. Otrzymuje on standardowe dane na temat utworzenia, próby zapisu etc.

Strumień natomiast, to nic innego, jak output. save() wykonuje się po tym, jak pehap wyśle do przeglądarki dane. On nie działa w momencie $_SESSION['klucz'] = 'wartosc'; tylko w momencie, kiedy całość się wykona, wypluje do przeglądarki, a przed tym, jak obiekty otrzymują call na destruktory __destruct(), zmienne są niszczone, etc, etc. Chodzi o to, że jak dasz sobie var_dump() na tablicę sesji w save(), nie zostanie ona wyświetlona, bo nie ma gdzie - output już wyslano, jest zamknięty ; ) Zauważ, że jak w dowolnym momencie skryptu dasz sobie echo, var_dump i inne, od razu otrzymasz wynik (przy nie manipulowaniu buforem). Znaczy to, że strumień jest otwarty.
  Forum: PHP · Podgląd postu: #820449 · Odpowiedzi: 12 · Wyświetleń: 1 374

32 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 - 02:35