Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] struktura mojej aplikacji
Forum PHP.pl > Forum > Przedszkole
AniaR
Wczesniej robilam jedynie niezbyt skomplikowane sysetemy cms do obslugi aktyalnosci, wprowadzania zdjec itp. Teraz przyszlo mi zrobic panel administarcyjny do strony fleszowej ktory bedzie pozwalal na wprowadzenie ogromnej ilosci informacji roznego rodzaju.. Nie bedzie to ani sklep ani portal spolecznosciowy poprostu strona informacyjna obslugiwana przez cmsa.
W tym panelu bedzie chyba ze 100 roznych formularzy do wprowadzania tych danych no i zastanawiam sie jaka strukture aplikacji przyjac..

Mam index.php w ktorym zrobilam cale menu. Po kliknieciu na element menu do tabelki posrodku includuje odpowiednia podstrone. W ten sposob nie musze na kazdej podstronie wklejac kodu menu i kodu odpowiedzialnego za wyglad strony. Na podstronach ktore includuje umieszczam jedynie potrezbne formularze do wprowadzania danych.

1. Po pierwsze nie wiem czy to jest dobry sposob tak uzalezniac inclugowana podstrone od wartosci zmiennej w adresie pobieranej metoda GET. Potem wszedzie musze wpisywac te sciezki aby wszytsko mi sie zgadzalo, a czasem sa strasznie dlugie.. Bo jak bym nie inclugowala tych podstron to w formularzach na podstronach nie musialabym podawac tych dlugich sciezek po wyslaniu danych do bazy a poprostu header("Location:podstrona na ktorej jestem"); a tak header("Location: index.php?i tu dalej zmienne zmienne zmienne");
No ale moze tak trzeba i juz..

2. Druga rzecz i najwazniejsza. Jezeli np w podstronie1.php ktora includuje, w skrypcie uzylam zmiennej to jak moge sie do niej odwolac na stronie index.php??
Fifi209
2. Poczytaj o zasięgu zmiennych i global

Co do pytania pierwszego, lepiej includować do index.
Najlepiej do czegoś takiego przyjąć w ogóle wzorzec projektowy MVC, ale to inna bajka.
Co dalej? Jeżeli robisz to dla siebie, to polecam skorzystać z ajax'a.
AniaR
No wlasnie includuje wszystkie pliki do index..
Czytam juz o wzorcu projektowym MVC.. Podobno podstawa dla kazdej wiekszej aplikacji wiec dzieki za podpowiedz:)

Jak to jezeli robie to dla siebie?
Robie to dla klienta a nie dla siebie:)
Fifi209
Cytat(AniaR @ 24.07.2009, 12:51:52 ) *
No wlasnie includuje wszystkie pliki do index..
Czytam juz o wzorcu projektowym MVC.. Podobno podstawa dla kazdej wiekszej aplikacji wiec dzieki za podpowiedz:)

Jak to jezeli robie to dla siebie?
Robie to dla klienta a nie dla siebie:)


