[PHP] metodo di una classe per estrarre i dati con ciclo while

amhal

Utente Attivo
17 Feb 2011
89
1
8
Buongiorno a tutti, ho cominciato da poco a programmare in OOP e mi sono intoppato nel creare un metodo di una classe per l'estrazione di tutti i dati che vada bene per tutte le query che vengono eseguite. Per essere più chiaro posto il codice creato:


PHP:
 //preparazione query
    public function prepare($query){
        $this->query = $query;
        return true;
    }//fine metodo prepare  
    
    //metodo dell'esecuzione della query
    public function query(){
    
        if(isset($this->query)){
            //controllo se la query è valida
            $this->result = $this->mysqli->query($this->query);
                //controllo se result è valido
                if(!$this->result){
                    exit('errore nella query %s '.$this->mysqli->error);
                    return false;               
                }//fine if nidificata       
        }//fine if   
    }//fine metodo esecuzione query
    
    //estrazione dei dati, $type varia a seconda di come voglio i dati estratti: array,oggetto
    public function fetch($type){
        //processo $type in uno switch
        switch($type){
            case 'array':
               while($row = $this->result->fetch_object()){
              
                return $row;
                }
            break;
            
            case 'object':           
                
                while($row = $this->result->fetch_object()){
                    return $row;
                }

            break;
        }//fine switch
        
        $this->result->close()
        
    }//fine metodo fetch estrazione dati

la parte che non mi funziona è il ciclo while nel metodo fetch sia nel caso object sia nel caso array, se nella index.php includo la classe e lancio i metodi, mi viene a video solo un record del database invece di tutti e 7 presenti. di seguito posto il codice della index

PHP:
require_once('database/class_login.php');
$obj = new access_db();

$obj->prepare("select * from utenti");
$obj->query();
$row = $obj->fetch('object');

echo $row->nome;

come faccio a eseguire correttamente il ciclo while nel metodo fetch della classe e poter utilizzare tutti i record nella index.php?

grazie in anticipo
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
vorrei suggerirti una via diversa perchè credo che quello che stai facendo sia già o ti porti fuori strada,
nella mia poca e confusa esperienza, ho definito questi metodi che mi sono sufficienti per tutte le query fin'ora incontrate,

PHP:
  public function queryS( $sql, $params=array() ) // return the retrieved dataset
  {
    return $this->BindParams( $sql, $params )->fetchALL();
  }

  public function queryM( $sql, $params=array() ) // return the counter of the involved rows (insert, update, delete)
  {
    return $this->BindParams( $sql, $params )->rowCount();
  }

  public function queryC( $sql, $params=array() ) // return the retrieved element
  {
    $res = ($this->BindParams($sql, $params)->fetch()); return empty($res) ? "" : current($res);
  }

  public function query( $sql, $params=array() ) // return $sth, the object for subsequent operation
  {
    return $this->BindParams( $sql, $params );
  }
queryS risolve una select e restituisce l'intero set dei dati trovati,
queryM restituisce il numero delle righe coinvolte nell'operazione, ha soprattutto lo scopo di controllare l'efficacia dell'operazione stessa
queryC ritorna l'unico elemento della select, esempio "count(*)" oppure un codice espressamente cercato, in ogni caso un unico valore
query permette invece la gestione successiva di quanto è stato "trovato"

il risultato lo si ottiene con questo esempio,
PHP:
$sql = "SELECT * FROM PERIODI WHERE id_periodo IN( ?, ?, ? ) and id_struttura=?";
foreach ( $db->query( $sql, array( 11, 13, 15, 2 ) ) as $row )
  echo $row['id_periodo']."&emsp;".$row['id_struttura']."&emsp;".$row['data_inizio']."&emsp;".$row['data_fine']."<br />";

ps, se la query non avesse parametri (perchè codificati all'interno), si semplifica così, "$db->query( $sql )"

valuta la differenza con quanto stai facendo
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
C [PHP] Metodo di una classe in sltra classe PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
A php metodo post jquery non da mai errore jQuery 4
M [PHP] Passare variabile di sessione con metodo GET PHP 10
M [PHP] Metodo migliore per fare login a un DB Mysql PHP 1
S [PHP] form con metodo get e recupero id PHP 4
M [PHP] API con metodo POST PHP 0
C PHP METODO POSTBACK PHP 2
V Collegamento metodo$.ajax con file php jQuery 10
T [PHP] Metodo che restituisce un array PHP 5
L [PHP/HTML] Inserire metodo di pagamento PHP 4
G Come far passare un valore attraverso il metodo POST utiliazzando PHP a jQuery PHP 4
R metodo get php PHP 4
A Passaggio array da javascript a PHP tramite metodo POST PHP 4
D invocare metodo oggetto php da form html PHP 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0

Discussioni simili