Errore con classe

controsenso

Utente Attivo
26 Nov 2014
36
1
0
Il mio obiettivo è quello di visualizzare i dati della tabella categorie che son all'interno di un database..

ho creato le seguenti classi:

PHP:
class Categoria{

    private $categoria;
    private $descrizione;
    private $immagine;
  
        
    public function __construct($categoria=null,$descrizione=null,$immagine=null){
      
        $this->categoria=$categoria;
        $this->descrizione=$descrizione;
        $this->immagine=$immagine;
      
        
    }


    public function setCategoria($categoria){
        $this->categoria=$categoria;
    }
    
    public function getCategoria(){
        return $this->categoria;
    }
    public function setDescrizione($descrizione){
        $this->descrizione=$descrizione;
    }
    
    public function getDescrizione(){
        return $this->descrizione;
    }
    public function setImmagine($immagine){
        $this->immagine=$immagine;
    }
    
    public function getImmagine(){
        return $this->immagine;
    }
    

    public function __toString() {
        return 
                ",categoria: ".$this->categoria
                .", descrizione: ".$this->descrizione
                .", immagine: ".$this->immagine
                ;
    }


}

E in un altro file:

PHP:
include 'class.categorie.php';
class categorieDAL {
  
     public function __construct(){
      
        
    }
    
    
  public function visualizzaCategorie()
  {
       global $server;
    global $username;
    global $password;
    global $database_name;
    global $txt;
    
    $connect = mysql_connect($server, $username, $password) or die("DBMS non trovato");

    mysql_selectdb($database_name, $connect) or die("Database $database_name non trovato");

    $query = "Select categoria,descrizione,immagine from categorie";

    $rs = mysql_query($query, $connect) or die("query fallita");
   
   $elenco = array();
    while ($row = mysql_fetch_assoc($rs)) {
        extract($row);
        $elenco= new Categoria($categoria,$descrizione,$immagine);
   
        foreach($elenco as value)
   {
  $txt=<<<ABC
      <div> $categoria</div>  
          <div> $descrizione</div>  
 <div>  <img src='img/$immagine' ></div>
ABC;
 
         
    }  
       mysql_close($connect);
    
    return $txt;
              
   
  } 
} 
}


La pagina principale:

HTML:
<html>
<head>

  <title>Prova</title>
  
  
</head>

<body>

<section id="contenuto">

 
<?php
include_once "config.php";
include_once "class.categorieDAL";

$cat=new categorieDAL();
$risultato=$cat->visualizzaCategorie();
            echo $risultato;
?>

</section>

</body>
</html>


Il problema è che richiamando il metodo "visualizza categorie" non funziona.
Se all'interno del metodo però tolgo il "foreach" stampa solo una categoria (con descrizione e immagine)..
Perchè?
 
Ciao, se il tuo obiettivo è semplicemente visualizzare il contenuto della tabella "categorie", non capisco perchè fai sta sorta di casino, quando basta solo una query con un ciclo while e stampi a monitor i risultati...
PHP:
$query = "Select * FROM categorie";
$rs=@mysql_query($query) or die("Errore query Database");
while($riga=mysql_fetch_array($rs))
    {
    $categoria=$riga["categoria"];
    $descrizione=$riga["descrizione"];
    $immagine=$riga["immagine"];

echo "<div> $categoria</div>  
         <div> $descrizione</div>  
         <div><img src='img/$immagine' ></div>";

    }
 
Ultima modifica:
Ciao, se il tuo obiettivo è semplicemente visualizzare il contenuto della tabella "categorie", non capisco perchè fai sta sorta di casino, quando basta solo una query con un ciclo while e stampi a monitor i risultati...
PHP:
$query = "Select * FROM categorie";
$rs=@mysql_query($query) or die("Errore query Database");
while($riga=mysql_fetch_array($rs))
    {
    $categoria=$riga["categoria"];
    $descrizione=$riga["descrizione"];
    $immagine=$riga["immagine"];

echo "<div> $categoria</div>  
         <div> $descrizione</div>  
         <div><img src='img/$immagine' ></div>";

    }

Perché lo devo realizzare utilizzando le classi..
:(
 
Ciao, qui c'è un errore
PHP:
foreach($elenco as value)
manca il dollaro prima di value
 
Non credo tu abbia bisogno del foreach in quel caso.
già il ciclo while che ti permette di stampare tutte le categorie tirate fuori dalla query.
 

Discussioni simili