Ciao a tutti,
prendendo spunto da un utilissimo articolo di php.html.it ho cominciato ad utilizzare le classi e gli oggetti per la gestione del mio DB.
Il login funziona correttamente.
Mi da problemi invece quando gli chiedo di farmi una query più complessa.
In pratica devo fare l'elenco di alcuni record e dopo avermi visualizzato il primo record mi viene fuori:
Il mio file che gestisce il db è il seguente:codice:Fatal error</b>: Call to a member function estrai() on a non-object in
Poi ho una mia pagina così composto dove richiamo il file sopra citato e istanzio la classe:codice:class MysqlClass { // variabili per la connessione al database public $nomehost = "localhost"; public $nomeuser = "root"; public $password = ""; public $nomedb = "intranet"; // controllo sulle connessioni attive public $attiva = false; // funzione per la connessione a MySQL public function connetti() { if (!$this->attiva) { if ($connessione = mysql_connect($this->nomehost, $this->nomeuser, $this->password) or die(mysql_error())) { $selezione = mysql_select_db($this->nomedb, $connessione) or die(mysql_error()); } } else { return true; } } //funzione per l'esecuzione delle query public function query($sql) { if (isset($this->attiva)) { $sql = mysql_query($sql) or die(mysql_error()); return $sql; } else { return false; } } //funzione per l'inserimento dei dati in tabella public function inserisci($t, $v, $r = null) { if (isset($this->attiva)) { $istruzione = 'INSERT INTO ' . $t; if ($r != null) { $istruzione .= ' (' . $r . ')'; } for ($i = 0; $i < count($v); $i++) { if (is_string($v[$i])) $v[$i] = '"' . $v[$i] . '"'; } $v = implode(',', $v); $istruzione .= ' VALUES (' . $v . ')'; $query = mysql_query($istruzione) or die(mysql_error()); }else { return false; } } //funzione per l'estrazione dei record public function estrai($risultato) { if (isset($this->attiva)) { $r = mysql_fetch_object($risultato); return $r; } else { return false; } } // funzione per la chiusura della connessione public function disconnetti() { if ($this->attiva) { if (mysql_close()) { $this->attiva = false; return true; } else { return false; } } } }
Grazie mille.codice:<?phpsession_start(); // inclusione del file di classe include "funzioni_mysql.php"; // istanza della classe $data = new MysqlClass(); global $data; ?> ..... CODICE HTML ..... <?php $data->connetti(); $querySql = "SELECT richiestaintervento.titolo AS titolo, " . "richiestaintervento.aperto AS aperto, " . "richiestaintervento.rapportino AS rapportino, " . "richiestaintervento.utenteRichiedente, " . "richiestaintervento.dataApertura AS data, " . "richiestaintervento.tipologia, " . "tipologia.descrizione AS tipologia, " . "luogo.descrizione AS luogo " . "FROM " . "richiestaintervento " . "INNER JOIN " . "tipologia " . "ON " . "richiestaintervento.tipologia = tipologia.id " . "INNER JOIN " . "luogo " . "ON " . "richiestaintervento.luogo = luogo.id " . "WHERE " . "richiestaintervento.tipologia = " . "(SELECT utentitipologia.tipologia FROM utentitipologia " . "WHERE username = '" . $_SESSION['login'] . "') " . "AND richiestaintervento.aperto=0 " . "ORDER BY richiestaIntervento.dataApertura DESC"; $sql_cerca = $data->query($querySql); $trovati = mysql_num_rows($sql_cerca); if ($trovati > 0) { while ($cerca_obj = $data->estrai($sql_cerca)) { $data = $cerca_obj->data; $tipologia = stripslashes($cerca_obj->tipologia); $luogo = stripslashes($cerca_obj->luogo); $motivo = stripslashes($cerca_obj->titolo); // visualizzazione dei dati echo "<tr>\n"; echo "<th>" . $data . "</th>\n"; echo "<th>" . $tipologia . "</th>\n"; echo "<th>" . $luogo . "</th>\n"; echo "<th>" . $motivo . "</th>\n"; echo "</tr>"; } } // disconnessione $data->disconnetti(); ?>

Rispondi quotando