Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl


adbacz
Napisane: 20.05.2019, 17:55:08





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Do metody render przekaż sobie tablicę. W metodzie render ją przyjmij i wykonaj funkcję extract(). Funkcja ta stworzy tyle zmiennych ile będziesz miał indeksów w tablicy. Dzięki czemu każdą wartość z tablicy będziesz miał w osobnej zmiennej.

  1. $router->map('GET', '/', function() use($view){
  2. $view->render('homepage', [
  3. 'title' => 'Panel'
  4. ]);
  5. });
  6.  
  7. // W metodzie renderującej
  8. public function render($view, array $data = []) {
  9. extract($data);
  10.  
  11. if(is_readable('views/panel/'.$page_name.'.php')){
  12. require 'views/panel/'.$page_name.'.php';
  13. }
  14. }
  15.  
  16. // W widoku
  17. echo $title;


Poszukaj sobie przykładów renderowania widoków z innych systemów szablonów. Poczytaj dokumentację, kod. Jeśli uczyć to od najlepszych smile.gif

Podeślę Ci dwa linki do krótkiego snippetu kodu dwóch systemów szablonów, na których możesz na szybko zobaczyć jak je uruchomić.
Twig - https://phpcenter.pl/biblioteki/twig-system-szablonow/
Aura View - https://phpcenter.pl/biblioteki/aura-view-system-szablonow/

W obu jest podobnie. Podajemy nazwę widoku i tablicę z danymi które mają być do niego przesłane.
  Forum: PHP · Podgląd postu: #1241689 · Odpowiedzi: 3 · Wyświetleń: 432

adbacz
Napisane: 3.03.2016, 14:29:34





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Z textarea dane rozdziel po nowej linii, i będziesz miał listę podanych numerów seryjnych w tablicy:
  1. $serialNumbers = explode("\n", $textareaValue); // pamiętaj o cudzysłowiu ("), zamiast apostrofu (')

A dalej to już pętlą wykonuj zapytania INSERT do bazy danych.
  1. foreach($serialNumbers as $number)
  2. {
  3. // ...
  4. }
  Forum: PHP · Podgląd postu: #1186406 · Odpowiedzi: 3 · Wyświetleń: 606

adbacz
Napisane: 10.10.2014, 12:43:37





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

1. Niepotrzebne włożyłeś tyle kodu do Konstruktora klasy Router. To wszystko musi być zawarte w osobnej metodzie a ta osobna metoda wywołana dopiero przed pobraniem danych na temat kontrolera itp. Za dużo automagicznie poszedłeś.
2. Przydałaby się osobna klasa, któa odpowiedzialna będzie za wywoływanie metody kontrolera - teraz to jest za dużo w jednym miejscu rzeczy.
3. Osobna klasa do pokazywania błędów (brak metody, kontrolera) i wysyłaj nagłówki 404 bo Googlebot weźmie to za dobrze działającą stronę.

I tak ogólnie - znajdź sobie jakiś sposób na załadowywanie takich plików na config.php i routes.php, ponieważ takie ładowanie na stałe (na stałe wpisana ścieżka do pliku) jest niezbyt dobrym podejściem.
  Forum: PHP · Podgląd postu: #1128054 · Odpowiedzi: 3 · Wyświetleń: 574

adbacz
Napisane: 25.07.2014, 21:33:31





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Nie pokazuje sie,ponieważ nie jest z tym formularzem wysyłana ta wartość. Ty ją masz tylko na tej stronie, ale jej nie wysyłasz. Musisz dodać to pole jako HIDDEN do formularza i będzie działać:

  1. <input type="hidden" name="id" value="<?php echo $id; ?>" />
  Forum: PHP · Podgląd postu: #1117050 · Odpowiedzi: 6 · Wyświetleń: 658

adbacz
Napisane: 3.07.2014, 20:55:36





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Jesli mówisz, że chcesz napisac do końca wakacji system CMS, ale powiedzmy, że rozpoczynasz naukę OOP (długa przerwa) to najlepszym wyjściem jest zaczęcie od projektowania. Najpierw napisz sobie na kartce to, co chcesz by system posiadał. W tym wypadku chcesz by były podstrony, ok. Ale na jakiej zasadzie? Czysty tekst?

W niektórych systemach CMS jest to rozwiązane na zasadzie wtyczki czy komponentu. To ona jest odpowiedzialna za dany typ podstrony. Typów podstron można wymieniać mnogości: artykuł, kategoria, galeria, produkt, kontakt itp. I teraz tak, każdy komponent jest odpowiedzialny za inny typ strony. Tak tak Ty, jesteś w swojej pracy odpowiedzialny za programowanie, nie będziesz zajmował się pisaniem faktur czy sprzątaniem wink.gif

Dalej można to rozwiązać na dwa sposoby:
1. Komponent jest częścią aplikacji samą w sobie. To w nim dzieje się dodawanie, edycja, usuwanie i wszystkie inne opcje danego typu podstrony. Sam system CMS daje tylko szkielet aplikacji dla komponentów, by one mogły działać (Joomla!, WordPress).
2. Komponent daje tylko definicję typu podstrony, czyli to jak ma ona wyglądać, jakie ma mieć pola do wpisania (formularz dodawania artykułu czy produktu), jak ma się zachowywać. A system CMS odpowiedzialny jest w całości za zarzadzanie tymi podstronami w taki sposób, jak zdefiniował to dany komponent.

Oczywiście zdaję sobie sprawdę, że są jeszcze inne możliwości, ale takie tylko przyszły mi do głowy.

Pierwszy jest o wieeeele łatwiejszy i polecam Ci go. Bo z drugim to staniesz w miejscu na samym początku (bez urazy, początki są trudne zawsze, a gdy się wejdzie na zbyt głęboką wode, to się odechciewa dalszej nauki).

Zalety:
- Każdy komponent możesz nstalować, usuwać oddzielnie.
- Każdy komponent jest odpowiedzialny tylko i wyłącznie za swój typ podstrony.
- Każdy komponent jest odpowiedzialny za zarzadzaniej swoimi podstronami, to w nim odbywa się edycja. Możesz ta edycję rozwiązac tak, jak tego w danym miejscu potrzebujesz.

Hmm, chyba nie ma wad wink.gif

System CMS obsługiwac powinien podstawowo tylko routing, czyli włączenie danego komponentu na zasadzie tego, co znajduje się w adresie URL. W tedy to gry wchodzi komponent i to on dalej sprawdza co dokłądnie jest w adresie URL i wyświetla daną podstronę, oczywiście za pomocą metod udostępnianych przez system CMSa.


Troche się rozpisałem, ale mnie wena twórcza złapała, sam jestem projektantem systemu CMS i mógłbym o tym pisać całymi godzinami wink.gif Jeśli masz jakieś pytania to wal śmiało.
  Forum: PHP · Podgląd postu: #1113740 · Odpowiedzi: 12 · Wyświetleń: 742

adbacz
Napisane: 28.06.2014, 09:32:43





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Zakładam, że funkcja oci_pconnect() zwraca resource, a tego nie przypiszesz do sesji. W sesji można trzymać wszystko, oprócz resource wink.gif

Musisz za każdym razem łączyć się z bazą danych gdy masz request. Najlepiej napisz sobie jakąś klasę, która będzie przechowywała ten resource połączenia z bazą danych. Albo chociaż plik, w którym będzie wykonywane połączenie i za każdym razem ładuj go poprzez require w plikach, gdzie wykonujesz akcje. W tedy będziesz miał dostęp do zmiennej $conn wszedzie, gdzie będziesz chciał.
  Forum: PHP · Podgląd postu: #1112763 · Odpowiedzi: 4 · Wyświetleń: 370

adbacz
Napisane: 27.12.2013, 14:58:13





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Jak dokonujesz tego zapisywania i wyświetlania na stronie? Wysyłasz zapytanie POST, bierzesz te wartości z pól input, zapisujesz do DB a następnie pobierasz je jeszcze raz z DB i wrzucasz na stronę?

