Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%)
|
Witam
Napisalem taki skrypcik treningowy, szczerze to praktycznie przepisalem go z ksiazki, niestety w kodzie jak sie okazuje jest sporo bledow a errata online wydaje sie niekompletna. Poproawilem z 3 bledy ale z tym nie potrafie sobie poradzic. Chodzi o zmiane wartosci w tabeli mysql przez wywolanie odpowiedniej metody w klasie. Oto kod.
A tutaj miejsce inicjalizacji obiketu oraz wywolanie metod :
Jak zapewnia autor po kolejnym wywolaniu strony automatycznie powinny zmienic sie wartosci w bazie danych poprzez uzycie metod setName oraz setDescription. Jednak kolejne wywolania nic nie daja, dopiero po wyswietleniu wartosci po instrukcji try...catch widac wyswietla sie zmieniona wartosc , lecz w bazie danych pozostaje bez zmian. Ten post edytował Wolfie 12.03.2009, 20:03:47 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%)
|
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%)
|
Niestety nic to nie pomoglo , ciagle to samo.....
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%)
|
Zmień metodę __destruct klasy Widget tak:
A plik, w którym jej używasz na taki:
I powiedz co wyświetla. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%)
|
Cytat Nazwa artykułu: Korale Opis artykulu: Korale koloru koralowego Nowa nazwa artykułu: Trampki Nowy opis artykulu: Trampki o duzym przebiegu! Fatal error: Function name must be a string in C:\Program Files\WebServ\httpd\OOP\PHP5\testWidget.php on line 16 Linia 16-sta to ta :
Ten post edytował Wolfie 12.03.2009, 20:55:03 |
|
|
|
Post
#6
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Funkcji zamykania połączenia/etc nie powinno się umieszczać w destruktorze. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%)
|
A zwróciłeś uwagę na " __desctruct()"? Poza tym wcale nie trzeba usuwać obiektu, PHP robi to automatycznie (w normalnych warunkach oczywiście).
Erix, czemu się nie powinno? |
|
|
|
Post
#8
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Ponieważ prowadzi to nieraz do nieprzewidywalnych sytuacji, typu resource of unknown, czy innych błędów.
Niestety, jeśli chodzi o destruktory, to developerzy PHP się nie popisali... |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%)
|
No OK, ale jak chcę automatycznie zapisać dane do bazy po zniszczeniu obiektu, ale nie zamykam połączenia, to mogę zostawić to w destruktorze?
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%)
|
Chyba zaczyna sie robic OT. Ja chce tylko znac poprawne rozwiazanie zeby moc dalej przerabiac material ksiazki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Wiec chodzi o pojedyncze wywolanie parametrow a po przeladowaniu zmiane wartosci w tabelach. Niestety zadna z powyzszych metod tego nie zapewnia. Wartosci w tabeli ciagle pozostaja bez zmian , co prawda nastepuje zmiana nazwy na poziomie klienta ale nie nastepuje zadna zmiana w tabelach. Ten post edytował Wolfie 12.03.2009, 21:10:30 |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%)
|
Zapytałem, czy zwróciłeś uwagę na błąd w nazwie destruktora?
|
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%)
|
Wlasnie nie wiedzialem do kogo to pytanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Teraz juz lepiej , za to pojawil sie blad aktualizacji bazy danych. Czy ta czesc kodu jest poprawna ? Głównie chodzi o ta dluga zmienna $sql ktora przechowuje zapytanie.
Wywala sie ostatni exception z pliku class.Widget.php Ten post edytował Wolfie 12.03.2009, 21:15:11 |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 53 Dołączył: 18.09.2007 Skąd: Radom Ostrzeżenie: (0%)
|
no to przejrzyj/wyświetl sobie zapytanie
chyba coś ze spacjami jest nie tete i nie wiem czy przecinki:) |
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%)
|
To nie przecinki a kropki. Popraw. No i brakuje spacji.
PS. Jak używasz już apostrofów, to zostaw tak do końca, jest to lepsza technika (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%)
|
Wprowadzilem nieznaczne zmiany w zapytaniu , teraz wyswietla sie znakomicie , jednak problem ciagle istnieje , wyskakuje exception zwiazany z aktualizacja.
Pokaze jeszcze poprawny kod zapytania $sql:
Ten post edytował Wolfie 12.03.2009, 21:36:34 |
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%)
|
Wprowadź taką zmianę (o której już pisałem raz)
i zobaczysz komunikat. Edit: popraw też ostatnią część zapytania sql:
Ten post edytował Foxx 12.03.2009, 21:38:15 |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%)
|
Skoro trzymasz się wyjątków to lepiej - throw new Exception (mysql_error());
Edit: Wciąż nie jest poprawnie, brakuje ci przecinka tu: $this->name). "' ";, wstaw takie coś:
Ten post edytował Mephistofeles 12.03.2009, 21:41:41 |
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%)
|
Wyswietla sie taki komunikat :
Cytat Something is wrong in your syntax obok 'opis = 'Trampki o duzym przebiegu!' WHERE nr_artykulu='1'' w linii 1 Ale wyswietlone zapytanie wydaje sie byc poprawne : Cytat UPDATE artykul SET nazwa = 'Trampki' opis = 'Trampki o duzym przebiegu!' WHERE nr_artykulu='1' OK! Znalazlem blad , brak przecinka w zapytaniu po pierwszym parametrze komendy SELECT Ten post edytował Wolfie 12.03.2009, 21:44:37 |
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%)
|
Spójrz wyżej! Brakuje ci przecinka.
|
|
|
|
Post
#20
|
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%)
|
Tez to zauwazylem po dokladnym przyjrzeniu sie dlatego edytowalem poprzedni post , teraz wszystko dziala , dzieki , moge uczyc sie dalej (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)
|
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 19:21 |