Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kilka pytań o praktyczne zastosowanie programowania obiektowego
Zagiewa
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

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


Witam. Dopiero wchodzę w programowanie obiektowe i choć oczytałem się już trochę, wiele poradników dostępnych w internecie opisuje obiektowość w sposób teoretyczny nie pokazując jak można go wykorzystać w praktyce dlatego też mam parę pytań, które nie dają mi spokoju.

1. Tworząc klasy powinno się je trzymać w tym samym pliku co całość kodu czy najlepiej jest utworzyć nowy plik zawierający tylko klasy, a następnie je includować w plikach w których będziemy z tych klas korzystać?
2. Jeśli utworzymy klasę to tworzenie do niej obiektów za pomocą np. formularzy jest proste (przynajmniej teoretycznie) natomiast jak zapisywać obiekty do bazy danych? zapisujemy samą nazwę obiektu czy należy zapisać nazwę wraz ze wszystkimi właściwościami tego obiektu? Np. mamy klasę o nazwie prostokąt. Właściwościami będzie bok_a i bok_b. Tworzymy nowy obiekt o nazwie pierwszy_prostokat i nadajemy mu właściwości bok_a=5 i bok_b=10 jak powinien wyglądać rekord gdy zapiszemy ten obiekt do bazy? bo mi przychodzą do głowy taki zapis:

id. || nazwa || bok_a || bok_b
1 || pierwszy_prostokat || 5 || 10

3. Czy nawet w przypadku prostych skryptów warto używać obiektowości? Dajmy na to tworząc księgę gości to ilość kodu niezależnie czy użyjemy kodu strukturalnego czy obiektowego jest niemal taka sama. Jeśli chodzi o czytelność jest też podobnie bo skrypt ogólnie jest prosty. Sposób zapisywania do bazy jest identyczny zmienia się co najwyżej struktura tabeli. Więc nasuwa się pytanie - jak pisać?
Go to the top of the page
+Quote Post
4 Stron V   1 2 3 > »   
Start new topic
Odpowiedzi (1 - 19)
tmka
post
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 9
Dołączył: 9.02.2009

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


Na początek dobra rada jeżeli chodzi o sam proces nauki obiektówki i, w sumie, nauki czegokolwiek smile.gif - zobaczyć jak to robią inni. Poszukaj jakiś prostych CMS-ów, sklepów itp. napisanych obiektowo i zobacz jak robią to inni.

Jeżeli chodzi o pytania:
1. Najczęstszym modelem jest trzymanie każdej, nawet małej, klasy w oddzielnym pliku.
2. Użyte przez Ciebie pojęcie 'zapisu obiektu do bazy' jest troche mylące, bo zapisujesz tylko jego, i to niektóre, właściwości (w tym przypadku boki). Najlepiej zobrazuje to przykład:

  1. class Prostokat{
  2. private bokA;
  3. private bokB;
  4. private nazwa;
  5.  
  6. public function __construct(a,b,nazwa){
  7. $this->setBokA(a);
  8. $this->setBokB(b);
  9. $this->setNazwa(nazwa);
  10. }
  11.  
  12. public function setBokA(a){
  13. $this->bokA = a;
  14. }
  15.  
  16.  
  17. public function setBokB(b){
  18. $this->bokB = b;
  19. }
  20.  
  21.  
  22. public function setNazwa(nazwa){
  23. $this->nazwa = nazwa;
  24. }
  25.  
  26. public function getBokA(){
  27. return $this->bokA;
  28. }
  29.  
  30.  
  31. public function getBokB(b){
  32. return $this->bokB;;
  33. }
  34.  
  35.  
  36. public function getNazwa(){
  37. return $this->nazwa;
  38. }
  39.  
  40. //save zapisuje nam wlasciwosci do bazy
  41. public save(){
  42. //zalozmy, ze masz juz polaczenie, wiec tworzysz zapytanie ktore moze wygladac tak:
  43. $query = "INSERT INTO prostokaty ( nazwa, bok_a, bok_b ) VALUES ($this->nazwa, $this->bokA, $this->bokB)";
  44. mysql_query($query);
  45. }
  46. //load wczyta nam wlasciwosci z bazy, wystarczy podac id wpisu
  47. public load($id){
  48. //
  49. $query = "SELECT nazwa, bok_a, bok_b FROM prostokaty WHERE id=$id";
  50. $result = mysql_query($query);
  51. //itd.
  52. }
  53.  
  54. }


