Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapis do bazy danych w funkcji
Forum PHP.pl > Forum > Przedszkole
tofik1778983
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 ;/
luck
Skąd wziąłeś obiekt $db w tej funkcji?
Daiquiri
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. }
tofik1778983
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..?


Daiquiri
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.
Mephistofeles
Zmienne w funkcji są ograniczone zakresowo tylko do niej samej, musisz przekazać $db jako argument lub użyć globala (czego nie polecam).
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.