1. Sprawdź, czy w bazie danych znaki są zapisane poprawnie.
2. Sprawdź kodowanie w bazie danych.
3. Zapisz ręczne (czyt. dopisz do zapytania te litery, któe się zamieniają w FF) do zapytania SQL i wykonaj bezpośrednio w kodzie PHP bez używania formularza.
4. Wykonujesz na tych stringach jakieą operacje? Czasami zdarza się, że niektóre funkcje w PHP rozdzielają znaki, na przykład polskie "ł", na dwa znaki, bo fizycznie faktycznie polskie "ł" składa się z dwóch innych znaków i jest zakodowane w wiekszości przypadków w UTF8 dlatego my widzimy w przeglądarce nasze "ł" zamiast krzaczków.
  Forum: PHP · Podgląd postu: #1082313 · Odpowiedzi: 11 · Wyświetleń: 919

adbacz
Napisane: 16.07.2013, 10:13:45





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Jeśli jest to plik, w którym ponad 85% klas (jeśli mówimy tu o obiektówce) albo kodu ogólnie jest używanego zawsze, to pozostaw to jednym pliku. Szybciej dla PHP jest załadowanie jednego większego pliku niż 50 mniejszych, z taką samą zawartością.

Lecz jeśli kod zawarty w tym pliku nie jest w pełni wykorzystywany za każdym razem gdy ładujesz te plik, to lepiej podzielić go na mniejsze.

Z doświadczenia wiem, że ładowanie klas do jednego pliku Cache, które sa używane zawsze zmniejsza czas wykonywania skryptów od kilkunastu do kilkudziesięciu procent nawet. Ale trzeba to robić z głową.
  Forum: PHP · Podgląd postu: #1056039 · Odpowiedzi: 5 · Wyświetleń: 437

adbacz
Napisane: 1.08.2012, 16:04:51





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Z puktu widzenia PHP się nie da. Musiałbyś napisać klasę do zarządzania obiektem, któremu dawałbyś obiekt i nazwę metody, a on by uruchomił najpierw before() a później tą metodę, którą chcesz. Nie widze innego wyjścia, bo PHP sam w sobie nie daje takiej możliwości - no chyba daje, to niech ktoś mnie oświeci.

Z tą metodą call możesz popróbować tak, że każdą metodę będziesz nazywał na przykład __MyMethod(), ale metode obiektu będziesz wywoływał MyMethod(). W tedy wykona się metoda __call(), w której już sobie będziesz robił to co potrzebujesz, czyli na przykład:

  1. class klasa {
  2. public function __call($name, $params)
  3. {
  4. $name = str_replace('__', '', $name);
  5. $this->before(); //Tutaj możesz przesyłać jako jej parametr nazwę metody, którą uruchamiasz, lub zapisać nazwę we właściwości klasy.
  6. return call_user_func_array(array($this, $name), $params);
  7. }
  8. }


Oczywiście to kod "pisany na kolanie", ale powinno działać w Twoim przypadku. Minusem tego, jest fakt, że metodę __call() musiałbyś podawać za każdym razem do klasy, która ma działać w ten sam sposób - chyba, że załątwisz do dziedziczeniem.

Plusem napisania klasy do zarządzania obiektami, jak napisałem wcześniej, jest to, że prawie o nic nie musisz się martwić. Klasa nie musi posiadać metody before() ponieważ, możesz sprawdać istnienie tej metody w klasie do zarządzania obiektami. problemem może być fakt, że wywołanie takiej metody może być troszke dłuższe:

  1. $classManag = new ClassManag(new Klasa);
  2. $returnedValue = $classManag->call('a');
  Forum: Object-oriented programming · Podgląd postu: #982425 · Odpowiedzi: 7 · Wyświetleń: 716

adbacz
Napisane: 24.07.2012, 16:00:04





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

W takim razie wystarczy zwykła pętla, ponieważ i tak operujesz na tablicy indeksowanej numerycznie.

  1. $isset = false;
  2.  
  3. for($i=0, $count=count($array); $i<$count; $i++)
  4. {
  5. if(empty($array[$i]))
  6. {
  7. $isset = true;
  8. }
  9. }
  10.  
  11. if($isset === true)
  12. {
  13. echo 'Pusta wartość!';
  14. }
  Forum: PHP · Podgląd postu: #980341 · Odpowiedzi: 1 · Wyświetleń: 359

