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

    Connessione da parte di una funzione

    Salve a tutti!
    Sono uno dei tanti newbie del mondo del PHP.

    Ho installato in locale PHP, Apache, MySQL e PHPMyAdmin.
    Ho iniziato a lavorarci sopra, importando un database, correttamente inserito, dal mondo Access.

    Ho creato una pagina PHP in cui mi connetto al database, da qui richiedo una tabella, ed effettuando una query la riporto sulla pagina, realizzando una tabella dinamica... TROPPO FORTE!!!

    Ora... dato ke ho diversi database, una per ogni determinato tipo di pagina, volevo creare una funzione per la connessione a MySQL, di questo tipo:

    codice:
    function connessione($hst, $usr, $pwd, $dbase)
    {
       $db = mysql_connect($hst, $usr, $pwd);
       if ($db == FALSE)
           die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
           mysql_select_db($dbase, $db)
           or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    
    }
    questa è salvata sul file config.inc.php

    sulla pagina list.php, invece, ho:

    connessione('localhost', 'user', 'password', 'abandon');

    Fin qui, pare che non mi da problemi, poichè i problemi me li da qui:

    codice:
    $query = "SELECT id,Nome,Genere,Tema,Screenshot FROM Lista ORDER BY Nome";
    $result = mysql_query($query, $db);
    L'errore che mi da è:

    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in F:\centurion\games\list.php on line 14

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:\centurion\games\list.php on line 16

    Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in F:\centurion\games\list.php on line 36


    Gli ultimi due errori sono conseguenza del primo, e questo l'ho capito. Il problema sta nel fatto che non vede le variabili $query, $db. Dato che esegue prima il comando connessione, la connessione al database avviene, ma poi non vede le variabili.


    Qual'è la soluzione in questo MAGICO linguaggio?



    Grazie per il vostro aiuto!
    the Key of Lost Deep E-Dreams
    L'incomprensibile mondo nascosto.
    La Sottile linea tra Immaginazione e Realtà

  2. #2
    codice:
    function connessione($hst, $usr, $pwd, $dbase)
    {
       $db = mysql_connect($hst, $usr, $pwd);
    lo scope è quello della funzione!

    codice:
    function connessione($hst, $usr, $pwd, $dbase)
    {
       $GLOBALS['db'] = mysql_connect($hst, $usr, $pwd);
    <?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
    ' socio fondatore e membro del direttivo del GrUSP ',"\n",
    ' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
    ' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>

  3. #3
    Quindi non dovrò più usare semplicemente $db, ma GLOBALS['db'] dentro la funzione, mentre nella pagina PHP posso usare direttamente $db.

    Correggimi se sbagio!


    Grazie per la rapidità...


    VVoVe:


    the Key of Lost Deep E-Dreams
    L'incomprensibile mondo nascosto.
    La Sottile linea tra Immaginazione e Realt&agrave;

  4. #4
    Originariamente inviato da klode
    Quindi non dovrò più usare semplicemente $db, ma GLOBALS['db'] dentro la funzione, mentre nella pagina PHP posso usare direttamente $db.

    Correggimi se sbagio!
    non correggo :-P

    una alternativa (+ elegante) è far ritornare $db dalla funzione ed assegnarlo quando la richiami ... così non inquini lo scope globale
    <?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
    ' socio fondatore e membro del direttivo del GrUSP ',"\n",
    ' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
    ' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>

  5. #5
    era la soluzione a cui ero arrivato io, ma pensando che poi la query l'avrebbe fatta sempre con le due variabili mi chiedevo come avrei potuto portare fuori sia $dbase che $db...

    Ah... no! che stupido...

    hai ragione...


    quindi dovrei mettere ai piedi della funzione:

    codice:
    ...
    return $db;
    }

    e poi sulla pagina PHP:

    codice:
    $database = connessione ('localhost', 'user', 'pwd', 'abandon');
    giusto?
    the Key of Lost Deep E-Dreams
    L'incomprensibile mondo nascosto.
    La Sottile linea tra Immaginazione e Realt&agrave;

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.