Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 28 su 28

Discussione: funzioni incatenate

  1. #21
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da oly1982
    grazie tante per l'attenzione che mi dedichi!!!
    però non mi è chiaro... se io devo utilizzare un altra funzione ad esempio get_info_utente() dovrò necessariamente aggiornare la pagina (inviando quancosa con post o get) e a quel punto mi dovrò ri-connettere necessariamente...
    intendiamoci: se hai una sola funzione per pagina che chiama la connect_db, il problema non si pone.
    Io ipotizzavo una situazione piu' complessa:
    l'utente fa il login, tu controlli la correttezza con check_login(). Poi se e' tutto ok, mettiamo che gli dici: benvenuto utente, hai 10 nuovi messaggi, lo stato del tuo ultimo ordine e' "Spedito", nel tuo calendario ci sono 3 appuntamenti per oggi, etc.
    Per ognuna/o per piu' di una di queste informazioni (che saranno tutte nella stessa pagina) tu probabilmente chiamerai una funzione, e inevitabilmente chiamerai di nuovo connect_db, che dovra' ricreare la risorsa.

    e cosa è il DRY?
    se magari mi dai un link in lingua italiana sull'argomento...
    http://it.wikipedia.org/wiki/Don't_Repeat_Yourself

  2. #22
    ho capito perfettamente adesso!!!

    mmmm nn ci avevo pensato...

    quindi in pratica devo modificare le mie funzioni con una cosa di questo tipo...

    Codice PHP:
    if(non esiste connessione)
        {
        
    connect_db();
        } 
    come si formula questa condizione?

    e poi devo eliminare i mysql_close(); dalle funzioni e metterlo separato a fine interrogazioni...

    oppure...

    mettere una variabile globale nelle funzioni...

    Ora sto un pò disorientato...

  3. #23
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    In genere puoi aprire la connessione all'inizio del tuo script e poi fare le varie interrogazioni al DB chiamando le tue funzioni.

  4. #24
    mmmm

    impostando error_reporting('E_ALL');

    questa cosa mi crea dei notice... perchè all'interno di una funzione utilizzo variabili che nn fanno parte degli input della funzione richiamata...

  5. #25
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Non devi controllare se la connessione esiste in ogni funzione, devi fare come ha detto Luke70.

    mysql_close() sulle connessioni non-persistenti non serve, viene chiamato automaticamente dal motore alla fine dell'esecuzione dello script.

  6. #26
    ok...

    allora dalle funzioni cancello tutti i connect_db(); e mysql_close();

    quando faccio l'include delle funzioni farò

    connect_db();
    $result = mia_funzione($input);
    mysql_close();

    Per quel che riguarda la mancanza di mysql_close(); ho letto da più parti quel che dici tu ma contestualmente dicono che è "buona norma" fare la chiusura (ancora nn ho capito che significa sta "buona norma")

  7. #27
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    di solito gli sviluppatori hanno un file con i parametri del db e la connessione che includono al inizio di ogni script che opera sul db. Naturalmente potrebbe trattarsi di un file che fa molto altro, ma l'idea e' quella.
    Poi le query funzionano comunque, all'interno delle funzioni o no, e non bisogna piu' pensare alla connessione mysql. mysql_query se non gli si specifica esplicitamente il link, usa l'ultima connessione aperta disponibile, quindi 0 problemi.

    Le eccezioni sono quando si opera contemporaneamete su 2+ database diversi, in tal caso bisogna specificare i link delle connessioni ogni volta che si esegue una query switchando db.

  8. #28
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    [...] ma contestualmente dicono che è "buona norma" fare la chiusura
    questa e' una cazzata, chiamare mysql_close() su connessioni non persistenti serve veramente a nulla. Semplicemente cancelli un identificatore, ma non liberi nemmeno un byte di memoria.

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.