Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    [PHP-MYSQL] Connessione al db dentro ad una function

    Ciao a tutti,
    il titolo del 3D fa riferimento all'errore che ipotizzo possa essere la causa del mio problema.
    Però, potrebbe essere tutt'altro

    La struttura del sito web che sto sviluppando, prevede un index.php dove vengono ridirezionate tutti i link presenti nelle pagine e costruito di volta in volta le varie strutture.

    In questo caso avevo bisogno che nel file/link prodotti.php richiamassi la funzione estraiprodotti che estraesse appunti i prodotti dal db.

    Questo è una parte del codice del file "prodotti.php"
    Codice PHP:
    ...
                                <div id="primo">
                                    <?
                                        estraiprodotti
    ('3','6');
                                    
    ?>
                                </div>
                                <div id="secondo">
                                    <?
                                        estraiprodotti
    ('3','7');
                                    
    ?>
                                </div>
                                <div id="terzo">
                                    <?
                                        estraiprodotti
    ('3','8');
                                    
    ?>
                                </div>
    ...
    La chiamata alla funzione estraiprodotti, la eseguo nell' index.php, che però già prevede una connessione al db e quindi ho dovuto replicare tale connessione nella funzione... così...

    Codice PHP:
    <?
        session_start
    ();

        include(
    "config.inc.php");

        
    $mysql = new mysqli($db_host,$db_user,$db_password,$db_name);

        if(!
    $mysql)
        {
            die(
    "Errore di connessione al database, impossibile procedere");
        }

        function 
    estraiprodotti($coditipoprod,$coditiposubbprod)
        {
            include(
    "config.inc.php");

            
    $mysql = new mysqli($db_host,$db_user,$db_password,$db_name);
    ...
    Il problema è che in locale il tutto funziona perfettamente (mi esegue le varie select) mentre in produzione no.
    Se tolgo la funzione e le chiamate alla stessa, non ci sono problemi in produzione, ovvero non posso estrarre i dati ma non mi da errore (impossibità di caricare la parte restande del codice html del file prodotti.php)

    E' questo il problema e come posso risolverlo?

    Grazie in anticipo per qualsiasi suggerimento

    ps.
    PHP
    in locale ho PHP Version 5.2.6
    in produzione la versione 5.2.8

    MySql
    locale 5.1.34-community
    produzione è 5.0.87-community-log

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    "Il problema è che in locale il tutto funziona perfettamente (mi esegue le varie select) mentre in produzione no."

    e che errore ti da ?
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da agenti
    "Il problema è che in locale il tutto funziona perfettamente (mi esegue le varie select) mentre in produzione no."

    e che errore ti da ?
    Non mi esegue la parte restante del codice html della pagina prodotti.php, appena eseguo una chiamata alla funzione :master:

    Ad esempio... non va oltre la chiusura del div "primo"

    Codice PHP:
                                <div id="primo">
                                    <?
                                        estraiprodotti
    ('3','6');
                                    
    ?>
                                </div>
                                <div id="secondo">
                                    <?
                                        estraiprodotti
    ('3','7');
                                    
    ?>
                                </div>

  4. #4
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    estraiprodotti($coditipoprod,$coditiposubbprod,$my sql)

    {

    'esegui query


    }

    //passa la connessione come variabile..

    ma se non gestisci gli errori non saprai mai cosa accade..
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  5. #5
    Sicuro di non avere limiti alle connessioni contemporanee al DB, in produzione?
    Comunque semplicemente risolvi togliendo la connessione al db dalla funzione. Puoi farlo in vari modi:
    - Usi una connessione globale;
    - Passi la connessione come argomento;
    - Metti la function in una classe (Model-like, insomma) che ha come attributo la connessione;

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da FrancescoCiracì
    Sicuro di non avere limiti alle connessioni contemporanee al DB, in produzione?
    Comunque semplicemente risolvi togliendo la connessione al db dalla funzione. Puoi farlo in vari modi:
    - Usi una connessione globale;
    - Passi la connessione come argomento;
    - Metti la function in una classe (Model-like, insomma) che ha come attributo la connessione;
    Grazie per la risposta.
    Nel secondo caso, mi da errore in locale.

    Fatal error: Call to a member function query() on a non-object in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\XXXXX\index.php on line 19
    dove a riga 19, c'è

    Codice PHP:
            $anagprodgene $mysql->query("SELECT codi_prod,è 
    La 3^ opzione non l'ho capita

    Grazie ancora per i consigli.

    ps. come faccio a capire quale sono il numero limite di connessioni del db di produzione?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da FrancescoCiracì
    ...
    - Usi una connessione globale;
    ...
    mettendola global, in locale mi funziona, mentre in produzione no. Però non dà l'errore indicato prima, ma "solo" non mi esegue la select

    Codice PHP:
    <?
        session_start
    ();

        function 
    estraiprodotti($coditipoprod,$coditiposubbprod)
        {
            global 
    $mysql;

            include(
    "config.inc.php");

            
    $mysql = new mysqli($db_host,$db_user,$db_password,$db_name);

            
    $anagprodgene $mysql->query("SELECT codi_prod,

  8. #8
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    ma hai visto se il tuo server gestisce "mysqli" ?

    in ogni caso secondo me usi male la connessione...
    la apri ogni volta che richiami la funzione.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da agenti
    ma hai visto se il tuo server gestisce "mysqli" ?

    in ogni caso secondo me usi male la connessione...
    la apri ogni volta che richiami la funzione.
    Si', credo anche io che sia questo il problema. Ma considerando che non vorrei cambiare la parte che estrae i dati e costruisce la pagina finale (sarebbe troppo lungo costruire una sola select per l'estrazione), che soluzione potrei adottare?

    Grazie ancora per tutti i suggerimenti

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    up

    scusate, ma ancora non ho trovato una soluzione.


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