Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [Commento] Questo codice è scritto "decentemente"?

    Ciao, io sto costruendo un blog.

    Questo post lo scrivo per avere un parere da chi programma e usa php da molto più tempo di me riguardo la sintassi e insomma il codice che uso... se fa schifo se può esser migliroato etc.

    Questa porzione riguarda semplicemente il "loop" ovvero visualizzo i post dato dei limiti oppure un solo post dato degli id.

    Codice PHP:
    public function post($limit_min$limit_max$id){
            
            
    $this->db_connection();
            
            
    $limit '';
            
    $indx '';
            
    $i 0;
            
    $posts = array();
            
            if(
    $limit_min != '' || $limit_max != '' )
                
    $limit " limit ".$limit_min." , ".$limit_max
                
            
            if(
    $id != '')
                
    $indx " where id=".$id;
            
            
    $query "select * from post inner join media_post on post.id = media_post.id " $indx $limit;
            
            
    $result mysql_query($query);
            
            while(
    $row mysql_fetch_array($result)){
            
                
    $posts[$i]=array(
                
                
    'id' => $row['id'],
                
    'data' => $row['data'],
                
    'autore' => $row['autore'],
                
    'titolo' => $row['titolo'],
                    
    'testo' => $row['testo'],
                
    'file' => $row['file'],
                
    'url' => $row['url'],
                
    'type' => $row['type']
                
                );
                
                
    $i++;
            
            }

            
            return 
    $posts;
            
        } 
    Il codice funziona, volevo solo spaere se è scritto di ***** oppure è passabile è una funzione di una classe... Io ho creato una classe ma ci sarebbe stato lo stesso risultato se avessi usato una normale funzione...

    Grazie, Davide

  2. #2
    Ne approfitto anche per chiedervi come posso fare i modo che il campo DATETIMKE del mio database Sql mi restituisca la data nel formato "22 ottobre 2010" invece che la sintassi 10/22/2010 ..... GRazie ancora

  3. #3
    è scritto bene o male secondo quale filosofia? in oop, è male, in scripting, non male, in generale male perchè usi direttamente le funzioni mysql invece di mascherartele dentro ad un oggetto apposito per gestire il db. Un classico Conn con metodi tipo open, close, startTransiction, executeQuery etc.... Cmq ho letto e fatto di peggio, fa troppe cose quella funzione ma diciamo che c'è peggio

    poi che dirti... la $i non serve a nulla, per aggiungere un elemento a $posts ti basta
    Codice PHP:
    $posts[] = array(...); 
    per le date invece: http://php.net/manual/en/function.date.php
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Dunque alcune osservazioni:
    • quella funzione e' sostanzialmente due funzioni in una, quindi meglio separarle: una che restituisce il singolo post e una che gestisce la query con limit; usare limit quando estrai un solo record non ha senso
    • come gia' ha giustamente detto santino, e' meglio usare interfacce di piu' alto livello per interagire con il database ed evitare di scrivere le query concatenando stringhe: guadagni la comodita' di non doverti preoccupare di SQL injection ed altri problemi, oltre ad avere codice che puo' facilmente essere portato su altri database con minimi cambiamenti
    • SELECT * andrebbe generalmente evitato e andrebbero esplicitamente specificati quali campi vuoi estrarre: in questo modo se anche la struttura delle tabella cambia, non hai effetti collaterali sulle query che ne fanno uso
    • come conseguenza del punto precedente, la creazione manuale dell'array da inserire in $posts e' completamente inutile: se estrai solo i campi che ti interessano puoi direttamente fare $posts[] = $row;
    • per quanto riguarda semplice funzione o metodo di una classe, dipende dal contesto

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    Originariamente inviato da didoproject
    Ne approfitto anche per chiedervi come posso fare i modo che il campo DATETIMKE del mio database Sql mi restituisca la data nel formato "22 ottobre 2010" invece che la sintassi 10/22/2010 ..... GRazie ancora
    Non devi far altro che inglobare mese/giorno/anno in 3 variabili e poi ristamparle dove ti interessa con l'ordine che preferisci.

    Per ristampare 10 come ottobre la cosa migliore penso sia scrivere una funzione con con uno switch.

    codice:
    function monthtext(int $x) {
    
       switch($x) {
               case 1: 
                   $y = 'gennaio'
                   break;
               case 2:
                   $y = 'febbraio'
                   break;
    //ecc per tutti i mesi
        }
    
        return $y;
    }
    piu o meno una cosa simile, leggi la doc comunque che l'ho fatto tempo fa e ora non ho il codice sotto mano e non lo posso testare

  6. #6
    Grazie mille, siete stati molto d'aiuto

    Volevo solo delle precisazioni riguardo il fare delle query a più alto livello.... Mascherare dentro ad un oggetto significa quindi creare una classe che gestisca le interrogazioni ?

  7. #7
    Originariamente inviato da didoproject
    Grazie mille, siete stati molto d'aiuto

    Volevo solo delle precisazioni riguardo il fare delle query a più alto livello.... Mascherare dentro ad un oggetto significa quindi creare una classe che gestisca le interrogazioni ?
    Dai un'occhiata a http://it.php.net/manual/en/book.pdo.php

    Per quanto riguarda la formattazione della data, se il sistema ha le locale correttamente configurate, e' sufficiente questo:

    Codice PHP:
    $date '10/22/2010';
    echo 
    strftime('%d %B %Y'strtotime($date));

    // output: 22 ottobre 2010 
    se la locale di default non e' quella italiana, si puo' impostare con questa funzione:

    Codice PHP:
    setlocale(LC_ALL'it_IT.utf8'); 
    la specifica stringa per la corretta locale dipende dal sistema. Alternativamente si puo' fare a mano, ma a quel punto decisamente meglio un array con i nomi dei mesi piuttosto che un kilometrico switch.

  8. #8
    stupendo

  9. #9
    Ho provato a creare un piccolo script di prova con PDO....

    Però mi vien restituito nella pagina questa stringa: Array()

    Se metto un echo o altro nn appare appare solo Array()..

    Ho installato php 5.1 che la supporta nativamente... avete idea del perchè?

    L'errore è nell'iinizializzazione...

    con var_dump mi vien dato su $db: object(PDO)#1 (0){ }


    Codice PHP:
    <?php

    $col 
    'mysql:host=localhost;dbname=prova';

    // blocco try per il lancio dell'istruzione
    try {

          
    // connessione tramite creazione di un oggetto PDO
        
    $db = new PDO($col 'root','');

    }

    // blocco catch per la gestione delle eccezioni
    catch(PDOException $e) {

      
    // notifica in caso di errorre
      
    echo 'Attenzione: '.$e->getMessage();

    }

    // preparazione della query 
    $sql $db->prepare('SELECT autore FROM blog');

    // esecuzione della query 
    $sql->execute(); 

    // creazione di un array dei risultati 
    $res $sql->fetchAll();

    // visualizzazione dei risultati 
    print_r($res); 

    ?>

  10. #10
    La sintassi mi sembra corretta, sicuro che la query non ritorni un recordset vuoto?

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.