Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zapis do bazy danych w funkcji, prosze o pomoc w wyjaśnieniu błedu
tofik1778983
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


Witam mam funkcje
w zmiennej $text jest jakiś wylosowany wcześniej tekst do wyświetlania..
  1. function DropKasa($tex,$kasa,$text)
  2. {
  3. $los = rand(0,5);
  4. echo $tex = $text[$los].' '.$kasa.' sztuk złota';
  5. mysql_query("UPDATE players SET credits=credits+".$kasa." WHERE id=".$player -> id);
  6.  
  7. }

wywołuje ją
  1. if( $lvl -> fields['level'] < 10)
  2. {
  3. $kasa = rand(1,50);
  4. DropKasa($tex,$kasa,$text);
  5. }


No i sobie działa, wyświetla to co powinna ale nie zapisuje danych do bazy dla czego questionmark.gif

jak dam np

  1. function DropKasa($tex,$kasa,$text)
  2. {
  3. $los = rand(0,5);
  4. echo $tex = $text[$los].' '.$kasa.' sztuk złota';
  5. $db -> Execute("UPDATE players SET credits=credits+".$kasa." WHERE id=".$player -> id);
  6.  
  7. }

wywala mi błąd
Cytat
Fatal error: Call to a member function Execute() on a non-object in /homepages/4/d339451911/htdocs/_the_game/pustkowia.php on line 51

w lini 51 jest właśnie $db -> Execute("UPDATE players SET credits=credits+".$kasa." WHERE id=".$player -> id);

Prosze o szybką pomoc, przez to mi cały dzisiejszy plan szlak trafia z minuty na minute ;/

Ten post edytował tofik1778983 16.11.2010, 17:47:47


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
luck
post
Post #2





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Skąd wziąłeś obiekt $db w tej funkcji?


--------------------
Go to the top of the page
+Quote Post
Daiquiri
post
Post #3





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Jeżeli korzystasz z ADO (a tak to wygląda) musisz $db, czyli egzemplarz obiektu, z którego korzystasz poza klasą, "przekazać" do tej klasy. Np. tak:

  1. class klasa{
  2. public $db;
  3.  
  4. function __construct($db) {
  5. $this->db = $db;
  6. }
  7. }
Go to the top of the page
+Quote Post
tofik1778983
post
Post #4





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


Obiekt $db - ogólnie pisze moda do gry gdzie całość jest robiona na obiektach i w ten sposób podany przeze mnie wcześniej jest coś czytane bądź dodawane do bazy danych. Co mam dodać w funkcji żeby działało dodawanie danych do bazy..?
W ten sposób też działa ale poza funkcją.. użyte w funkcji nie działa jakby wcale nie bylo tej linijki..
Cytat
mysql_query("UPDATE players SET credits=credits+".$kasa." WHERE id=".$player -> id);

Wolałbym w ten sposób bez obiektów i tworzenia klas. Tylko jak..?




--------------------
Go to the top of the page
+Quote Post
Daiquiri
post
Post #5





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Egzemplarz obiektu już masz i jest nip $db z tego co widzę. Jeżeli jest taka potrzeba przebuduj zapytanie tak, aby mysq_query wiedział co z tym zrobić. Sprawdź czy wszystkie zmienne w funkcji mają takie wartości jak oczekujesz smile.gif.
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #6





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Zmienne w funkcji są ograniczone zakresowo tylko do niej samej, musisz przekazać $db jako argument lub użyć globala (czego nie polecam).
Go to the top of the page
+Quote Post

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: 22.08.2025 - 04:32