adbacz
Napisane: 31.01.2012, 21:52:36





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Wyrażenia regularne, dostajesz tablicę tak? To co za problem zrobić po niej pętlę i sprawdzać czy któryś z linków się powtarza?
Pseudokod:
  1. $links; //Linki z rexexp
  2. $newLinks = array(); //Filtrowane linki
  3. foreach($links as $key => $val) {
  4. foreach($newLinks as $key2 => $val2) {
  5. if($val != $val2) {
  6. $newLinks[] = $val;
  7. }
  8. }
  9. }

Takie coś powinno ząłatwić sprawę.

EDIT:
Cytat
Wiem jak wyciagnac wszystkie linki ze strony, ale nie wiem jak oddzielic te z wiadomoscia, od tych w menu, czy tez reklam

Mozesz za pomocą Wyrażeń wyciągnąć danego DIVa czy w czym sa tam trzymane dane w HTML (z pewnością znajdziesz), i w tedy sobie wyciągać linki z tego co wcześniej wyciągnąłeś. To chyba najprostrze rozwiązanie.
  Forum: PHP · Podgląd postu: #936047 · Odpowiedzi: 4 · Wyświetleń: 416

adbacz
Napisane: 3.01.2012, 09:34:41





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Nie chciałbym siac paniki czy kogoś obrażać, ale tak się składa, że info o tym co ma się znaleźć w polu hidden napisałem w 12 poście, czego chyba autor nie zauważył a później prowseed (tak mi się wydaje) przywłaszczył sobie to i uznał za swoje. Przynajmniej tak to wygląda czytając po kolei posty. Nie mam nic za złe nikomu i nie chcę nikogo obrażać, ale nie ładnie tak.
  Forum: PHP · Podgląd postu: #927854 · Odpowiedzi: 24 · Wyświetleń: 1 260

adbacz
Napisane: 1.01.2012, 05:20:35





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Ja w swoich aplikacjach kiedyś używałem tego drugiego rozwiązania podanego przez Ciebie, tam gdzie potrzebowałem, ale po jakimś czasie doszło do tego, że to rozwiązanie było ajgorsze z możliwych bo jak przyszło co doc zego (do modyfikacji i dodawania) i była potrzeba ingerencji w jakąkolwiek część systemu logowania - to trzeba było zmieniac wszystko. Teraz jestem mądrzejszy, i zawsze kiedy mogę, to pisze sobie jakiś kawałek kody (nawet w przykłądowej klasie AutoRun), który będzie uruchamiany z każdym requestem. W tedy, dodajesz sobie tylko troszke if-ów (bo wątpię, żeby się bez tego obyło, chyba, że to aplikacja gdzie user MUSI być zalogowany by działać), kiedy i w jakich okolicznościach ma sprawdzać czy user jest zalogowany i to wszystko. A jak dojdzie co do czego to zmian dokonujesz tylko w jednym kawałku kodu.
  Forum: Object-oriented programming · Podgląd postu: #927276 · Odpowiedzi: 6 · Wyświetleń: 722

adbacz
Napisane: 21.12.2011, 00:22:56





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Ah, faktycznie, nie zauważyłem literówki wink.gif

Good point morbic.

Pierwsza linijka mówi, że jeśli ścieżka w URI nie jest katalogiem (lub nie istnieje na serwerze), to przekierowuje na index.php.
Druga mówi o plikach, że jeśli nie ma pliku na serwerze, to przekierowuje na index.php. Co do trzeciej to nie mam pewności...

Czyli ogólnie rzecz biorąc, jeśli ścieżka nie jest plikiem na serwerze i nie jest katalogien na serwerze, to apache przekierowuje wszystkie adresy do index.php, w przeciwnym wypadku wchodzi do katalogu lub włącza (?) plik jeśli takowy na serwerze istnieje.
  Forum: PHP · Podgląd postu: #924181 · Odpowiedzi: 5 · Wyświetleń: 349