3. Na łatwych skryptach można łatwo przećwiczyć sobie pewne mechanizmy obiektowości jak np. dziedziczenie czy polimorfizm. Osobiście staram sie wszystko pisac obiektowo, ze wzgledu na to, że pozniej
łatwiej jest taki obiekt wykorzystać w innych projektach.

Ten post edytował tmka 24.06.2010, 14:49:31
Go to the top of the page
+Quote Post
Zagiewa
post
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

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


Szukałem skryptów napisanych obiektowo ale na ogół natrafiałem na skomplikowane ogromne skrypty, których samo przeanalizowanie było gorsze niż nauka obiektowości tongue.gif Najbardziej w przykładzie, który napisałeś zainteresował mnie sposób zapisu i odczytu z bazy bo zrobiłeś z tego metody o czym ja raczej bym nie pomyślał. Sposób ten jest o tyle dobry, że bardzo prosto się odczytuje obiekt z bazy. Co do praktyki używania obiektowości nawet w prostych skryptach to masz racje, jest to dobry sposób na potrenowanie tak czy inaczej dzięki wielkie, nie oczekiwałem tak konkretnej odpowiedzi smile.gif
Go to the top of the page
+Quote Post
red9skull
post
Post #4





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


To ja się podepnę: Do czego można wykorzystać konstruktor? Jak i kiedy z niego korzystać?


--------------------
zmoderowano - zbyt fajna
Go to the top of the page
+Quote Post
croc
post
Post #5





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Programowanie obiektowe pojawiło się, ponieważ jest bardziej naturalnym przełożeniem rzeczywistości na kod. Dla mnie używanie kodu obiektowego jest pewnego rodzaju dojrzałością programistyczną, chociaż używanie go wszędzie też nie jest rozsądne. Trzeba samemu wiedzieć co i kiedy jest właściwe.

Ja osobiście lubię tworzyć dużo metod tak, by używanie kodu było potem jak najbardziej intuicyjne i wygodne. Przykładowo:

  1. $article = new Article(12); // w konstruktorach robię pobieranie ID i wczytywanie danych z bazy do pól obiektu
  2. echo $article->getAuthor()->getFullName();
  3. if($article->getAuthor()->isAdmin()) {
  4. echo 'Autor jest administratorem!';
  5. }
  6. while($news = $article->getAuthor()->getNews()) {
  7. echo $news->getTitle();
  8. echo '<br>';
  9. echo $news->getDate()->getYear();
  10. }


Napisałem ten kod teraz, naprawdę nigdy tego konkretnego fragmentu nie użyłem. Chodzi o to jak pisać kod, żeby było można wykonywać równie wygodne operacje. Wszystko może być obiektem (u mnie np. daty to obiekty, bo potem bardzo fajnie się na nich operuje).

Nie wyobrażam sobie pisania dużych systemów strukturalnie. OK, samo pisanie sobie wyobrażam, ale potem rozwijanie kodu to masakra.
Go to the top of the page
+Quote Post
Zagiewa
post
Post #6





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

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


Croc co prawda nie napisałem jeszcze żadnego praktycznego kodu z użyciem obiektowości bo tak jak pisałem dopiero staram się go dobrze zrozumieć ale zgodzę się, że rozbudowywanie kodu strukturalnego to koszmar tym bardziej, że kod strukturalny miejscami jest bardziej zawiły niż obiektowy, a przynajmniej tak mi się wydaje.
Go to the top of the page
+Quote Post
haahh
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 9
Dołączył: 6.06.2010

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