Bo jeżeli byś robiła dla siebie, to spokojnie możesz korzystać z ajax'a. Jednak jeżeli robisz to dla klienta ajax stanowczo odpada - czemu? Wystarczy wyłączyć js.
dotangelo
Definitywnie polecam MVC. Nie wyobrażam sobie tego typu projektu bez MVC. Dzięki temu, nie pogubisz się w kodzie, a zarządzanie i naprawianie to będzie przyjemność smile.gif W ogóle, polecałbym Ci użyć do tego celu jakiegoś frameworka.
AniaR
Zrobilam tak jak mi doradziliscie.. Wybralam frameworka CodeIgniter opartego na MVC i na podstawie tutorialu na ich stronie domowej (http://codeigniter.com/tutorials/) zaczelam przerabiac moj panel admina.

teraz struktura wyglada tak:
1. do foldera views wrzocilam wszystkie moje pliki ktore utworzylam wczesniej.
2. Poprzenosilam z nich kod odpowiedzialny za komunikacje z baza do jednego glonego kontrolera ktory stworzylam w katalogu controllers.

Co mi to dalo:
1. mam ladnie wygladajace adresy URL http://localhost:8888/ci/main/o_komenda/1/struktury/armia zamiast tych wszytskich zmiennych za znakiem zapytania
2. wyczyscil mi sie kod na podstronach bo nie musze pilnowac polaczenia z baza no i wiecznego sprawdzania tych zmienych $_GET. Wszystkie zapytania do bazy teraz sa w kontrolerze.

Jednak i tak wiem ze dobrze tego nie zaprojektowalam..
1. Wciaz inkluduje dziesiatki plikow w zaleznosci od tego co jest w adresie.. Bo jaki moze byc inny sposob aby wyglad strony (menu, tlo) zrobic tylko raz, a odpowiednie formularze wczytywac do jednego miejsca ktore sie wlasnie dynamicznie zmienia?? Chyba tak czy siak to trzeba includowac..

2. Druga rzecz ktora mnie bardzo niepokoi to to ze ten kontroler ciagle sie wydluza i wydluza. Juz ma ponad 1000 linijek a to dopiero poczatek..

3. No i trzeca najwazeneijsza rzecz to to ze nie uzywam trzeciego elementu MVC czyli MODELU. Bo uzywam tylko V i C. Nie mam pojecia jak go moge uzyc w swojej aplikacji. Naprawde szukalam i czytalam ale nie potrafie tego jakos zwiazac w calosc. Wiekszosc przykladow jest na PHP5 obiektowym a CI bazuje na PHP4..

Moze ktos mi powie jak uzyc w ponizszym przykladzie trzeciego elemntu MODEL, chyba ze poprostu nie ma potrzeby go uzywac jak sie pisze w php4..

W kontrolerze funkcja:
  1. <?php
  2. function login()
  3.        {
  4.            if (count($_POST) > 0 && isset($_POST['login']) && isset($_POST['password']))
  5.            {
  6.                $data['login'] = $_POST['login'];
  7.                $data['password'] = $_POST['password'];
  8.                
  9.                $data['tak']= "tak";
  10.                $this->db->where('login' , $_POST['login']);
  11.                $this->db->where('password' , $_POST['password']);
  12.                $this->db->where('rola' , 'A');
  13.                $data['query'] = $this->db->get('uzytkownik');
  14.                $this->load->view("login" , $data);        
  15.            }
  16.            else
  17.            {    
  18.                $data['tak']= "";    
  19.                $this->load->view("login" , $data);
  20.            }
  21.        }
  22. ?>


W views/login.php mam:
  1. <?= form_open('ak/login') ?>
  2. <table border="0" align="center" width="250">
  3. <tr align="left">
  4. <td>
  5. <div align="right"><a>L:</a></div>
  6. </td>
  7. <td>
  8. <input type="text" name="login" maxlength="40" size="15">
  9. </td>
  10. </tr>
  11. <tr align="left">
  12. <td valign="top">
  13. <div align="right"><a>H:</a> </div>
  14. </td>
  15. <td>
  16. <input type="password" name="password" maxlength="40" size="15"><br>
  17. <input type="submit" value="zaloguj" >
  18. </td>
  19. </tr>
  20. </table>
  21. </form>


no i kod ktory sparwdza moze zalogowac tez w pliku views.login.php
  1. <?php if(strlen($tak) > 0 ): ?>
  2.    <?php if($query->num_rows() > 0): ?>
  3.    
  4.        <?php
  5.             $_SESSION['username'] = $login;        
  6.            $_SESSION['password'] = $password;            
  7.            $_SESSION['role'] = "admin";
  8.        ?>
  9.              
  10.        <?php redirect("");?>
  11.        
  12.    <?php else : ?>
  13.        <?php
  14.            print "Niezgodność loginu z hasłem.";
  15.        ?>  
  16.    <?php endif;?>        
  17. <?php endif;?>


I to cale logowanie. jak zaputanie w kontrolerze zwroci jakies rekordy to przekierowuje do strony glownej i ustawia zmienne sesyjne.

I jak mam to podzielic aby uzyc jeszcze MODELU czy moze wcale nie powinnam go uzywac??

Prosze o jakies podpowiedzi..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.