Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Robot i baza danych
Forum PHP.pl > Forum > PHP
Landon
Zacznę od opisania obecnej sytuacji a następnie powiem gdzie leży błąd...

Napisałem bota indeksującego sieć jako klasę

  1. <?php
  2. class spider {
  3. ....
  4. ?>


no i klasę za pomoca której łącze się z bazą danych

  1. <?php
  2. class db_mysql {
  3. ....
  4. ?>


w pliku spider.php deklaruje klasę db_mysql i spider jako $db_mysql i $spider

w klasie db_mysql są 3 funkcje connect, closed i query jedna łączy a druga wykonuje zapytanie mysql_query

a klasa spider zaczyna się od

  1. <?php
  2. class spider {
  3. var $db_mysql;
  4. function __construct($db_mysql) {
  5. $this -> db_mysql = $db_mysql;
  6. ...
  7. $this -> update();
  8. }
  9. function update() {
  10. $this -> db_mysql -> query('zapytanie');
  11. ...
  12. }
  13. ...
  14. }
  15. ?>


klasa jest dość długa wiec wklejam tylko to co jest potrzebne.

plik spider.php wygląda tak:

  1. <?php
  2. require_once 'class.mysql.php';
  3. require_once "class.spider.php";
  4.  
  5. $db_mysql = new db_mysql;
  6. $db_mysql -> connect();
  7.  
  8. $spider = new spider($db_mysql);
  9.  
  10. $db_mysql -> closed();
  11. ?>


Niby wszystko jest ok gdy jako zapytanie $this -> db_mysql -> query('zapytanie'); dam Select * From ....

lecz błąd występuje w Insert niby nie wywala błędu lecz nie wgrywa wyniku do mysql (skrypt sprawny bo poza klasą spider działa)
_olo_1984
Ja bym to trochę inaczej zrobił, tnz w sterownika baz danych to /$db_mysql -> connect();/ zrobiłbym jako konstruktor tejże klasy, potem w klasie spider, zrobiłbym taki chwyt:
  1. <?php
  2. class spider extends db_mysql
  3. ?>


lub troche inaczej

  1. <?
  2. ...
  3. function update(&$db_mysql) {
  4. $db_mysql->connect()// ta linijka jeżeli nie zrobisz konstruktora
  5. $db_mysql -> query('zapytanie');
  6. ...
  7. }
  8. ...
  9. }
  10. ?>


to tylko moje prywatne zdanie. Pozdrawiam
Landon
oo dzięki teraz działa smile.gif
dr_bonzo
class Mozg extends Kapusta...


Ludzie, nie dziedziczy sie po wszystkim "dla wygody", "bo nie umiem inaczej".
Skoro to php4 to mozliwe ze trzeba wlasnie przekazywac ten obiekt przez referencje (nie uzywam php4 od lat). Rozwiazanie 2gie _olo_1984 (ew. popraw swoj konstruktor), to pierwsze to masakra.
Landon
Zrobiłem to inaczej i to nie php4 tylko php5 tongue.gif
dr_bonzo
Kod wskazuje na php4 i nie powiedziales wczesniej ktorej wersji uzywasz. W php5 masz modyfikatory dostepu (private, protected... itd) i ich powinienes uzywac przy zmiennych instancji (wlasciwosciach) i metodach.
Landon
no właśnie tak zrobiłem smile.gif ale nie będe pisał zbędnych postów temat raczej zamknięty może ktoś wie coś o Algorytmie mrówkowym ale to w innym temacie...
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.