Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem s klasom

[es] :: PHP :: Problem s klasom

[ Pregleda: 2340 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.188.*



+1 Profil

icon Problem s klasom03.07.2008. u 19:03 - pre 192 meseci
Code:
<?php

include "config.php";


Class Korisnik{
    
var $podaci;

    function get_info($n){
        
        session_start();
        $user_id = $_SESSION['user_id'];    
        $query = mysql_query("SELECT * FROM otkorisnik WHERE idkorisnik='$user_id'") or die('Greska :)');
        while($a=mysql_fetch_array($query)){
        $n = $a; 
    
        }
     }
}
            
$a = new Korisnik;
echo $a->get_info(username);
             
?>


I ne ispise mi ?
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Problem s klasom03.07.2008. u 20:26 - pre 192 meseci
Pa ne mozes tako :-))

Imas dva/tri resenja:

1. Da ispises u okviru funkcije:

Code:

<?php

include "config.php";


Class Korisnik{
    
var $podaci;

    function get_info($n){
        
        session_start();
        $user_id = $_SESSION['user_id'];    
        $query = mysql_query("SELECT * FROM otkorisnik WHERE idkorisnik='$user_id'") or die('Greska :)');
        while($a=mysql_fetch_array($query)){
        $n = $a; 
        echo $n; // Prikazujemo vrednost koju smo dobili iz baze
        }
     }
}
            
$a = new Korisnik;
"echo $a->get_info(username);" // Ovo treba obrisati ....
             
?>


2. Da smestis u neku promenljivu koja nije samo lokalna(u okviru funkcije) i da prikazes onda:

Code:

<?php

include "config.php";


Class Korisnik{
    
var $podaci;

    function get_info($n){
        
        session_start();
        $user_id = $_SESSION['user_id'];    
        $query = mysql_query("SELECT * FROM otkorisnik WHERE idkorisnik='$user_id'") or die('Greska :)');
        while($a=mysql_fetch_array($query)){
        $this->n = $a; // Smestamo rezultat u "globalnu promenljivu" -> n <- koja je vidljiva i van funkcije
    
        }
     }
}
            
$a = new Korisnik;
echo $a->n; // I stampamo tu promenljivu ....
             
?>


3. Nacin (nisam 100% siguran ali probaj) je nesto slicno onome sto si ti probao, stim sto funkcija mora da vrati neku vrednost da bi imalo sta da se prikaze, odnosno:

Code:

<?php

include "config.php";


Class Korisnik{
    
var $podaci;

    function get_info($n){
        
        session_start();
        $user_id = $_SESSION['user_id'];    
        $query = mysql_query("SELECT * FROM otkorisnik WHERE idkorisnik='$user_id'") or die('Greska :)');
        while($a=mysql_fetch_array($query)){
        $n = $a;
        return $n; // Sta funkcija da da kao rezultat izvrsavanja ....
    
        }
     }
}
            
$a = new Korisnik;
echo $a->get_info(username); // I stampamo ono sto funkcija vraca...
             
?>


Pozdrav !

EDIT: I nemoj da stavljas session_start u okviru funkcije, jer mu nikako mesto nije tu ! Iskljucivo se stavlja na pocetak fajla ....
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-5692.sa.bih.net.ba.



+1 Profil

icon Re: Problem s klasom03.07.2008. u 20:43 - pre 192 meseci
E hvala na odgovoru :-) , pokusavam sad. Samo ne znam sto ce mi onda onaj atribut (var $podaci) (DRUGI primjer), ako ga nigdje ne koristim ?

EDIT: Uspio sam ovako:

Code:
<?php
session_start();
include "config.php";


Class Korisnik{
    
var $podaci;


    //Uzimanje podataka o logovanom korisniku    
    function get_info($n){
              
        $user_id = $_SESSION['user_id'];    
        $query = mysql_query("SELECT * FROM otkorisnik WHERE idkorisnik='$user_id'") or die('Greska :)');
        while($a=mysql_fetch_array($query)){
        $podaci = $a[$n];
        return $podaci;
        }
    }
 
}           
             