adbacz
Napisane: 20.12.2011, 23:48:54





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Zrób takie coś, ale dostosuj do swoich ścieżek na serwerze:
Kod
RewriteEngine On

#Przykłądowa ścieżka do katalogu z obrazkami
RewriteRule ^images/(.+)$ images/$1 [L]
#przykłądowa ściezka do katalogu ze stylami
RewriteRule ^css/(.+)$ css/$1 [L]

RewriteCond %{REQUEST_FILNAME} !-d
RewriteCond %{REQUEST_FILNAME} !-f
RewriteCond %{REQUEST_FILNAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
  Forum: PHP · Podgląd postu: #924174 · Odpowiedzi: 5 · Wyświetleń: 349

adbacz
Napisane: 2.01.2012, 16:11:32





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

No dobra, to było akurat proste i może troszkę na okrągło, ale masz. SF dysponuje możliwością korzystania z plików YML, a więc musi posiadać parser tych plików. A że plik config.yml jest napisany właśnie w YAML to możemy użyć symfonowych bibliotek. Użycie na pliku config.yml:
  1. namespace Twojprojekt
  2.  
  3. use Symfony\Component\Yaml\Yaml;
  4.  
  5. class Klasa {
  6.  
  7. public function pokazConfigAction() {
  8. $array = Yaml::parse('/path/to/app/config/config.yml');
  9. //Pokaże całą tablicę z zawartością pliku config.yml
  10. var_dump($array);
  11. //Dostęp do lifetime sesji
  12. $sessLifetime = $array['framework']['session']['lifetime'];
  13. }
  14. }


Mam nadzieję, że Ci pomogłem. Niestety, nie znalazłem innego rozwiązania (o którym pisałem wcześniej, o klasie która zarządza sesją) to podałem CI najprostsze, jakie udało mi się wymyślić, znaleźć. Powodzenia...
  Forum: Frameworki · Podgląd postu: #927646 · Odpowiedzi: 11 · Wyświetleń: 823

adbacz
Napisane: 9.12.2011, 15:54:38





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

A nie możesz zwiększyć czasu przechowywania sesji? Robią się nowe rekordy w DB bo prawdopodobnie, podczas kolejnego requestu, ostatnia sesja już wygasła i SF odnawia sesję uaktualniając COOKIE gdzie przechowywany jest ID sesji. Możesz na przykład każdemu zalogowanemu userowi przypisać ciastko z jakimś ID generowanym podczas logowania. W bazie dodać nową kolumnę w tabeli użytkowników, i przechowywac tam czas kiedy został user zalogowany, czy został zapamiętany, i jego ID z ciastka. Później podczas sprawdzania ilu jest aktuwnych userów, szukasz tylko takich, którzy mają określone dane w kolumnie.

Powiedzmy, że zapamiętanie sesji to 24 godziny, więc sprawdzasz, który user ma liczbę większą od time() - 24godz. (czas w tabeli zapisywany też funkcją time()), i jesli jest więszky (czyli zalogował się conamniej 24 godziny temu) to znaczy, że nadal jest aktywny.

Dodatkowo, jeśli user się wyloguje przed wygaśnięciem sesji, uaktualniasz jego czas w tabeli na 0.
  Forum: Frameworki · Podgląd postu: #921083 · Odpowiedzi: 11 · Wyświetleń: 823

adbacz
Napisane: 9.11.2011, 09:17:08





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

A czytałeś dokumentację? Tam jest ładnie napisane wszystko. Zrobić dwa osobne pliki z dwoma klasami (jedna do "strony" a druga "tresc"), wrzucić do nich pola, dodać annotacje (to się odmienia?) i później zapodać w linii poleceń, żeby zrobiło CI metody lub samemu dodać wszystkie. No i oczywiście zrobić odpowiednie tabele w DB.

Z tego co wiem, to Doctrine działa na zasadzie: Jedna kolumna w bazie danych to jedna klasa w PHP. A każde pole klasy to rekord z odpowiedniej jej kolumny.
  Forum: Frameworki · Podgląd postu: #912898 · Odpowiedzi: 1 · Wyświetleń: 309

adbacz
Napisane: 28.09.2011, 17:00:15





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Możesz sortować wyniki po ID (im wyższe ID rekordu tym nowszy rekord) lub dodać nową kolumnę z datą (np uniksową) i sortować po tej kolumnie. Najlepszym rozwiązaniem jest sortowanie po ID:

  1. $query="SELECT * FROM naprawy WHERE id_samochodu='$id' ORDER BY `id` ASC";
  Forum: Przedszkole · Podgląd postu: #902281 · Odpowiedzi: 4 · Wyświetleń: 681

adbacz
Napisane: 28.09.2011, 17:21:48





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Cytat
Jeszcze jedno pytanie- czy pogrubiony poniżej fragment kodu jest poprawny? Chodzi o te &&.
if (preg_match('@[0-9]{1,}@',$jeden && $dwa))


Nie, nie jest poprawny. Trzeba zrobić dwa warunki:
  1. if(preg_match('@[0-9]{1,}@',$jeden) && preg_match('@[0-9]{1,}@',$dwa)) {
  2.  
  3. }


PS. Następnym razem radzę przeczytać co wyskakuje za błąd, mimo, że jest po angielsku to w 90% wszystko nam serwer pokazuje, w jakij linijce i ewentualnie jaka funkcja. A jak nie możesz dojśc co to za problem wyskoczył, najlepiej skopiować i wkleić go tutaj i podać kawałek kodu z linijką, która występuje w błędzie.
  Forum: Przedszkole · Podgląd postu: #902286 · Odpowiedzi: 8 · Wyświetleń: 3 026

adbacz
Napisane: 25.08.2011, 11:07:50





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Piszesz o "obsłudze języków w domenie". Co rozumiesz przez to pojęcie?

Z tego co wiem, to mozna na kilka sposobów to rozwiązać. Np, zrobic własny, główny kontroler, po którym będziemy dziedziczyć wszystkie mniejsze i w nim w konstruktorze sprawdzać jaki język obsługuje przeglądarka użytkownika. Można też w tym kontrolerze sprawdzać adres URI, czy w odpowiednim miejscu (to już zależy od Ciebie) znajduje się skrót językowy. Np. pl.strona.com | en.strona.com LUB strona.com/pl | strona.com/en

Wszystko zależy od tego, jak sobie to wszystko rozpracujesz i jak Ci będzie łatwiej dostosować do swojego projektu.

Mam nadzieje, że o takie coś Ci chodziło, jeśli nie to napisz proszę bardziej konkretnie o co.
  Forum: Frameworki · Podgląd postu: #893299 · Odpowiedzi: 4 · Wyświetleń: 500

adbacz
Napisane: 13.08.2011, 14:20:19





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Jesli dobrze rozumiem, to zrób (jesli pracujesz na OOP) klase do zarządzania tematami forum (o ile to prawdziwe forum, bo nie rozumiem do końcca problemu), która będzie wyświetlała dany temat na podstawie tego, co znajduje się w adresie URL. Radzę użyć mod_rewrite, lub jeśli pracujesz na jakimś FW to użyć jakies jego klasy, która zarządza adresami URL.

MOD_rewrite nie służy tylko do zmiany nazwy plików. Zamiast takeigo adresu:
http://adres.pl/index.php?action=art&id=12
możesz mieć takie coś:
http://adres.pl/artykul_o_id_12.html

Wszystko zalezy od tego, jak to sobie ogarniesz z mod_rewrite.
  Forum: PHP · Podgląd postu: #890017 · Odpowiedzi: 9 · Wyświetleń: 1 573

adbacz
Napisane: 13.08.2011, 11:57:32





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Ok, ale mam kilka zastrzeżeń. Dlaczego nie sprawdzasz na samym początku wykonywania skryptu, czy kazde pole zostało wypełnione tylko uzywasz zmiennej do zliczania?

Jesteś początkujący? Lepszym nawykiem jest zaczęcie używania anglojęzycznych nazw zmiennych i funkcji jesli będziesz chciał dalej w to brnąć. Lepiej teraz bo z nawyków trudno czasem zrezygnować.

Po return oraz echo nie trzeba wpisywać nawiasów, żeby instrukcja zadziałała. Oczywiście można, ale one służą raczej do matematycznych rzeczy i do uwzględniania pierwszeństwa w instrukcjach warunkowych przede wszystkim.

Jeśli wysyłasz ciąg znaków, jakiś napis, bez znaków specjalnych to lepiej używać pojedyńczych cudzysłowiów 'text' zamiast podwójnych "text".

A tak nawiasem, to jesli będziesz łądnie uzywał tabulatora to nie tylko Ty nie będziesz miał trudności z odczytywaniem kodu, ale i inni czytający twój kod.

W zewnetrznych funkcjach, gdy zwracasz wartość, i jest to jedna z dwóch możliwych (operacja sie wykonała lub nie) to lepiej używać takiego czegoś:
  1. if(1=1) {
  2. return TRUE;
  3. }
  4. else {
  5. return FALSE;
  6. }

Później podczas modyfikacji kodu, nie będziesz musiał skakać po plikach i szukać tej jednej funkcji która zwraca Ci ciąg, który wypisujesz na ekranie.
  Forum: PHP · Podgląd postu: #889987 · Odpowiedzi: 3 · Wyświetleń: 333

adbacz
Napisane: 26.07.2011, 14:15:42





Grupa: Zarejestrowani
Postów: 532
Dołączył: 15.04.2011
Skąd: Kalisz

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

Usuń z początku wers: height:100%;
Czyli dla id="strona" daj taki kod:
  1. #strona{
  2. margin:0px auto;
  3. width:960px;
  4. }