Strukturalny faktycznie strasznie się edytuję. Sam zmieniałem ostatnio strukturę wyświetlania mojego "małego portalu" php i to była masakra. Muszę przejść na obiektowy styl pisania kodu - ktoś poleci jakieś książki traktujące o średnio-zaawansowanym php i pisanie obiektowym?


--------------------
This function has been DEPRECATED as of PHP 5.3.8.
Go to the top of the page
+Quote Post
croc
post
Post #8





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Lepsze są tutoriale. Zacznij od tutoriala o samej idei OOP nawet jeśli wydaje ci się, że ją znasz.

Co do zawiłości: nie uważam, by kod obiektowy był zawiły. Jest go dużo, ale dobrze napisany jest niesamowicie schludny i poukładany. Pamiętam dzień, kiedy przekonałem się do OOP w PHP - od tego czasu każdy projekt to dla mnie 90% mniej nerwów i irytacji. Pisząc kod, płyniesz. smile.gif Masz ten komfort, że kod w klasach można [przeważnie] poprawić bez ingerencji w schematy użycia tych klas. A to genialne, bo cały bajzel pojawia się zwykle w strukturach. Dla mnie najlepszą nauką OOP była nauka Javy, chociaż kompilowane aplikacje OOP pisze się nieco inaczej niż interpretowane.
Go to the top of the page
+Quote Post
haahh
post
Post #9





Grupa: Zarejestrowani
Postów: 23
Pomógł: 9
Dołączył: 6.06.2010

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


Tutki? Pewnie najlepszy ten z manuala snitch.gif, coś polecasz? Ale i tak jakaś książka mi się przyda, bo chciałbym ruszyć do przodu z php. Zobaczę, może uda mi się mój portal przerobić na wersję obiektową i ciekawe, czy naprawdę będzie to lepiej się prezentować niż obecna wersja. Na razie za każdym razem jak spojrzę na te strzałki "->" to padam.


--------------------
This function has been DEPRECATED as of PHP 5.3.8.
Go to the top of the page
+Quote Post
croc
post
Post #10





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Kiedyś kochałem czytać książki programistyczne, ale mam o nich coraz gorsze zdanie. Szalę goryczy przelała książka autorstwa samego ojca PHP pt. "PHP5. Programowanie". Byłem w szoku, że sam autor PHP utrwala złe nawyki (np. używanie funkcji empty dla stringów, co uważam za zły nawyk), niekonsekwencję w kodzie i bezsensowne podrozdziały kosztem takich, których brakuje w książce.

A zachwycając się dalej programowaniem obiektowym, to te strzałeczki również polubisz smile.gif (chociaż Bóg jeden wie dlaczego w PHP nie są to kropki) Kod daje frajdę, bo myślisz o wielu rzeczach jak o żywych obiektach, dzięki czemu zachowujesz konsekwencję. Oczywiście, strukturalnie mógłbyś robić do wszystkiego funkcje, ale to nie to samo.

Ten post edytował croc 25.06.2010, 09:34:15
Go to the top of the page
+Quote Post
thek
post
Post #11





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Czemu strzałeczki, a nie kropki? Może są to wskaźniki na pola, a nie same pola bezpośrednio. Albo zrobiono tak by nie przeciążać już używanego operatora konkatenacji.
$obiekt.pole
$obiekt.$pole
Różnica niewielka, ale trzeba by rozpoznawać po stronie interpretera z czym mamy do czynienia. Łatwiej wprowadzić -> , który jest bardziej jednoznaczny i wiąże się w pewien sposób z obiektami jako odniesienie przez wskaźnik typowe dla choćby takich języków jak C++.

EDIT: Patrząc na zapisy oba popatrz też jak łatwo się pomylić winksmiley.jpg Po prostu brak dolara w jednym miejscu.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
red9skull
post
Post #12





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Cytat(thek @ 25.06.2010, 11:13:38 ) *
Czemu strzałeczki, a nie kropki?


Tak samo jak: czemu kropki a nie znak plusa?
  1. $string = "wyszukiwarka " . "google";


winksmiley.jpg


