Newsgroup: it.comp.www.php
Titolo: query, classi e mysql_fetch_array

Ciao a tutti, ecco il mipo nuovo quesito sempre in ottica di 
apprendimento delle classi. Il codice che seguirï¿œ l'ho scritto 
all'interno della classe dbConn, che vado a richiamare in una pagina in 
questo modo:
$Db=new dbConn; //attiva la classe che gestisce connessione e query al 
db mysql
fin qui tutto ok.
Se faccio una query il cui risultato delle righe ï¿œ 1, funziona tutto 
regolarmente. Esempio:
$libro=$Db->query("select * from libri where nLibro='Imparare le classi' 
Limit 1");
In questo caso la riga restituita (per forza, con limit 1) sarï¿œ 1 e i 
risultati poi posso stamparli a video tranquillamente.
Ma se togliessi la clausola where avrei un sacco di libri (cioï¿œ un sacco 
di righe di risultato). Il mio problema ora ï¿œ ciclare il tutto.
Qui sotto posto la classe che ha giï¿œ creato un array usando 
mysql_fetch_array. Potete aiutarmi a capire dove sbaglio?
Grazie!!!
public function query($sql){
 
		$strumenti=$this->tools(); // attiva la classe strumenti (dove c'ï¿œ il 
filtro)
		$e=$this->errors(); // attiva la classe degli errori
		$conn=$this->dbConn(); // attiva la connessione al db
		$query=$strumenti->filtro($sql);//filtra la query
		$exe=mysql_query($query);//esegui la query
		if($exe<=0){
			$this->print_query_text($sql);
			die($e->print_errore(4,"Riga 147, myclass-2.php")); //stampa: Errore 
nella query: (mysql_error());
		}
		else{
			$array=mysql_fetch_array($exe, MYSQL_ASSOC);//restituisce un array 
coi risultati della query;
			mysql_free_result($exe);
			return $array;
 
		}			
	}

Ciao a tutti! Nessuna risposta? credevo fosse facile... :-p
Io continuo a sbatterci la testa, ho fatto un sacco di prove e alla fine 
sono giunto a una conclusione:
Il problema dovrebbe risiedere nel ciclo.
Cerco di essere il piï¿œ chiaro possibile per avere piï¿œ fortuna con le 
vostre risposte...
$exe=mysql_query($query);//esegui la query
         if($exe<=0){
             $this->print_query_text($sql);
             die($e->print_errore(4,"Riga 147, myclass-2.php")); 
//stampa: Errore nella query: (mysql_error());
         }
Fin qui tutto ok!!
         else{
             $array=mysql_fetch_array($exe, MYSQL_ASSOC);//restituisce 
un array coi risultati della query;
             mysql_free_result($exe);
             return $array;
	}
qui c'ï¿œ l'errore che non vedo (credo).
se avessi una quantitï¿œ di righe superiore a 1, normalmente, con il 
metodo procedurale farei cosï¿œ:
$query=query_mysql("select * from libri where nLibro='$lib' limit 
1","$user");
	if($query===FALSE){
	// se il risultato della query ï¿œ FALSE:
		return $result="LIBRO NON RICONOSCIUTO";
	}else{
 
		if($field!=""){
			return $query["$field"];
		}else{
			return $query;
		}
	}	
Questo ï¿œ una parte di script che avevo fatto prima di cimentarmi con le 
classi, e funziona come dovrebbe. Quando lo richiamo lo faccio in questo 
modo:
$libri=controllo_libri($_SESSION[libro],"Logan","");
$libri contiene tutti i dati della query sia che si tratti di 1 riga, 
sia che si tratti di tute le righe corrispondenti al metodo di ricerca 
selezionato..
perchï¿œ con le classi non funziona?
Grazie ancora a tutti per il vostro aiuto!
Bye..
Logan
Logan ha scritto:
