Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    22

    Non riesco a visualizzare l array di oggetti

    Ciao a tutti,
    ho il seguente problema....ho creato la mia classe entity con le sue proprieta e la classe businessManager che si occupa di fare la query sul database e di creare tante entities quanto sono i risultati per metterli in un array.il front end recupera gli oggetti dall array e li dovrebbe visualizzare...il problema e che mi appaiano tante caselle quanti sono i record, ma non appaiono le voci e la thumbnails.
    Vi posto parte del codice:

    queste sono le due classi che ho creato:
    class Entity {

    var $Nome;
    var $Codice;
    var $Commento;
    var $Percorso;
    var $PercorsoFoto;
    var $Id;

    function Entity($nome,$codice,$commento,$percorso,$id) {

    $this->Nome=$nome;
    $this->Codice=$codice;
    $this->Percorso=$percorso;
    $this->Commento=$commento;
    $this->Id=$id;
    }
    }




    class BusinessManager {

    var $query;
    var $recordset=array();
    var $row=array();
    var $myCollection;

    function BusinessManager() {
    $myConn= new Connessione();
    $myConn->connect();
    $this->Connections=$myConn->Connections;

    }


    function Visualizza() {

    $this->query="select * from Cartolina";
    $this->recordset = mysql_query($this->query,$this->Connections);
    $this->row=mysql_fetch_array($this->recordset);



    foreach($this->row as $item) {
    $this->myCollection=array(new Entity($item["nome"],$item["codice"],$item["commento"],$item["percorsofoto"],$item["id"]));
    }
    }
    }


    questo è il codice del front-end

    ......

    $Cartoline=new BusinessManager();
    $Cartoline->Visualizza();
    ........

    <?php foreach($Cartoline->myCollection as $item) { ?>
    <tr>
    <td><div align="center">[img]../imgs/modifica.png[/img]</div></td>
    <td><div align="center">[img]../imgs/cancellaico.png[/img]</div></td>
    <td><?php echo $item->Nome; ?></td>
    <td><?php echo $item->Codice; ?></td>
    <td>[img]../public/thumbs/<?php echo $item->Percorso; ?>[/img]</td>
    <td></td>
    </tr>

    <?php } ?>

    Dove sbaglio?
    Grazie anticipatamente

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    22
    Ho fatto delle prove e in pratica mi visualizza solo la prima lettera del campo commento...su tutte le voci
    cioe:
    Id titolo codice foto commento
    - - - - -

    in pratica se in commento c e il segno: - apparira in tutte le voci....Non so piu dove sbattere la testa....

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    22
    forse ho risolto ma non mi sembra una best practice...

    il metodo Visualizza è diventato:
    .........
    function Visualizza() {

    $this->query="select * from Cartolina";
    $this->recordset = mysql_query($this->query,$this->Connections);
    $this->row=mysql_fetch_array($this->recordset);
    $rows=mysql_num_rows($this->recordset);
    for($ii=0;$ii<=rows;$ii++) {

    $this->myCollection[$ii]=new Entity($this->row["nome"],$this->row["codice"],$this->row["commento"],$this->row["percorsofoto"],$this->row["id"]);

    }
    }

    in effetti adesso funziona....non capisco come far funzionare il tutto con foreach.

    P.s. tutto il resto (anche il front end) e rimasto invariato)

  4. #4
    Originariamente inviato da gipos70
    forse ho risolto ma non mi sembra una best practice...

    il metodo Visualizza è diventato:
    .........
    function Visualizza() {

    $this->query="select * from Cartolina";
    $this->recordset = mysql_query($this->query,$this->Connections);
    $this->row=mysql_fetch_array($this->recordset);
    $rows=mysql_num_rows($this->recordset);
    for($ii=0;$ii<=rows;$ii++) {

    $this->myCollection[$ii]=new Entity($this->row["nome"],$this->row["codice"],$this->row["commento"],$this->row["percorsofoto"],$this->row["id"]);

    }
    }

    in effetti adesso funziona....non capisco come far funzionare il tutto con foreach.

    P.s. tutto il resto (anche il front end) e rimasto invariato)
    perché con il fetch_array/assoc/row/object non si usa affatto il for each ma il while

    codice:
    function Visualizza()
    {
        $sql = "SELECT * FROM Cartolina";
        $query = @mysql_unbuffered_query($sql , $this->Connections) or die('Errore '
            . mysql_error() . ' durante l'esecuzione della query '
            . $sql . ' nel file ' . __FILE__ . ' alla linea ' . __LINE__);
        
        $this->myCollection = array();
        while($row = mysql_fetch_assoc($this->query))
        {
            $this->myCollection[] = new Entity($row["nome"], $row["codice"],
                $row["commento"], $row["percorsofoto"], $row["id"]);
        }
        
        mysql_free_result($query);
    }
    ho sistemato il codice, l'ho reso un pò più leggibile, ho ottimizzato un pò il funzionamento in termini di velocità e risorse di memoria ed infine ho aggiunto un check sugli errori nella query che effettui

    http://www.php.net/mysql_unbuffered_query
    http://www.php.net/mysql_free_result
    http://www.php.net/mysql_fetch_assoc
    http://www.php.net/while
    http://it.php.net/manual/en/language...predefined.php
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    22
    Grazie mille!

  6. #6
    Originariamente inviato da daniele_dll
    $query = @mysql_unbuffered_query($sql , $this->Connections) or die('Errore '
    . mysql_error() . '
    durante l'esecuzione della query '
    . $sql . '
    nel file ' . __FILE__ . ' alla linea ' . __LINE__);
    Curiosità.. Usavo anche io questa riga per visualizzare gli errori, ma sbaglio o è totalmente inutile? Cioè, mi aspetto sempre e comunque il file e la riga dove ho dichiarato quella funzione, o sbaglio? O dici che cambia in base al file che và a chiamare quella funzione?
    A me usciva sempre lo stesso messaggio

    grazie
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    22
    scusa se approfitto della tua pazienza, ma se volessi separare il dal dal business logic?
    cioe se volessi creare un oggetto che si occupa di eseguire la query e poi la funzione visualizza si limita a popolare l array myCollection?
    Come posso fare?
    Vorrei ottenere (se è possibile e conveniente come approccio) creare una applicazione 3-tier...

  8. #8
    Originariamente inviato da djhell
    Curiosità.. Usavo anche io questa riga per visualizzare gli errori, ma sbaglio o è totalmente inutile? Cioè, mi aspetto sempre e comunque il file e la riga dove ho dichiarato quella funzione, o sbaglio? O dici che cambia in base al file che và a chiamare quella funzione?
    A me usciva sempre lo stesso messaggio

    grazie
    quel "or die(....)" messo li serve per far dare errore nel caso l'esecuzione non vada a buon fine ovvero se il valore ritornato è false

    il __FILE__ e __LINE__ servono a visualizzare file e linea, sono 2 costanti magiche

    sinceramente, io non lo utilizzo proprio questo sistema perché ho una classe e richiamo il mio metodo e nella classe controllo il valore ritornato (se è false) ... ma se si usa mysql_query o mysql_unbuffered_query normalmente ... aggiungere 4/5 righe per il check sarebbe da panico
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    22
    non c e soluzione? help...please...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.