--------------------
zmoderowano - zbyt fajna
Go to the top of the page
+Quote Post
Zagiewa
post
Post #13





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

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


Mam zamiar dzisiaj napisać pierwszy skrypt za pomocą obiektowości. Żeby było łatwo ale praktycznie padło na księgę gości. Zanim jednak zacznę chciał bym zapytać was czy dobrze ją sobie zaplanowałem, a więc.

1. klasa nazywała by się ksiega
2. właściwości: data, imie, email, strona, numer gg, komentarz
3. metody: zapis(do bazy), wczytaj(z bazy), set(ustawienie wartości dla właściwości)

I tutaj mam jeszcze dwa pytanka. tmka Ty jako pierwszą metodę utworzyłem z konstruktorem dlaczego? i czy ona jest wymagana? W Twoim kodzie ustawianie wartości dla właściwości jest w nowej metodzie np:
Kod
public function setBokA(a){

$this->bokA = a;

}

Moje pytanie to czy nie lepiej było by w jednej metodzie zawrzeć wszystkie właściwości czyli coś takiego:
Kod
public function setBokA(a){

$this->data = a;
$this->imie = b;
$this->email = c;
$this->strona = d;
$this->gg = e;
$this->komentarz = f;

}

Czy jest coś jeszcze o czym powinienem pamiętać przy pisaniu tego skryptu?
Go to the top of the page
+Quote Post
Mikz
post
Post #14





Grupa: Zarejestrowani
Postów: 48
Pomógł: 3
Dołączył: 7.12.2007

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


Cytat(thek @ 25.06.2010, 11:13:38 ) *
Czemu strzałeczki, a nie kropki? Może są to wskaźniki na pola, a nie same pola bezpośrednio. Albo zrobiono tak by nie przeciążać już używanego operatora konkatenacji.
$obiekt.pole
$obiekt.$pole
Różnica niewielka, ale trzeba by rozpoznawać po stronie interpretera z czym mamy do czynienia. Łatwiej wprowadzić -> , który jest bardziej jednoznaczny i wiąże się w pewien sposób z obiektami jako odniesienie przez wskaźnik typowe dla choćby takich języków jak C++.

EDIT: Patrząc na zapisy oba popatrz też jak łatwo się pomylić winksmiley.jpg Po prostu brak dolara w jednym miejscu.


No nie jest to takie proste jeśli dorzucimy do tego fakt, że można zastosować coś takiego jak metoda __toString() w obiekcie lub nazwę funkcji jako wartość zmiennej winksmiley.jpg .

Red9skull, konstruktor można wykorzystać na wiele sposobów, na przykład:

  1.  
  2. class article
  3. {
  4. private $title, $content, $id;
  5.  
  6. public function __construct($id = null)
  7. {
  8. $this->id = $id;
  9.  
  10. if (!is_null($id))
  11. {
  12. $query = "SELECT * FROM articles WHERE 'id' = $id LIMIT 1";
  13.  
  14. $result = mysql_query($query);
  15. //pominę fetch etc...
  16.  
  17. $this->title = $result['title'];
  18. $this->content = $result['content'];
  19. }
  20. }
  21.  
  22. public function setTitle($title)
  23. {
  24. //parę postów wyżej było
  25. }
  26.  
  27. public function setContent($content)
  28. {
  29. //parę postów wyżej było
  30. }
  31.  
  32. public function save()
  33. {
  34. if (!is_null($this->id))
  35. $query = "UPDATE (et cetera)";
  36. else
  37. $query = "INSERT (et cetera";
  38.  
  39. //parę postów wyżej było
  40. }
  41. }
  42.  


