Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 31

Discussione: [PHP]classi

  1. #11
    eccoci ho provato e funzione ora a voi esperti la parola cosa posso migliorare?


    Codice PHP:

    <?php

    class ConDBase
        
    {    
                
            function 
    Con($host,$psw,$user,$nomedb
                {                       
                                            
                    
    $con=mysql_connect($host,$psw,$user) or
                        die (
    "Non posso connettermi al database");
                        
                    
    mysql_select_db($nomedb$con) or
                        die (
    "Non posso selezionare il database");
                }
                
                function 
    select($query
                {
                    
    $selectmysql_query($query);
                    while(
    $row mysql_fetch_array($select))
                    { 
                        echo 
    "[url='index.php']<p align='left'>",$row['Categoria'], '[/url]</p>';
                        
                    }
                }
        }                        
    // Termino la classe e inizio ad usarla 
        
        
    $mv=new ConDBase();
        
    $mv->Con('127.0.0.1','root','','Cyber');
        
    $mv->select("SELECT Categoria, IdCategoria FROM Categorie;"); 
    ?>

    e se dovessi fare un carrello cosa dovrei prevedere nella classe ?

    mi basterebbe solo una classe ho dovrei suddividere il tutto ?

    datemi almeno uno spunto poi me la cavo da solo ...


    Grazie
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  2. #12
    la programmazione procedurale se ben strutturata è assolutamente migliore.
    La programmazione obj. però, una volta imparata è più semplice ...

    stili di vita.

    per php la programmazione procedurale va benissimo, certo se usi c++ devi per forza programmare a oggetti.

    Silent Engine

    <?="hello world"?>

  3. #13
    Originariamente inviato da Pak
    la programmazione procedurale se ben strutturata è assolutamente migliore.
    assolutamente migliore rispetto a cosa ???
    anche in C si tende a fare kili di files con funzioni esterne dove il concetto diventa molto simile a quello di classi ...

    #include <miofile.h>

    dove poi uso tutte le funzioni ( metodi ) di miofile.h e molti di questi possono usare a loro volta , dentro miofile.c , funzioni di miofile stesso ( non esiste il this ma e' concettualmente simile ) ...

    simile per riutilizzo di codice, simile per funzioni con funzioni di un file esterno da richiamare, simili come concetto "uso questa libreria per fare questa/e cose" , analogo "uso questa classe per fare questa/e cose" ...

    forse volevi dire piu' veloce, ed allora posso darti ragione, ma dire che in assoluto e' meglio programmare in procedurale mi sembra una fesseria, soprattutto perche' la OOP e' stato un traguardo per gli sviluppatori, non un recedere rispetto a prima ... ci sara' pure un motivo ... non sei d' accordo ?


    Originariamente inviato da Pak
    La programmazione obj. però, una volta imparata è più semplice ...

    stili di vita.
    piu' che stile di vita , la via per perdere sempre meno tempo per un lavoro e non fare l' operaio da catena industriale che ogni volta ripete sempre le stesse cose per fare sempre le stesse cose ... con l' aggiunta del fatto che le stesse cose difficilmente riesce a migliorarsele, una classe se ha un baco lo curi e uploadando la classe hai risolto tutti i problemi di tutti gli applicativi con quel baco


    Originariamente inviato da Pak
    per php la programmazione procedurale va benissimo, certo se usi c++ devi per forza programmare a oggetti.
    anche python che e' OO in assoluto, ha lasciato per comodita' la possibilita' di utilizzare il procedurale ... perche' fare un echo non deve significare una classe, fare siti / applicativi / programmi / gestionali / siti / quello che ti pare invece puo' essere fatto , grazie al cielo , ad oggetti, anche col php, e se impari bene i concetti della OOP , poi il passaggio agli altri linguaggi diventa meno doloroso

    imho
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #14
    si ma la mia mini-classe del cavolo può essere migliorata/ottimizzata o no?

    e poi se dovessi fare un carrello cosa dovrei prevedere nella classe (quali funzioni)?

    mi basterebbe solo una classe ho dovrei suddividere il tutto ?

    datemi almeno uno spunto poi me la cavo da solo ...
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  5. #15
    e classi su database sono le piu' complesse dal punto di vista della programmazione ... perche' ... perche' gia' il fatto stesso che e' per quel database con quei parametri la rende praticamente inutile ( a meno che non e' fatta solo ed esclusivamente per permetterti di fare cose dedicate su quel database, non e' questo il tuo caso ) .


    Classi per db ... un' interfaccia, una astratta , una pilota , sotto classi a seconda del db scelto ... solitamente sono cosi' , guardati PDO , un' unica classe di metodi usabili con qualunque tipo di database, analogo il discorso in PEAR ... ci sono layer astratti in grado, con gli stessi metodi validi per qualunque tipo di db, mysql, sqlserver, sqlite, altri, in grado di effettuare le stesse operazioni ... tu scrivi sempre nello stesso modo, a seconda del server / configurazione istanzi i soli oggetti in connessioe coi parametri del tipo di database presente, tuttoil resto e' invariato .

    Insomma, se ti fa comodo quella cosi' com'e' , non cambiarla, se vuoi migliorarla invece ti consiglio prima di creare / usare altre tipologie di classi, meno complicate di quelle per databases .

    Puoi anche giocare con una classe che ti crea in automatico delle form a seconda di come imposti dei valori al costruttore, che ti parsano dati post o get , che ti modificano in un certo modo del testo , che ti ottimizzano i files php di un applictivo, che li offuscano , che fanno debug, che creano alberi di dati, di array, che analizzano array e creano XML validi ... quello che ti pare, tranne i db

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #16
    Originariamente inviato da andr3a
    e classi su database sono le piu' complesse dal punto di vista della programmazione ... perche' ... perche' gia' il fatto stesso che e' per quel database con quei parametri la rende praticamente inutile ( a meno che non e' fatta solo ed esclusivamente per permetterti di fare cose dedicate su quel database, non e' questo il tuo caso ) .


    Classi per db ... un' interfaccia, una astratta , una pilota , sotto classi a seconda del db scelto ... solitamente sono cosi' , guardati PDO , un' unica classe di metodi usabili con qualunque tipo di database, analogo il discorso in PEAR ... ci sono layer astratti in grado, con gli stessi metodi validi per qualunque tipo di db, mysql, sqlserver, sqlite, altri, in grado di effettuare le stesse operazioni ... tu scrivi sempre nello stesso modo, a seconda del server / configurazione istanzi i soli oggetti in connessioe coi parametri del tipo di database presente, tuttoil resto e' invariato .

    Insomma, se ti fa comodo quella cosi' com'e' , non cambiarla, se vuoi migliorarla invece ti consiglio prima di creare / usare altre tipologie di classi, meno complicate di quelle per databases .

    Puoi anche giocare con una classe che ti crea in automatico delle form a seconda di come imposti dei valori al costruttore, che ti parsano dati post o get , che ti modificano in un certo modo del testo , che ti ottimizzano i files php di un applictivo, che li offuscano , che fanno debug, che creano alberi di dati, di array, che analizzano array e creano XML validi ... quello che ti pare, tranne i db


    il problema è ho capito poco di quello che mi hai detto nelle ultimre righe ma cmq ci provo.

    Ti farò sapere...
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  7. #17
    vabè andr3a dillo che ti sto sul cavolo


    Silent Engine

    <?="hello world"?>

  8. #18
    Originariamente inviato da Pak
    vabè andr3a dillo che ti sto sul cavolo
    assolutamente no ... tu hai scritto la tua, io ho controbattuto con la mia, fossi stato un altro sarebbe stata la stessa cosa


    e' che quella frase "meglio in assoluto" mi ha fatto accapponare i capelli
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #19

  10. #20
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    25
    Potresti utilizzare le classi per interrogare il DB., io normalmente le utilizzo per separare l'interfaccia utente con le interrogazioni sul DB , in questa maniera ho una programmazione ad oggetti a 2 strati.
    un esempio ?
    <?php

    /*------------------------------------------------------------------------*
    Tabella Categorie
    *------------------------------------------------------------------------*/
    class CCategorie
    {
    // Elenco campi
    var $IdCategoria;
    var $DescrizioneCat;
    var $TipoCat;
    var $IdSitoCat;
    // Variabili aggiuntive
    var $DescErrore;
    var $mAggiornamento;
    var $Connessione;


    // Restituisce il Recordset
    Function InizializzaTabella($SQLWhere, $SQLOrder) {
    $SQLQuery = "SELECT * FROM Categorie";

    if ($SQLWhere !="_NULL") {
    $SQLQuery .= " WHERE " . $SQLWhere;
    }
    if ($SQLOrder !="_NULL") {
    $SQLQuery .= " ORDER BY " . $SQLOrder;
    } else {
    $SQLQuery .= " ORDER BY ";
    $SQLQuery .= " IdSitoCat, ";
    $SQLQuery .= " IdCategoria ";
    }


    $Recordset = mysql_query($SQLQuery,$this->Connessione);

    if ($Recordset == FALSE ) {


    $this->DescErrore = "(Err. " . mysql_errno($this->Connessione) . ": " . mysql_error($this->Connessione) .")";
    }

    return $Recordset;
    }

    Function Elemento(
    $idSito, $IdCategoria
    ) {
    $SQLQuery = "SELECT * FROM Categorie ";
    $SQLQuery .= " WHERE ";
    $SQLQuery .= " IdCategoria =\"$IdCategoria\" and IdSitoCat = $idSito";
    $Recordset = mysql_query($SQLQuery,$this->Connessione);
    if ($Recordset == FALSE ) {
    $this->DescErrore = "(Err. " . mysql_errno($this->Connessione) . ": " . mysql_error($this->Connessione) .")";
    return (FALSE);
    } else {
    if (mysql_num_rows($Recordset)>0) {
    $Record = mysql_fetch_object($Recordset);
    $this->CaricaElemento($Record);
    return (TRUE);
    } else {
    return (FALSE);
    }
    }

    }

    // Carica il Record nelle variabili
    Function CaricaElemento($Record) {
    $this->IdCategoria = $Record->IdCategoria;
    $this->DescrizioneCat = $Record->DescrizioneCat;
    $this->TipoCat = $Record->TipoCat;
    $this->IdSitoCat = $Record->IdSitoCat;
    $this->mAggiornamento = "SI";
    }

    // Nuovo record
    Function Nuovo() {
    $this->mAggiornamento = "NO";
    }

    // Salva il record
    Function Salva() {
    if ($this->mAggiornamento == "SI") {
    $SQLQuery = "UPDATE Categorie";
    $SQLQuery .= " SET ";
    $SQLQuery .= " DescrizioneCat = '" . $this->DescrizioneCat . "'";
    $SQLQuery .= " , TipoCat = '" . $this->TipoCat . "'";
    $SQLQuery .= " Where ";
    $SQLQuery .= " IdSitoCat = " . $this->IdSitoCat . "";
    $SQLQuery .= " AND IdCategoria = '" . $this->IdCategoria . "'" ;
    $EsitoQuery = mysql_query($SQLQuery,$this->Connessione);

    echo $SQLQuery;
    if ($EsitoQuery == FALSE ) {
    $this->DescErrore = "(Err. " . mysql_errno($this->Connessione) . ": " . mysql_error($this->Connessione) .")";
    return (FALSE);
    } else {
    return (TRUE);
    }
    } else {
    // Eseguo l'inserimento del record
    if ($this->mAggiornamento == "NO") {
    $SQLQuery = " INSERT INTO Categorie";
    $SQLQuery .= " ( ";
    $SQLQuery .= " DescrizioneCat ";
    $SQLQuery .= " , TipoCat ";
    // Eliminare gli eventuali campi CONTATORE - aggiungere alla prima riga la virgola iniziale
    $SQLQuery .= " , IdSitoCat ";
    $SQLQuery .= " , IdCategoria ";
    $SQLQuery .= " ) VALUES ( ";
    $SQLQuery .= " '" . $this->DescrizioneCat . "'";
    $SQLQuery .= " , '" . $this->TipoCat . "'";
    // Eliminare gli eventuali campi CONTATORE - aggiungere alla prima riga la virgola iniziale
    $SQLQuery .= " , " . $this->IdSitoCat . "";
    $SQLQuery .= " , '" . $this->IdCategoria . "'";
    $SQLQuery .= " ) ";

    echo $SQLQuery;
    $EsitoQuery = mysql_query($SQLQuery,$this->Connessione);
    if ($EsitoQuery == FALSE ) {
    $this->DescErrore = "(Err. " . mysql_errno($this->Connessione) . ": " . mysql_error($this->Connessione) .")";
    return (FALSE);
    } else {
    // Lasciare solo gli eventuali campi CONTATORE
    $this->mAggiornamento = "SI";
    return (TRUE);
    }
    } else {
    $this->DescErrore = "Errore: valore del flag di aggiornamento non previsto (" . $this->mAggiornamento . ")";
    return(FALSE);
    }
    }
    }

    // Cancella il record
    Function Cancella(
    $IdSito, $IdCategoria
    ) {
    $SQLQuery = "DELETE FROM Categorie";
    $SQLQuery .= " WHERE ";
    $SQLQuery .= " IdSitoCat= " . $IdSito . " AND IdCategoria= '" . $IdCategoria . "'";
    $EsitoQuery = mysql_query($SQLQuery,$this->Connessione);
    if ($EsitoQuery == FALSE ) {
    $this->DescErrore = "(Err. " . mysql_errno($this->Connessione) . ": " . mysql_error($this->Connessione) .")";
    return (FALSE);
    } else {
    return (TRUE);
    }
    }
    }

    ?>

    Per ogni tabella definita nel DB definisco una classe che mi da la possibilità di:

    Funzione InizializzaTabella :

    effettuo la query di tutta la tabella , con la possibilità di selezionare dei record "$SQLWhere" e "$SQLOrder" per l'ordinamento.

    Funzione Elemento :

    ricerca del record nella tabella


    Funzione Salva :

    per aggiornare o aggiungere un record

    Funzione Cancella :

    per cancellare il record


    Se devo fare interrogazioni particolari sul DB tipo join con altre tabelle , comunque qualsiasi cosa che interessa il DB aggiungo funzioni nella classe.

    Luciano

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 © 2026 vBulletin Solutions, Inc. All rights reserved.