Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Riempire array

  1. #1

    Riempire array

    Ciao a tutti vi scrivo per un piccolo problema che vado subito a descrivere

    Devo riempire un'array con dei valori presi da db e riportare i valori recuperati dentro un elenco puntato.
    La seguente operazione la volevo svolgere tramite alcune funzioni la prima va a stampare l'elenco puntato impostando le diversi classi agli li e la seconda dovrebbe prendere i dati che vanno a popolare gli li e richiamarla nella prima funzione.

    codice fatto sino ad ora
    Codice PHP:
    function metaDatiBlog($limit=5){
        
    $sql="SELECT * FROM xxx ORDER BY id ASC LIMIT 0,$limit ";
        
    $rs mysql_query($sql) or die(mysql_error());
        
    $nr mysql_num_rows($rs);
        
    $class = array("by","at","in","co","mo");
        echo 
    "<ul class='blog-post-details'>";
        for(
    $i=0;$i<$nr;$i++){
            
    $rows mysql_fetch_assoc($rs);
            
    $text recuperoMetaDati();        
            echo 
    "<li class='posted-".$class[$i]."'>[url='#']".$text."[/url]";
        }
        
        echo 
    "[/list]";
        
    }
    function 
    recuperoMetaDati($limit=5){
            
        
    $sql="SELECT * FROM dw_articolo ORDER BY id ASC LIMIT 0,$limit ";
        
    $rs mysql_query($sql) or die(mysql_error());
        
    $nr mysql_num_rows($rs);
        
        for(
    $i=0;$i<$nr;$i++){
            
    $rows mysql_fetch_assoc($rs);
            
    $autore $rows['autore'];
            
    $data $rows['data'];
            
    $more "more";
                    
    come metto i valori dentro l'array?????
        }
        

    output finale
    codice:
    <ul>[*]autore[*]data[*]categorie[*]numero commenti[*]read more[/list]
    Grazie a chi mi sarà di aiuti

  2. #2
    Utente di HTML.it L'avatar di ispuk
    Registrato dal
    Jan 2009
    Messaggi
    1,026
    ciao mi sembra che tu stia utilizzando un metodo errato per prendere i risultati della query, io farei:

    Codice PHP:
    $sql="SELECT * FROM dw_articolo ORDER BY id ASC LIMIT 0,$limit ";  
       
    $rs mysql_query($sql) or die(mysql_error());  
       
    $nr mysql_num_rows($rs); 
    //qui hai un array con tutti i tuoi risultati    
     
    $rows mysql_fetch_array($sql); 
    //qui non si capisce tanto cosa stai cercando di fare   
      
    $autore $rows['autore'];    
     
    $data $rows['data'];   
      
    $more "more"
    in realtà credo che a questo punto tu abbia già un array con i valori meglio se provi a fare un var_dump($rows); cosi vedi cosa ci sta dentro.

  3. #3
    Ciao come prima cosa grazie per la risposta e quando eseguo la seguente istruzione
    $autore = $rows['autore'];

    Associo alla variabile autore il valore preso dal db e precisamente il valore della "colonna" autore.

    Comunque sono riuscito a risolvere il problema e mi sono scordato di scriverlo...

  4. #4
    Utente di HTML.it L'avatar di ispuk
    Registrato dal
    Jan 2009
    Messaggi
    1,026
    ah fa niente, grazie a te per la precisazione non capivo se stavo scrivendo cavolate o meno , si usa sempre mysql_fetch_array() cosi ti ritornerà sempre l'array dei records

    ciao

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    umpf ...... ma che e' ?????


    1- funzione di estrazione dati oppurtunamente parametrizzata
    2- funzione di visualizzazione dati oppurtunamente parametrizzata

    COsi' hai 1 funzione di recupero dati che puoi usare indipendentemente dal contesto in cui sei unitamente alla procedura che si occupa di visualizzarli. La seconda procedura puoi cosi' modificarla a tempo di cambio delle specifiche, ad esempio se vuoi cambiare il layout etc o i dati che visualizzi

    codice:
    function getBlogMeta( $opts )
    {
    //ESEGUI SELECT 
    
    // CONTROLLA RISULTATI
    
    // POPOLA STRUTTURA DATI
    
    // RITORNA RISULTATO =======> SOLO DATI
    
    }
    
    function blogDataToHtml( $dati , $opts )
    {
    // CONTROLLA COERENZA DATI
    
    // GENERA HTML IN BASE ALLE OPTS PASATE
    
    // RITORNA STRINGA 
    
    }
    As easy as that !

  6. #6
    se usi mysql_fetch_assoc ottiene la stessa cosa solo che apposto del ciclo while utilizzerai un for e imposti come limite massimo il numero di record che ottieni con la query

    per virus sono due funzioni separate per avere, in caso di modifiche del layour, una piccola agevolazione magari è una cavolata...

  7. #7
    Utente di HTML.it L'avatar di ispuk
    Registrato dal
    Jan 2009
    Messaggi
    1,026
    usa foreach per i cicli molto piu comodo direi :P

  8. #8
    Utente di HTML.it L'avatar di ispuk
    Registrato dal
    Jan 2009
    Messaggi
    1,026
    e comunque se proprio vuoi farla bella ti consiglio di usare una classe anche scritta da te

    class DB{
    //qua metti tutti i dati per la connessione al db
    $_db_name = 'pippo';
    $_db_password = 'antani';
    $_db_username = 'root';

    function __construct(){
    //connessione al db con $_db_name,$_db_password , etc etc

    }
    function getData($table,$rows ... etc){
    //ritorni i dati in array o come vuoi
    return $results;
    }


    }

    cosi poi richiami esclusivamente :

    $this->DB = new DB();
    $this->DB->getData(tabella,tipo di risultato,group by,limite, quello che vuoi insomma)

  9. #9
    Utente di HTML.it L'avatar di ispuk
    Registrato dal
    Jan 2009
    Messaggi
    1,026
    ah dimenticavo la cosa ganza è che una volta che hai:
    codice:
    $this->DB->getData('tabella_pippo');
    
    fai cosi nell'html:
    
    
    <ul>
    <?php foreach($this->DB->getData('books') as $row){ ?>[*]<?php echo $row->id; ?>[*]<?php echo $row->author; ?>[*]<?php echo $row->book; ?>
    <?php } ?>[/list]

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Due segnalazioni urgenti,

    1 simone facciamo sempre le cose bene e come vanno fatte, MAI usare for per gestire cicli indefiniti !!! MAI MAI MAI. La best practice ti suggeriscono di usare un bel while, in php puoi usare anche il foreach visto che concettualmente nasce proprio per gestire set di dati di cui si ingnorano forma et dimensione, quando non sai a priori la quantita di dati che devi scorrere usa sempre ciclo indefinito(while-foreach), il ciclo definito "for" lo usi (per favore) se e solo hai appunto set di dati che conosci bene di cui conosci le dimensioni. Utilizza questo approccio e vedrai che raramente avrai probloemi di looping infinito

    2 ipsuk, per favore non dare suggerimenti sballati se devi suggerire classi almeno fallo bene, lo scope dei metodi va SEMPRE definito, non usiamo per favore dichiarazioni implicite ,

    class example
    codice:
    class myClass
    {
         // attributi
         private $campo;
         private $campo2 ;
         public  $campoDaGolf;
    
         // costruttore 
         public function __construct($campoDaGolf)
         {
              try{ $this->setCampoDaGolf($campoDaGolf); } 
              catch(Exception $e){ throw $e ; }
              //etc.....
         }
    
    
         //metodi pubblici
              // Getters and setters
              public function getName(){}
    
              public function setName(){}
              
              public function setCampoDaGolf($campoDaGolf)
              {
                   //CONTROL LAYER CON LANCIO ECCEZIONI IN CASO DI ERRORE
                   // a cui segue l'assegnazione del valore all'attributo della classe
                   $this->campoDaGolf = $campoDaGolf;
              }
         
         // Metodi privati
         private function quelloCheSia(){}
    
    }

    La classe come da te suggerito per favore buttala via.... $_connection ???? ma che e' privata ? pubblica ?? chi la usa e come ?? Anche gli attributi come i metodi NECESSITANO di una definizione esplicita, e l'underscore davanti e' INUTILE e PROBELMATICO ! Nonche' causa di confusione ed errori di digitazione .... "$this->_nome" .... ho sbagliato 3 volte solo a digitarlo qui ... tra pigia shif e molla shift. oltre al fatto che molti costrutti e super-golbals di php usano l'underscore davanti .... $_attributo => DA EVITARE !!!! predileger sempre lo standard $mioAttrbiuto, se proprio vuoi arrivare all'estremo allora applichiamo la notazione ungherese.... ma li siamo alla frutta anche se tale notazione(che e' 1 std definito) ti da la possibilità di capire al volo cosa c'e' dentro una determinata var e cosa puoi stiparci(anche se serve piu' in linguaggi tipizzati anche in php puo' servire). E CMQ NO $_attributo !

    codice:
    class miaClasse
    {
         private $connection ;
         private $server ;
         private $user ; 
    
         public $status ;
         public $lastQuery ;
    
         // e tutto il resto
    
    }
    anche tra 3 anni quando riguardi questa classe capisci subito come opera ogni cosa, gli attributi private sai a priori che scope hanno e che necessitano di getters/setters per essere letti o scritti e se no ci sono tali metodi allora o estendi la classe o l aggiungi. come dici te non sai mai chi cosa come e perche'. $_campo ?????? PERCHE'???????????

    Impariamo a fare le cose fatte bene, ben identante e seguendo le specifiche, le varie euristiche e le best practice, abituiamoci a fare le cose come vanno fatte, poiche' c'e' un motivo se vengono suggeriti determinati approcci, anche a livello di std su come nominare le var e sull'esplicitazione dello scoping degli elementi.

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.