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

    [php] includere file nelle classi

    Sono passato da poco all'utilizzo delle classi e mi sono poco chiare alcune cose, per ogni file class che contiene query devo riscrivere tutti i parametri di connessione e ri-creare sempre la funzione di connessione al db oppure si può risolvere semplicemente con un include.

    Ho fatto alcune prove ma non funziona nulla.

    Grazie,
    ciao.

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Dovresti fare UNA classe DB che viene utilizzata da tutte le classi che eseguono query.

    Una cosa del genere:

    Codice PHP:

    include('db.class.php');

    class 
    pippo{

         private function 
    pluto(){
              
    $db = new DB();
              
    $risultato $db->Esegui("SELECT * from paperino");
         }



  3. #3
    E' da giorni che provo diverse tecniche ma nulla da fare, ho provato anche con lo script di esempio che hai postato ma ricevo sempre lo stesso errore:

    Warning: mssql_query(): supplied argument is not a valid MS SQL-Link resource


  4. #4
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Non ho qua un codice da darti, ma quello che intendevo era fare una classe semplice per accedere al DB ed utilizzare quella ogni volta che devi fare una query.

    Esempio, sempre in pseudocodice

    Codice PHP:
    class DB{
    private 
    $nomeDB;
    private 
    $server;
    private 
    $password;     


         public function new(){
              
    $this->nomeDB 'nomedel database';
              
    $this->server 'il server';
               ....
    etc
         
    }

         public function 
    Esegui($query){
             
    $this->connetti();
             return 
    mysql_query($query);

         }

         private function 
    connetti(){
                
    mysql_connect($this->server$this->user$this->password);
                
    mysql_select_db($this->dbname);
         }


    Quando devi fare una query nel codice ti basta includere la classe e poi fare

    Codice PHP:
    $dbclass = new DB();
    $dbclass->esegui("select * from pippo"); 
    Volendo puoi riutilizzare la connessione nel caso di più query o gestire più DB quando fai la New.

  5. #5
    Ok, risolto. Grazie tante ma purtroppo i problemi con la OOP sembrano appena iniziati.

    Devo eseguire una seconda query all'interno del ciclo della prima query, l'sql della seconda è:

    SELECT MAX(id_manutenzione) AS id_manut FROM t_manutenzioni WHERE id_apparato = '$id'"

    questa dovrebbe restituirmi l'id più grande ma purtroppo dopo la stampa di alcuni record va in loop, ecco l'errore:

    Fatal error: Maximum execution time of 30 seconds exceeded

    Utilizzando la classica programmazione di php (non ad oggetti), tutto funziona regolarmente. C'è un modo per risolvere, oppure devo tornare alla vecchia maniera.

  6. #6
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Posta il codice se puoi.

  7. #7
    Ho la vaga impressione che il problema sia del mio portatile, ho provato il codice qui sotto su un pc è mi viene restituito tutto in meno di 1sec.

    Codice PHP:
    function setIdManutenzione($idapparato)
    {
        
    $conn = new connetti();
        
    $dati = array();
        
    $this->sql "SELECT MAX(id_manutenzione) AS id_manut FROM t_manutenzioni WHERE id_apparato = '$idapparato'";
        
    $this->query mssql_query ($this->sql,$conn->connetti_arcdb()) or die($this->error_sql);
        if (
    $record mssql_fetch_array($this->query)) {
            
    $idmanutenzione $record[0];
        }

    per adesso mi faccio stampare soltanto l'id visto il problema che compare, non oso immaginare cosa accadrebbe al portatile se completo lo script. Mi sembra un po' strano cmq.

    Potrebbe essere a questo punto CPU del portatile che stia morendo?

    Pentium IV 3Ghz 1,2RAM 120HD

  8. #8
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    No spetta..
    Da quanto ho capito quella che hai postato va, ma quella che non funziona?

    Dato che parli di loop potrebbe essere un oggetto che istanzi erroneamente ogni volta.

  9. #9
    Questa funzione viene richiamata all'interno di un ciclo foreach, ho anche fatto un controllo con SystemExplorer per vedere se ci fosse qualche processo che ruba parecchio cpu ma nulla da fare.

    Le vers. di apache, php ed sql server installati sul mio portatile sono le stesse di quelle installate sul pc (Intel CoreDuo) in ufficio, e pure in uff. funziona perfettamente.

  10. #10
    Ho trovato chi mi causava l'errore (Fatal error: Maximum execution time of 30 seconds exceeded) quando richiamavo l'elenco con 250 record e mi rallentava anche l'apertura di ogni singola pagina:
    Codice PHP:
    public function __destruct()
    {
        
    mssql_close($this->connessione);

    la cosa cmq mi lascia ancora molto perplesso visto che su qualsiasi altra macchina l'applicazione gira molto velocemente e senza errore anche senza togliere il codice qui sopra.

    Qualcuno ha qualche idea?

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.