Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] 2 klasy, błąd przy obiekcie
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


index.php
  1. <?php
  2. include_once("db.class.php");
  3. $db = new mysql();
  4. global $db;
  5.  
  6. include("login.class.php");
  7. $log = new Auth();
  8.  
  9. include("upload.class.php");
  10. $up = new upload();
  11. global $up;
  12. ?>

db.class.php
  1. <?php
  2. class mysql
  3. {
  4.   public $_lacz;
  5.  
  6.   public function __construct()
  7.   {
  8.       $this->_lacz = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
  9.   }
  10.  
  11. }
  12. ?>

wywołuje funkcje dodaj z klasy upload
klasa
  1. <?php
  2. class upload extends mysql {
  3. ..[...]
  4.    public function dodaj($n)
  5.    {
  6.        
  7.        
  8.        $result = $this->_lacz->query('zapytanie');    
  9.      
  10.        
  11.        }
  12.        fclose($uchwyt);
  13.    }
  14. }
  15. ?>

i otrzymuje że funkcja query nie ma obiektu ;/ co nie tak?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
okitoki
post
Post #2





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

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


Kod
class mysql
{
  public $_lacz;

  public function __construct()
  {
     $this->_lacz = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

  }
  
  public function query($sql)
  {
      return $this->_lacz->query($sql);
  }

}

class upload{
public $sql = null;

public function __construct($sql)
{
    $this->sql = $sql;
}

public function upload()
   {
       if($_SESSION['login'])
       {
      
       $nazwa = $_FILES['plik']['name'];
      
       $nazwapliku1 = explode('.', $nazwa);
       $np = count($nazwapliku1);
       $count = $np -1;
      
      
       if(move_uploaded_file($_FILES['plik']['tmp_name'],"./csv/".$nazwa))
           {
               ?>
               <div id=good>
                       <p>Plik wysłany pomyślnie</p>
                       <a href=javascript:history.back(-1);>Wstecz</a>
                      
               </div>
              
              
               <?
               $this->dodaj($nazwa);
           }
           else
               {
                   switch($_FILES['plik']['error'])
                   {
                       case 1: echo ('<span id=bad>Przesłany plik jest większy niż zezwala konfiguracja serwera.</span>');
                           break;
                       case 2: echo ('<span id=bad>Przesłany plik jest wiekszy niż zezwala formularz.</span>');
                           break;
                       case 3: echo ('<span id=bad>Przesłano tylko część pliku.</span>');
                           break;
                       case 4: echo ('<span id=bad>Plik nie został przesłany.</span>');
                           break;
                   }
               }
       }
   }
   public function formularz()
   {
       ?>
       <div id=good>Wyślij plik</div>
           <form action=?akcja=upload enctype=multipart/form-data method=post>
           <table>
           <tr><td>Ścieżka pliku: </td><td>
           <input type=file name=plik />
           </td></tr>
           <tr><td>
           <input type=submit value=Wyślij zdjęcie/>
           </td></tr></table>
           </div>
           <a href="?akcja=haslo">Zmień hasło</a> || <a href="?akcja=out">Wyloguj</a>

       <?
   }
   public function dodaj($n)
   {
       if($_SESSION['login'])
       {
      
       $row = 1;
       $uchwyt = fopen("csv/".$n,'r');
      
       $lines  = file("csv/".$n);
      
       $limit = count($lines);
       $GLOBALS['num'] = $limit;
      
       while (($data = fgetcsv($uchwyt, 1000, ";")) !== FALSE)
       {
       $num = count($data);
        $row;
      
    
      
      
       $id1 = serialize(array($data[4],$data[6],$data[8]));
       $id2 = serialize(array($data[5],$data[7],$data[9],$data[11]));
       if($data[38] == 1)
       {
           $is_draft = 0;
       }
       else
       {
           $is_draft  = 1;
       }
  
         $db = $this->sql;
         $sql = $db->query("INSERT INTO `probid_auctions` (

       `name`, `description`, `quantity`, `auction_type`, `start_price`,
       `buyout_price`,`duration`, `shipping_method`, `shipping_int`,
       `payment_methods`, `category_id`,  `hpfeat`, `catfeat`, `bold`,
       `hl`, `postage_amount`, `insurance_amount`, `type_service`,
       `list_in`, `approved`,
       `auto_relist_nb`,`is_relisted_item`,`start_time`,`start_time_type`,
       `is_draft`,`start_on_bid`,`additional_rows_titles`,`additional_rows_values`
  
       )
       VALUES ('dane')");    
    
       }
       fclose($uchwyt);
       header("Location: index.php?akcja=pokaz");
       }
   }
}

include_once("db.class.php");
$db = new mysql();
global $db; // zła deklaracja

include("login.class.php");
$log = new Auth();

