Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,337
    Io di solito ho una pagina php che aggiorna una tabella senza mandare alcun output.
    Finito l'aggiornamento faccio un redirect verso una pagina php/html/js che stampa a video... "Stai per essere rideretto. Se non succede nulla entro 5 secondi clicca qui".
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  2. #12
    ma a seconda dei casi potrebbe effettuare un rallentamento? se dopo aver inserito i dati fai la redirect significa che mandi la richiesta al browser di richiedere altro...quindi c' è uno scambio di battute in più...o no?

  3. #13
    Con i vostri suggerimenti ora tutto funziona a meraviglia e poco a poco mi riaffiorano alla mente tutte le cose che avevo letto su php.
    Grazie infinite! Siete davvero super!
    Più pratica in futuro...

  4. #14
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Con i vostri suggerimenti ora tutto funziona a meraviglia e poco a poco mi riaffiorano alla mente tutte le cose che avevo letto su php.
    Grazie infinite! Siete davvero super!
    Datti alla programmazione orientata agli oggetti, è una figata pazzesca, triboli un po' all' inizio ma dopo non scrivi più una riga di codice a meno che non devi fare qualcosa di nuovo o richiamare qualche classe

  5. #15
    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    Datti alla programmazione orientata agli oggetti, è una figata pazzesca, triboli un po' all' inizio ma dopo non scrivi più una riga di codice a meno che non devi fare qualcosa di nuovo o richiamare qualche classe
    si si la conosco ma non facendo questo come lavoro può passare 1 anno dall'ultima volta che ho scritto qualcosa in php, è già tanto ricordarsi della pdo, comunque concordo sulla questione oggetti, tu come struttureresti la pdo con un oggetto? sono certo che con un oggetto del genere il mio programma si accorcerebbe ad una manciata di righe di codice.

    personalmente creerei un oggetto solo per scrivere e per leggere, secondo me con un po' di lavoro si fa...

    per ora mi accontento di quello che ho fatto, non vi disturbo oltre e vi ringrazio molto per il tempo che mi avete dedicato
    Ultima modifica di giannino1995; 19-04-2016 a 12:43
    Più pratica in futuro...

  6. #16
    la pdo è già un oggetto, premesso che sono abbastanza pivello anche se ormai sono anni che scrivo codice perchè faccio tutto da solo...io mi sono fatto un file da includere:
    config.php
    Codice PHP:
    //Dati per la connessione al DB
    const dbistance "mysql";
    const 
    host 'localhost'
    const 
    user 'nomeutente';
    const 
    pass 'password';
    const 
    dbname 'nomeDB'
    Poi una classe che mi gestisce le varie operazioni sul database:
    Codice PHP:
    class c_db
    {    
        public 
    $_link//Diventa l' oggetto per la connessione     
        
    function __construct($dbistance$host$user$pass$dbname)    
       {        
           
    //blocco try/catch di gestione delle eccezioni       
           
    try 
           {           
               
    $col $dbistance.":host=".$host.";dbname=".$dbname;           
               
    // Connessione al DBMS           
               
    $this->_link = new PDO($col$user$pass);                    
           }         
           catch(
    PDOException $e
             {             
                  
    // notifica in caso di errore nel tentativo di connessione             
                  
    echo $e->getMessage();
                  exit;          
              }   
        }
    //Method End

        //......altri metodi per le operazioni su DB

    }//Class end 
    Poi quando ho bisogno di lavorare sul DB istanzio la classe
    Codice PHP:
    //Così utilizza le costanti definite nel file config.php
    $o_db = new c_db(dbistancehostuserpassdbname);

    //Oppure se in via eccezionale devi cambiare la connessione gli passi direttamente i dati:
    $o_db = new c_db('oracle''hostdioracle''nameuser''password''nomedeldb'); 

  7. #17
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    724
    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    ma a seconda dei casi potrebbe effettuare un rallentamento? se dopo aver inserito i dati fai la redirect significa che mandi la richiesta al browser di richiedere altro...quindi c' è uno scambio di battute in più...o no?
    I redirect sono delle volte utili e necessari.

    Pensa solo ad una situazione dove vuoi inviare un link ad un utente in modo che si connetta al�home page e vorresti sapere se quell'iutente ha cliccato su quel link.
    Crei un codice univoco in una tabella associata all'utente e invii il link specifico all'utente via email.
    A quel punto l'utente ci clicca, arriva ad una pagina che NON restituisce output ma tu, tramite il link ricevi il parametro con il codice univoco, guardi a che utente � associato e poi lo rindirizzi alla home page.
    L'utente avr� l'impressione di essersi connesso all'homepage ma tu saprai che lui ha cliccato sul link che gli hai inviato via email.

    Il problema sostanziale di usare un redirect (header), � quando la logica php e html sono mescolate in un unico file.
    Basta un punto o uno spazio e l'header produce un errore, proprio perch� questo punto o questo spazio generer� un output sul navigatore dell'utente.

    Quindi se tu inizi la tua pagina php iniziando con:
    <?php
    e non ti accordi che '� uno spazio o un return, e subito dopo utilizzi un header, questo produce un errore!

    Questo � uno dei motivi per cui una classe, in php, non bisogna mai chiuderla con il tag di chiusura di php, ovvero:
    ?>
    ma lasciarla sempre "aperta", proprio perch� se ci dovesse essere uno spazio dopo il tag di chiusura, potresti generare un errore in un ipotetica istruzione header.

    Come ti hanno gi� detto sopra, e sempre meglio separare la logica del codice html da quello php.
    Se tu sai che in quel punto non si produrr� alcun output, avrai la certezza di non commenttere errori.
    Tutto avviamente dipende da come strutturi il tuo codice!
    Dai un'occhiata al pattern MVC.

    Roberto
    Ultima modifica di robynosse; 21-04-2016 a 01:05

  8. #18
    Questo � uno dei motivi per cui una classe, in php, non bisogna mai chiuderla con il tag di chiusura di php, ovvero:
    ?>
    ma lasciarla sempre "aperta", proprio perch� se ci dovesse essere uno spazio dopo il tag di chiusura, potresti generare un errore in un ipotetica istruzione header.
    Lo sai che che forse mi hai risolto un problemone? Essendo abbastanza "capra" a programmare ogni tanto l' errore mi viene fuori nonostante io ci metta il massimo impegno ad evitare output html e redirect di php. In effetti mi è capitato di leggere codice altrui dove il tag finale di php non viene chiuso. Grazie delle info

  9. #19
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    724
    Mi fa piacere averti aiutato!

    Io l'ho provato sulla mia pelle, anche perché potresti avere il caso in cui, se la macchina non è in produzione ed effettui un redirect, il redirect avviene senza problemi, nonostante l'errore, e non te ne accorgi, perché non fai in tempo a vederlo, in quanto sulla macchina di test non hai abilitato lo "stop" in caso di errori!
    Passi poi sulla macchina di produzione e inizi a vedere la pagina bianca.
    Alla fine ho scoperto che c'era uno spazio dopo il tag di chiusura ?> di una classe php che mi generava quindi un output prima dell'esecuizione della linea header, e non faceva proseguire il programma, tutto il resto era corretto!

    Da allora mi guardo bene dal chiudere una classe PHP!!!

    Ciao.

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