PDA

View Full Version : [PHP] extends class


ianaz
20-07-2006, 10:25
Sono ancora io :)

Ho creato la classe db con il metodo query() in cui uno fa eseguire la query e incrementa un valore di uno ogni volta così da poter dire a fine pagina il totale di query per pagina.
Ho però un problema perché in un'altra classe mi chiama pure li il database...e ho quindi bisogno della funzione nella classe db.
Fin qui ci sono,
ho messo un bel class users extends db e al suo interno quando eseguo le query utilizzo il comando $this->query("SELECT...");

il problema però si pone quando deve darmi il numero di queries alla fine della pagina...non mi conta praticamente tutte quelle eseguite nella classe users...
Credo che il problema sia che all'inizio della classe db c'é la variabile $queries e gli setto il valore 0. Come posso ovviare a questo problema?

I codici:







<?php
class db
{
var $queries = 0;
function query($query, $die=0)
{

global $connessione;

if(isset($query))
{

$this->risultato = mysql_query($query, $connessione);
if($this->risultato)
{
$this->queries++;
return TRUE;
}
else
{
return FALSE;
}
}

}

}

$db = new db;
?>


CLASSE USERS
function login($username, $password, $ricorda='no')
{

global $ip;
global $connessione;

if($username && $password)
{

$this->query("SELECT * FROM iax_users");
.
.
.
continua...

ianaz
20-07-2006, 12:55
upplete ^^

ianaz
20-07-2006, 16:10
ancora niente :help:

Fenomeno85
20-07-2006, 19:21
i "phpisti" ormai qui scarseggiano :asd:

non puoi usare una sessione dato che son in comune ?

non vedo molto l'estensione user db :D

~§~ Sempre E Solo Lei ~§~

ianaz
20-07-2006, 23:12
non vedo molto l'estensione user db :D

In che senso? Sessioni...mah...e come?
Ciaoo :)

Fenomeno85
21-07-2006, 09:05
secondo me sarebbe più logico istanziare la classe db nell'user e non estendere user.

Riflettendoci con le sessione andrebbe ma sarebbe più corretto lasciarlo nella classe.

intanto elimina $db = new $db che lo devi mettere solo quando vuoi instanziare la classe dato che immagino che se hai fatto bene quella classe sta in un file a parte :)

~§~ Sempre E Solo Lei ~§~

ianaz
21-07-2006, 09:08
secondo me sarebbe più logico istanziare la classe db nell'user e non estendere user.

cioé? class db extends user? Scusa l'ignoranza :)


intanto elimina $db = new $db che lo devi mettere solo quando vuoi instanziare la classe dato che immagino che se hai fatto bene quella classe sta in un file a parte :)

Potrebbe essere quello l'errore? L'ho instanziato appena dopo la classe perché almeno é fatto... non va proprio bene? :D

ciao e grazie

Fenomeno85
21-07-2006, 09:23
cioé? class db extends user? Scusa l'ignoranza :)


Potrebbe essere quello l'errore? L'ho instanziato appena dopo la classe perché almeno é fatto... non va proprio bene? :D

ciao e grazie

no intendo mettere



/* file dove è contenuta la classe db */
require ("DB.php");

/* implementazione delle classe */
class User {
var db;

....

/** Costruttore */
function User (){
$this->db = new db();
....
}
}


questo lo metti nel file User.php

Poi nello script dove ti serve User fai

[php]
require ("User.php");
$user = new User();


Io adotterei questo approccio ... poi se qualcuno dice che è meglio un altro va bene lo stesso :D

~§~ Sempre E Solo Lei ~§~

ianaz
21-07-2006, 09:26
aha...capito :)
oky, dopo provo. grazie mille

Fenomeno85
21-07-2006, 09:31
di nulla ;)

~§~ Sempre E Solo Lei ~§~

ianaz
21-07-2006, 09:51
Mh, mi da un po' di problemi...:


<?php
require "db.class.php";
class users {
var $db;

. . .

function users()
{
$this->db = new db();
}
}
$users = new users;
?>

in questo caso mi da errore
Parse error: parse error, expecting `T_VARIABLE' in users.class.php on line 4

mettendo il dollaro su db

var $db;

mi da quest'altro errore:
Fatal error: Cannot redeclare class db in db.class.php on line 4




Il file db.class.php é normalissimo...

<?php

class db
{
...
}

?>

Fenomeno85
21-07-2006, 11:59
si mi ero dimenticato $ e non puoi come è ovvio che sia chiamare la variabile come la classe ... quindi var $dbUser; e nel costruttore $this->dbUser = new db();

~§~ Sempre E Solo Lei ~§~