include("upload.class.php");
$up = new upload($db);
global $up // zła deklaracja


jak działa słowo kluczowe global


Kod
$zmienna = "jakies dane\r\n";

function funkcja1()
{
   global $zmienna;
   $zmienna = "dane zmienione we funkji 1\r\n";
}

function funkcja2()
{
   $zmienna = "jakies inne dane\r\n";
}

echo $zmienna;
funkcja2();
echo $zmienna;
funkcja1();
echo $zmienna;


Ten post edytował okitoki 7.05.2009, 15:35:22
Go to the top of the page
+Quote Post

Posty w temacie
- Lejto   [php] 2 klasy   30.04.2009, 17:50:23
- - WebCM   Pokaż wszystkie linijki kodu. Źle to robisz. Jeżel...   30.04.2009, 18:24:22
- - Lejto   nic nie dało ;/ klasa upload [PHP] pobierz, plaint...   30.04.2009, 19:27:40
- - Crozin   Przepraszam za mały offtop: "class upload ext...   30.04.2009, 19:33:46
- - Lejto   ok troche zamotanie, a jak to poprawić?   30.04.2009, 19:36:32
- - -=Peter=-   Przekazując obiekt klasy mysql do obiektu klasy up...   30.04.2009, 21:49:54
- - okitoki   poco dziedziczysz po klasie mysql, nie łatwiej stw...   1.05.2009, 05:48:25
- - Lejto   to jak mam sobie klase która ma za zadanie łączeni...   6.05.2009, 11:54:44
- - marcio   Da sie inaczej po co tu w ogole sa potrzebne inter...   6.05.2009, 12:09:37
- - Lejto   ok dzięki, jakoś sobie poradzę   6.05.2009, 13:48:26
- - okitoki   Cytat(Lejto @ 6.05.2009, 12:54:44 ) t...   6.05.2009, 14:34:06
- - marcio   Kodpublic function __construct($sql) ...   6.05.2009, 14:51:59
- - osl   marcio, a czym różnią się te dwa konstruktory, poz...   6.05.2009, 15:05:28
|- - ndx   Cytat(osl @ 6.05.2009, 14:05:28 ) mar...   7.05.2009, 10:19:30
- - marcio   Jak moze dzialac skoro nie podajemy klasy z ktorej...   6.05.2009, 15:14:52
- - okitoki   działają good , jak określisz klase, to tylko obie...   6.05.2009, 15:26:53
- - Lejto   ok dzięki trochę mi się rozjaśniło   7.05.2009, 08:35:54
- - osl   @ndx - zgoda, ale to nie jest aż taki znowu błąd -...   7.05.2009, 10:26:38
- - okitoki   Cytat(ndx @ 7.05.2009, 11:19:30 ) Zob...   7.05.2009, 11:09:23
- - marcio   Ale wtedy wiadomo ze trzeba podac instancje klasy...   7.05.2009, 13:02:47
- - osl   ależ nikt nie neguje tego, że tak jest lepiej/wygo...   7.05.2009, 13:14:45
- - okitoki   lejto daj cały kod klas upload i mysql marcio nie...   7.05.2009, 13:29:39
- - Lejto   ok podam ten w którym nic nie zmieniałem ps niektó...   7.05.2009, 13:38:44
- - okitoki   jeszcze upload, widzę że pominołe...   7.05.2009, 13:45:36
- - Lejto   no dodałem upload, tam dalej już nic nie...   7.05.2009, 14:10:58
- - okitoki   Kodclass mysql { public $_lacz; public ...   7.05.2009, 15:02:22
- - Lejto   ok dzięki działa dobrze napisałem ...   7.05.2009, 16:35:10
- - marcio   CytatZresztą zawód programisty wymaga odpowiednieg...   7.05.2009, 19:15:59
- - okitoki   mnie OOP zaraził kolega w 2000 roku, pokazał mi je...   8.05.2009, 09:40:18
|- - ndx   Cytat(okitoki @ 8.05.2009, 08:40:18 )...   8.05.2009, 14:22:14
- - okitoki   Cytat(ndx @ 8.05.2009, 15:22:14 ) Taa...   8.05.2009, 14:37:57
- - Lejto   jak includuje jeszcze klasę w index.php to wszystk...   9.05.2009, 14:44:36
- - pejott   Ey, z tego co wiem i stosuję, to właśnie trzeba sp...   9.05.2009, 15:43:59
- - okitoki   no nie zadziała, wysypie się błąd, tak można robić...   9.05.2009, 16:28:10
- - pejott   Tak, ale gdy zastosujemy sprawdzenie przez wpisani...   9.05.2009, 16:34:43
- - Lejto   no ok ale co mam zrobić z moją klasą którą dodaje?...   9.05.2009, 21:14:37


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: 8.10.2025 - 21:51