Teraz pytanie z mojej strony, raczej z czystej ciekawości bardziej niż z potrzeby odpowiedzi:
Do czego najczęściej używacie destruktorów?
Go to the top of the page
+Quote Post
thek
post
Post #15





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Odpowiedź równe prosta - zwalniania zasobów przydzielonych konstruktorem. Dla wielu wyda się to dziwne, skoro istnieje Garbage Collector.Tu jest jednak pułapka. Wielokrotnie zachodzą sytuacje gdy pewne obiekty zawierają inne obiekty a te z kolei inne obiekty prowadzące do kolejnych. GC potrafi się w takich sytuacjach "wywalić" i zostawić w pamięci śmieci. Po prostu może czegoś nie zgarnąć do usunięcia. Taki zombie... Nie żyje, a jednak jest winksmiley.jpg O ile w PHP nie jest to łatwo zauważalne, tak w językach kompilowanych potrafi napsuć krwi. Szczególnie ważne jest to w dynamicznym przydziale pamięci. Jeśli pole jest tylko wskaźnikiem (adresem elementu) na obszar pamięci, to jego skasowanie powoduje nie usunięcie całej danej z pamięci, ale tylko utratę wskaźnika, bez dotykania tych danych. Jeśli obiekt jest tymczasowym tylko w pętli, to z każdym jej przebiegiem z pamięci ucieka nam obszar równy jej długości. Kilkadziesiąt tysięcy cykli i nagle program zająć może kilkadziesiąt MB, choć używa tak naprawdę kilkuset kilobajtów. Destruktory właśnie odpowiadać mają za zwalnianie pamięci w odwrotnej kolejności niż przydzielał ją konstruktor by uniknąć wycieków. To jest jego główne zadane, ale nie tylko. Często stosuje się parę konstruktor-destruktor do działania na zmiennych statycznych. Takim banalnym przykładem jest licznik obiektów. Konstruktor inkrementuje zmienną statyczną mającą być licznikiem obiektów. Bo przecież do takiej mają dostęp wszystkie obiekty tej samej klasy. Destruktor tę zmienną dekrementuje. Dzięki temu patrząc na zmienną statyczną, wiemy w każdej chwili ile instancji danej klasy siedzi w pamięci.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Mikz
post
Post #16





Grupa: Zarejestrowani
Postów: 48
Pomógł: 3
Dołączył: 7.12.2007

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


Muszę się szczerze przyznać że nowością jest dla mnie fakt że PHP może nie radzić sobie ze zwalnianiem zasobów. Nigdy, na swoim przypadku, nie zaobserwowałem czegoś takiego i nigdy też nie stosowałem samodzielnego zwalniania zasobów w destruktorach (bo rozumiem że mówisz o samodzielnym zwalnianiu). Czy mógłbyś podrzucić jakiś przykład takiego zwalniania?
Go to the top of the page
+Quote Post
Crozin
post
Post #17





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Wystarczy użyć zwykłego unset.
Go to the top of the page
+Quote Post
thek
post
Post #18





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jak wspomniał Crozin - unset. Co do destruktora to wiele osób odpuszcza sobie pisanie go w przypadku mało skomplikowanych klas. Zazwyczaj bowiem domyślne destruktory bezproblemowo radzą sobie z usuwaniem. Jeśli struktura jest zagmatwana lub niszczenie obiektu powinno zakończyć się określonymi działaniami, to własny destruktor po prostu ratuje tyłek. Nieważne bowiem jak kończy żywot obiekt - destruktor zostanie wywołany i wykona zadaną akcję, przykładowo zapis stanu obiektu do bazy lub pliku w momencie zniszczenia.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Zagiewa
post
Post #19





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

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