Teraz powinno być gites.

PS:
Mój błąd, nie napisałeś na jakiej przeglądarce masz takie coś i to co wyżej napisałem dotyczy tylko Opery. Napisałem wyżej, żebyś przypisał stałe wartości bloków. Napisałeś, że nic to nie dawało. Ja zrobiłem tak i działa dobrze na FF3.6 Opera 10.6 i IE6:
  1. body{margin:0px auto;}
  2. #strona{
  3. margin:0px auto;
  4. width:960px;
  5. }
  6. #naglowek{
  7. padding:0px;margin:0px;
  8. }
  9. #logo{
  10. display: inline;
  11. border:1px solid black;
  12. height:120px;
  13. width:200px;
  14. float:left;
  15. margin-top:10px;
  16. margin-bottom:10px;
  17. }
  18. #top{
  19. display: inline;
  20. border:1px solid black;
  21. height:120px;
  22. width:756px;
  23. float:right;
  24. margin-top:10px;
  25. margin-bottom:10px;
  26. }
  27. #belka{
  28. border:1px solid black;
  29. height:60px;
  30. width:958px;
  31. clear:both;
  32. margin-top:10px;
  33. }
  34. #srodek{
  35. }
  36. #lewe_menu{
  37. display: inline;
  38. border:1px solid black;
  39. height:400px;
  40. width:150px;
  41. float:left;
  42. margin-top:10px;
  43. margin-bottom:10px;
  44. margin-right:10px;
  45. }
  46. #tresc{
  47. float:left;
  48. border:1px solid black;
  49. height:400px;
  50. width:594px;
  51. margin-top:10px;
  52. margin-bottom:10px;
  53. position:relative;
  54. }
  55. #prawa{
  56. display: inline;
  57. position: relative;
  58. border:1px solid black;
  59. height:400px;
  60. width:200px;
  61. float:right;
  62. margin-top:10px;
  63. margin-bottom:10px;
  64. }
  65. #stopka{
  66. border:1px solid black;
  67. height:100px;
  68. width:958px;
  69. clear:both;
  70. margin-bottom:100px;
  71. }
  Forum: PHP · Podgląd postu: #884785 · Odpowiedzi: 4 · Wyświetleń: 343


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: 18.04.2024 - 23:42