?>


I onda tamo

Code:

$a = new Korisnik;
echo $a->get_info(username);  //zavisi sta zelim


Hvala na inspiraciji :)

[Ovu poruku je menjao _CaRtMan_ dana 03.07.2008. u 22:36 GMT+1]
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Problem s klasom04.07.2008. u 14:47 - pre 192 meseci
Sto se tice tog var $podaci, nisam ni gledao taj deo ;-)) Hehe, Pozdrav
 
Odgovor na temu

beep
Srbija/Vrbas

Član broj: 19294
Poruke: 198
*.adsl-a-1.sezampro.yu.

Sajt: keselj.xyz


+1 Profil

icon Re: Problem s klasom04.07.2008. u 15:21 - pre 192 meseci
Citat:
_CaRtMan_ Samo ne znam sto ce mi onda onaj atribut (var $podaci) (DRUGI primjer), ako ga nigdje ne koristim ?


pa i ne treba .... da bi koristio var $podaci moras da pristupis promenjivoj sa $this-> , u suprotnom to je obicna promenjiva ... obirsi je u tvom zadnjem primeru i videces da radi i bez var $podaci ... a moze i ovako

Code:
echo Korisnik::get_info($n);
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Problem s klasom04.07.2008. u 16:41 - pre 192 meseci
@beep - jel nije problem samo da mi kazes, koja je razlika izmedju "$Korisnik->getinfo" i "$Korisnik::getinfo"? Ako uopste postoji razlika?
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-6867.sa.bih.net.ba.



+1 Profil

icon Re: Problem s klasom05.07.2008. u 13:21 - pre 192 meseci
Evo mene evo problema. :D Sad hocu da napravim funkciju koja provjerava da li je korisnik admin, ako nije ide die();

Znamo da koristim:

Code:

<?php
session_start();
include "config.php";


Class Korisnik{
    
var $podaci;


    //Uzimanje podataka o logovanom korisniku    
    function get_info($n){
              
        $user_id = $_SESSION['user_id'];    
        $query = mysql_query("SELECT * FROM otkorisnik WHERE idkorisnik='$user_id'") or die('Greska :)');
        while($a=mysql_fetch_array($query)){
        $podaci = $a[$n];
        return $podaci;
        }
    }
 
}           
             
?>


Pokusao sam sada napisati

function admin_odbij(){
echo get_info(admin)
}

cisto da vidim hoce li mi ispisati je li admin (1-true,0-false), ali ne ispise, izbaci mi gresku:
Fatal error: Call to undefined function get_info()

Ne znam kako bih mogao pristupiti? Hmm.

EDIT:

sad sam uradio ovo:

Code:
function get_info($n){              
            $user_id = $_SESSION['user_id'];    
            $query = mysql_query("SELECT * FROM otkorisnik WHERE idkorisnik='$user_id'") or die('Greska :)');
            while($a=mysql_fetch_array($query))
            $this->podaci = $a[$n]; 
            
            return $this->podaci; 
                        
        }


Malo me zbunjuje, isto radi, a pojma nemam sta sam uradio. pretpostavljam da sam stavio podatke $a[$n] u $this->podaci dakle u onaj atribut podaci ? I sad bi podaci trebali da budu u atributu i mogu pristupit njima za ovo sto mi treba ? Ali kako? Hmm.

[Ovu poruku je menjao _CaRtMan_ dana 05.07.2008. u 14:39 GMT+1]

[Ovu poruku je menjao _CaRtMan_ dana 05.07.2008. u 14:39 GMT+1]
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Problem s klasom05.07.2008. u 14:35 - pre 192 meseci
Sto se tice ove provere za admina, ne mozes da pristupas tako funkciji koja je u okviru klase, vec ovako (ako se obe nalaze u okviru klase Korisnik):

Code:

function admin_odbij(){
echo $this->get_info(admin);
}


A sto se tice ovog drugog sto si uradio, samo si omogucio da niz "podaci" ($this->podaci) bude vidljiv i van funkcije, tj. mozes bilo gde u kodu da stavis:

Code:

echo $a->podaci;


Nadam se da si skapirao :-)) Uglavnom, kad stavis u funkciji samo:

Code:

function aaa()
{
$promenljiva = xxx;
}


Onda $promenljiva postoji samo u toj funkciji.

A, kad stavis:

Code:

function bbb()
{
  $this->promenljiva = xxx;
}


Onda tu vrednost sto si zadao mozes da koristis i u funkciji i van funkcije :-)




 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.178.*



+1 Profil

icon Re: Problem s klasom05.07.2008. u 15:46 - pre 192 meseci
Aaaaaa da da kontam :-) Hvala. Ali imam jos nekih pitanja.

1) Prvo me zanima sta je ovo zapravo $this obicna neka varijabla, s kojom se pristupa cemu ? To je malo konfuzno :-) , i da li bi moglo raditi da nisam stavio u podaci ? (Ovaj primjer da vidim je li admin ili ne) ?

2) Kad stavim u promjenljivu gore varijablu (u ovom slucaju podaci), ako hocu da pristupim bilo bi echo $this->podaci(username) recimo i sl. ? I gdje bih to radio? Tamo negdje van klase? U nekom fajlu gdje je pozvana klasa ?

3) Napravio sam ovako:

Code:

    function select_proizvodjac($filter='',$order=ASC){
        $select = mysql_query("SELECT * FROM otproizvodjac WHERE naziv='%$filter%' ORDER BY naziv $order");
        while($a=mysql_fetch_array($select)){
        $proizvodjaci = $a;    

        return $proizvodjaci;
        }
    }
    



I sad bih htio u tabeli da prikazem, ali malo me i to buni, pa ako ti nije problem da mi objasnis kako bih prikazao sve iz tabele otproizvodjaci.. Dosad sam samo ono jedan (username, password ili nesto treće). Bio bih ti izrazito zahvalan. :-)
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Problem s klasom05.07.2008. u 22:54 - pre 192 meseci
THIS (engleski) = OVO (srpski). Sto znaci $this->podaci govori $ovo->podaci, odnosno promenljiva u okviru ove klase :-) A kad koristis tu promenljivu van funkcije, onda stavis $klasa->promenljiva ($klasa ===> klasa = new Class() ) :-) Valjda ga nisam previse zapetljao. I ovo vazi samo za funkcije u okviru neke klase , a kod obicnih funkcija, mislim da moras da definises neku promenljivu kao globalnu da bi mogo da je koristis. Primer:

Code:
 
$penis = "tuki"; // Dodeljujemo promenljivoj penis vrednost ---> tuki.

function test()
{
  // I sad ako hocemo ovu promenljivu da koristimo u okviru ove funkcije, pisemo ovako:
  global $penis;
  $penis = "vagina"; // Sada promenljiva penis dobije vrednost --> vagina
}


Evo i prakticnog primera:

Code:

$a = "blabla";
echo $a."<br>";

test();

echo $a;

function test()
{
  global $a;
  $a = "tralalalalalal";
}


:-)

2) Nisam bas najbolje razumeo pitanje ? Al cini mi se da sam ti odgovorio u okviru prvog pitanja. Znaci, u okviru funkcije pises:

Code:

  echo $this->podaci


A van funkcije:

Code:

  echo $klasa->podaci;


3) Cini mi se da ti nije dobar kod. Ovako bi ja uradio:

Code:

    function select_proizvodjac($filter='',$order=ASC){
        $select = mysql_query("SELECT * FROM otproizvodjac WHERE naziv='%$filter%' ORDER BY naziv $order");
        while($a=mysql_fetch_array($select)){
        $this->proizvodjaci = $a;    
        }      
    }

// Sad stampamo rezultate:

foreach ($a->proizvodjaci as $rezultat)
{
  echo $rezultat[XX]; // Ovde prepravi po potrebi, odnosno prema rezultatima, posto ne znam koja polja postoje u bazi :-)
}


A mozes i direktno iz funkcije da stampas :-)




 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-3884.sa.bih.net.ba.



+1 Profil

icon Re: Problem s klasom06.07.2008. u 09:11 - pre 192 meseci
Warning: Invalid argument supplied for foreach() in C: bla bla .... on line 32


32 foreach ($a->proizvodjaci as $rezultat){
33 echo $rezultat[idproizvodjac];
34 }


Hmm, mozda return fali gdje? Return bi bilo ono vracanje iz funkcije ? S:
 
Odgovor na temu

beep
Srbija/Vrbas

Član broj: 19294
Poruke: 198
*.adsl-3.sezampro.yu.

Sajt: keselj.xyz


+1 Profil

icon Re: Problem s klasom06.07.2008. u 09:47 - pre 192 meseci
greska je nastala zato sto promenjiva $a->proizvodjaci nije niz ... ti si samo napiso gresku al ne i kod na osnovu koje se doslo do te greske ... drugo , pogresno koristis foreach funkciju ... trece , koristis mysql_fetch_array a nisi definiso kako da ti vrati podatke pa kad budes koristio foreach funkciju dobices duple podatke ...

@Man-Wolf

klasa::funkcija - pristupas funkciji klase bez objekta ... unutar te funkcije ne sme da se nalazi operator $this
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-3884.sa.bih.net.ba.



+1 Profil

icon Re: Problem s klasom06.07.2008. u 09:55 - pre 192 meseci
Pa znamo kôd :-)

Code:

    function select_proizvodjac($filter='',$order=ASC){
        $select = mysql_query("SELECT * FROM otproizvodjac WHERE naziv='%$filter%' ORDER BY naziv $order");
        while($a=mysql_fetch_array($select)){
        $this->proizvodjaci = $a;   
        
        }      
        
        
    }


 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Problem s klasom06.07.2008. u 11:45 - pre 192 meseci
Aj uradi ovako, da ne mudrujemo mnogo ....:
[code]

function select_proizvodjac($filter='',$order=ASC){
$select = mysql_query("SELECT * FROM otproizvodjac WHERE naziv='%$filter%' ORDER BY naziv $order");
while($a=mysql_fetch_assoc($select)){
$this->proizvodjaci = $a;
echo $this->proizvodjaci['idproizvodjac'];

}


}
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
89.146.183.*



+1 Profil

icon Re: Problem s klasom06.07.2008. u 13:14 - pre 192 meseci
Eh nije to to,, treba napraviti da bude uklopljeno u tabelu ono, vise redova, vako ispise samo jedno pored drugog..

da moze kako vako

$this->proizvodjaci[$n] = $a;

pa nekako uklopit u tabelu S:
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Problem s klasom06.07.2008. u 14:00 - pre 192 meseci
Pa ti oblikuj ispis, ja sam ti samo dao kako treba da izgleda :-))

P.S. Nemoj da radis tako ... Dobices drugaciji niz :-))
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.rs.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Problem s klasom06.07.2008. u 14:22 - pre 192 meseci
@cartman, a da probas na berzi poslova, siguran sam da ce ti to neko resiti za veoma kratko vreme, posto vidim da uopste ne baratas cak ni osnovama php-a...
Ako ne umes da odradis jednu obicnu petlju da to odstamapas u tabeli, ozbiljno razmisli da li zelis da se bavis php-om uopste, bolje da vreme ulozis u nesto drugo sto ti malo vise ide od ruke
Takodje, tema vec izlazi iz okvira naslova (koji usput i nije bas definisan) u osnove html-a koji definitivno nisu za ovaj forum...
 
Odgovor na temu

[es] :: PHP :: Problem s klasom

[ Pregleda: 2340 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.