Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Richiamare l' oggetto PDO da un altro metodo

    Ciao a tutti. Sto affrontando l' ennesima sfida ;-)
    Avevo creato un metodo che mi visualizzava nella pagina una tabella con il risultato di una select, usando però le ormai deprecate funzioni mysql_, quindi mi sono deciso a farne una versione usando direttamente PDO. (Comincio a sentire la nostalgia del procedurale )
    Col vecchio metodo, nella mia pagina, richiamavo il metodo per la connessione e poi il metodo per visualizzare i dati della query, con PDO non riesco perchè devo istanziare l' oggetto PDO per fare la connessione e poi utilizzarlo all' interno del metodo per eseguire la query.


    In pratica:


    Metodo che crea la connessione a mysql:
    Codice PHP:
    class c_db
         function 
    clarts_db_conn()   
         {        
           
    // collegamento al database con PDO        
           
    $col 'mysql:host=localhost;dbname=clarts_db';                
           
    // blocco try per il lancio dell'istruzione        
           
    try
              {        
                 
    // connessione al database con PDO        
                
    $db = new PDO($col 'root''');        
               }        
           
    // blocco catch per la gestione delle eccezioni        
           
    catch(PDOException $e)         
              {        
                  
    // notifica in caso di errore        
                  
    return 'Attenzione: '.$e->getMessage();       
              }           
       }   



    Metodo che mi visualizzai dati nella pagina:


    Codice PHP:
    class c_display_query{   
       function 
    f_display_db_query() 
       {      
              
    //qui ho bisogno di accedere alla connessione per fare la query   
              //ed elencare i risultati  
       


    Come fo? Una birretta a chi mi aiuta

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    49
    raga ho bisogno di aiuto devo fare questo problema.Dato un'array di record formato da:codice portata,descrizione,tipo(1,2,contorno),prezzo.Inol tre le ordinazioni verrano gestite con un'altro array con il seguente record logico:codice tavolo,codice portata,quantità,descrizione,prezzo,n° di persone ad un tavolo,conto.Il software deve essere inviato alla cucina.Inoltre a fine giornata determinare l'incasso totale e totale per tavolo.Infine azzerare gli array.

  3. #3
    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    Ciao a tutti. Sto affrontando l' ennesima sfida ;-)
    Avevo creato un metodo che mi visualizzava nella pagina una tabella con il risultato di una select, usando però le ormai deprecate funzioni mysql_, quindi mi sono deciso a farne una versione usando direttamente PDO. (Comincio a sentire la nostalgia del procedurale )
    Col vecchio metodo, nella mia pagina, richiamavo il metodo per la connessione e poi il metodo per visualizzare i dati della query, con PDO non riesco perchè devo istanziare l' oggetto PDO per fare la connessione e poi utilizzarlo all' interno del metodo per eseguire la query.


    In pratica:


    Metodo che crea la connessione a mysql:
    Codice PHP:
    class c_db
         function 
    clarts_db_conn()   
         {        
           
    // collegamento al database con PDO        
           
    $col 'mysql:host=localhost;dbname=clarts_db';                
           
    // blocco try per il lancio dell'istruzione        
           
    try
              {        
                 
    // connessione al database con PDO        
                
    $db = new PDO($col 'root''');        
               }        
           
    // blocco catch per la gestione delle eccezioni        
           
    catch(PDOException $e)         
              {        
                  
    // notifica in caso di errore        
                  
    return 'Attenzione: '.$e->getMessage();       
              }           
       }   



    Metodo che mi visualizzai dati nella pagina:


    Codice PHP:
    class c_display_query{   
       function 
    f_display_db_query() 
       {      
              
    //qui ho bisogno di accedere alla connessione per fare la query   
              //ed elencare i risultati  
       


    Come fo? Una birretta a chi mi aiuta
    Perche' hai 2 classi separate?

  4. #4
    boh ho pensato di dedicare una classe al db e l' altra al problema della visualizzazione dei dati in tabelle o div che siano...ma si accettano consigli visto che non sono tanto pratico

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    11
    L'unica maniera per farlo utilizzando due classi è quella di passare l'oggetto pdo come parametro, il tutto non ha molto senso, credo tu abbia le idee un po' confuse per quanto riguarda la programmazione ad oggetti

  6. #6
    Quote Originariamente inviata da s1501 Visualizza il messaggio
    credo tu abbia le idee un po' confuse per quanto riguarda la programmazione ad oggetti
    Infatti

  7. #7
    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    boh ho pensato di dedicare una classe al db e l' altra al problema della visualizzazione dei dati in tabelle o div che siano...ma si accettano consigli visto che non sono tanto pratico
    Dipende tutto da cosa devi fare.

    Se vuoi scrivere buon codice OO allora non puoi buttare li' delle classi a caso perche' ti sembrano simpatiche, devi studiare come funziona la programmazione a oggetti in PHP e capire quando ha senso creare classi, quando ha senso estenderne altre e via dicendo.

    Se invece devi solo risolvere un problema ma non hai tempo/voglia di studiare, allora rimani sulla versione piu' semplice possibile lasciando perdere complesse strutture di classi.

  8. #8
    Quote Originariamente inviata da k.b Visualizza il messaggio
    Dipende tutto da cosa devi fare.

    Se vuoi scrivere buon codice OO allora non puoi buttare li' delle classi a caso perche' ti sembrano simpatiche, devi studiare come funziona la programmazione a oggetti in PHP e capire quando ha senso creare classi, quando ha senso estenderne altre e via dicendo.

    Se invece devi solo risolvere un problema ma non hai tempo/voglia di studiare, allora rimani sulla versione piu' semplice possibile lasciando perdere complesse strutture di classi.
    Se non avevo tempo/voglia di studiare non mi stavo a sbattere ed a rompere le palline a voi per cercare di fare una cosa fatta per bene non credi?

  9. #9
    Prova a dare un'occhiata al DAO pattern così ti chiarirai un po' le idee. Basta una semplice googlata per trovare tante informazioni ed esempi pratici.

    P.S.
    A quelli che iniziano ad approcciare la OOP consiglio sempre lo studio di un buon manuale UML che aiuterà ad apprendere i principi base ed il modo di ragionare tipici del paradigma OOP più di qualsiasi esempio software.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    Se non avevo tempo/voglia di studiare non mi stavo a sbattere ed a rompere le palline a voi per cercare di fare una cosa fatta per bene non credi?
    Il punto e' che la programmazione a oggetti in PHP e' un argomento molto vasto, ed e' difficile riassumerlo in un post su un forum. Qui si possono dare consigli specifici o affinare del codice, ma la comprensione di base di com'e' strutturata un'applicazione OO e' un requisito necessario, altrimenti e' impossibile capire perche' alcune cose vengono fatte in un certo modo.

    Rimanendo per ora sul discorso PDO, non e' necessario utilizzare chissa' quale struttura complessa per passare a PDO. Anzi, PDO e' gia' una classe, quindi a meno di esigenze particolari non serve crearne un'altra per interagire col database.

    Ad esempio, il codice seguente e' perfettamente sufficiente a fare una SELECT e lavorare sui risultati:
    Codice PHP:
    $dsn  'mysql:host=localhost;dbname=test';
    $user '*';
    $pass '*';

    $pdo = new PDO($dsn$user$pass);
    $stmt $pdo->query("SELECT * FROM table");

    while (
    $row $stmt->fetchObject()) {
        
    // fai qualcosa con $row

    ovviamente, pero', in questo caso non si fa nulla di diverso da cio' che si fa con mysql_*, pero' e' un esempio per capire che PDO non e' questa cosa cosi' strana.

    Il primo vantaggio nel mollare le vecchie funzioni mysql_* e usare PDO e' la possibilita' di usare i prepared statements, cioe' inviare la query e gli argomenti separatamente, cosi' da eliminare completamente ogni possibilita' di SQL injection, poi andando avanti si scopre che PDO offre un sacco di cose utili. L'importante e' capire bene la OOP e procedere per gradi.

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.