Pisałem, pisałem, aż stanąłem w miejscu sad.gif Niby bez błędu a jednak przesyłane wartości nie trafiają do bazy. Mam dwa pliki. Jeden z klasą, drugi z formularze do dodawania wpisów w prostej księdze gości. Przypominam, że to mój pierwszy skrypt z zastosowaniem obiektowości. Mógł by ktoś zerknąć na moje wypociny i sprawdzić czemu to nie działa?
  1. <?php
  2.  
  3. class ksiega {
  4.  
  5. private $_data = null;
  6. private $_godzina = null;
  7. private $_imie = null;
  8. private $_email = null;
  9. private $_strona = null;
  10. private $_gg = null;
  11. private $_wpis = null;
  12.  
  13. public function ustaw_wartosci($data, $godzina, $imie, $email, $strona, $gg, $wpis) {
  14.  
  15. $this->_data = $data;
  16. $this->_godzina = $godzina;
  17. $this->_imie = $imie;
  18. $this->_email = $email;
  19. $this->_strona = $strona;
  20. $this->_gg = $gg;
  21. $this->_wpis = $wpis;
  22. }
  23.  
  24. public function pokaz() {
  25.  
  26. return $this->_data.'\n';
  27. return $this->_godzina.'\n';
  28. return $this->_imie.'\n';
  29. return $this->_email.'\n';
  30. return $this->_strona.'\n';
  31. return $this->_gg.'\n';
  32. return $this->_wpis.'\n';
  33. }
  34.  
  35. public function save() {
  36.  
  37. include('dane.php');
  38. $sql = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or
  39. die("Sprawdź połączenie z serwerem! " . mysql_error());
  40.  
  41. mysql_select_db(SQL_DB, $sql) or
  42. die("Sprawdź bazę! " . mysql_error());
  43.  
  44. $insert = "INSERT INTO wpisy (data, godzina, imie, email, strona, gg, wpis)
  45. VALUES ('$this->data', '$this->godzina', '$this->imie', '$this->email', '$this->strona', '$this->gg', '$this->wpis')";
  46. $result = mysql_query($insert) or
  47. die('Dodanie wpisu nie powiodło się. ' . mysql_error());
  48. }
  49.  
  50. public function load_one($id) {
  51.  
  52. $select = "SELECT * FROM wpisy WHERE id=$id";
  53. $result = mysql_query($select) or
  54. die('Załadowanie wpisu z bazy nie powiodło się. ' . mysql_error());
  55. }
  56.  
  57. public function load_all() {
  58.  
  59. $select = "SELECT * FROM wpisy ORDER BY id DESC ";
  60. $result = mysql_query($select) or
  61. die('Załadowanie wpisów z bazy nie powiodło się. ' . mysql_error());
  62. }
  63. }
  64.  
  65. ?>

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5.  
  6. <?php
  7.  
  8. if(isset($_POST['submit'])) {
  9.  
  10. include('class/wpis.php');
  11.  
  12. $data = date("d-m-Y");
  13. $godzina = date("G:i");
  14. $imie = $_POST['imie'];
  15. $email = $_POST['email'];
  16. $strona = $_POST['strona'];
  17. $gg = $_POST['gg'];
  18. $wpis = $_POST['wpis'];
  19.  
  20. $nowy = new ksiega;
  21. $nowy->ustaw_wartosci($data, $godzina, $imie, $email, $strona, $gg, $wpis);
  22. $nowy->save();
  23.  
  24. echo 'Dziękuję za dodanie wpisu do księgi gości.';
  25. exit();
  26. }
  27.  
  28. ?>
  29.  
  30. Aby dodać wpis do księgi wypełnij formularz.
  31. <br /><br />
  32.  
  33. <form method="post">
  34. Autor: <input type="text" name="imie" size="25"><br />
  35. Email: <input type="text" name="email" size="25"><br />
  36. Strona www: <input type="text" name="strona" size="25"><br />
  37. Numer gg: <input type="text" name="gg" size="25"><br />
  38. Komentarz: <textarea style="width: 250px; height: 150px;" name="wpis"></textarea><br />
  39. <input type="submit" name="submit" value="Dodaj">
  40. </form>
  41.  
  42. </body>
  43. </html>


Ten post edytował Zagiewa 28.06.2010, 12:08:37
Go to the top of the page
+Quote Post
thek
post
Post #20





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Po pierwsze - użyj właściwego bbcode (nie wal do znacznika code, ale php i na przyszłość odpowiednio css, html czy inne). Poza tym nie wiemy jaki bład Ci sypie, a to też ważna informacja. Ja obstawiam, że funkcja save i błąd zapytania wpisującego do bazy. Ale to tylko przypuszczenie z mojej strony.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 21:56