Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Passaggio array

  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Passaggio array

    La situazione.
    Su una pagina php ho un form nel quale inserire un dato, al submit viene chiamata una seconda pagina, questa prende il dato e invoca una funzione presente in un file incluso in essa.
    La funzione genera una variabile con contenuto casuale ed effettua una query sul database che estrae un record con un valore.

    Cosa voglio fare.
    La funzione deve ritornare sia il valore estratto dal database che la variabile casuale allo script chiamante in modo da poterle stampare a video ed ho pensato di mettere questi due dati in un array e ritornare questo, ma non funziona, risulta NULL.

    Sapendo che il dato dal database viene estratto correttamente e che anche l'array che creo contiene i dati corretti, come posso far ritornare questi due dati allo script chiamante per poterli stampare?

  2. #2
    Posta il codice della funzione.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Nella pagina chiamata dal form c'è questo codice:
    Codice PHP:
    include_once("../include/db_user_lib.php");
    ....
    $risultato recupera_dati($_POST['email'],$tabella_utenti); //recupera_dati è una funzione definita nel file incluso
    ...
    var_dump($risultato); //stampa NULL
    ... 
    La funizione è questa:
    Codice PHP:
    function recupera_dati($email,$tabella_utenti) {

        
    //controllo che l'indirizzo sia nel database
        
    $query "SELECT username FROM ".$tabella_utenti." WHERE email='".$email."'";
        
    $result mysql_fetch_array(mysql_query($query)); //prerndo l'username dell'utente per poi inserirlo nell'email
        
    if(mysql_affected_rows() > 0) {
            
    //genero una nuova password e la imposto
            
    $username $result[0];
            
    $new_pass 'pippo'//ho evitato tutto il codice per la generazione casuale per brevità
            
    $modifica "UPDATE ".$tabella_utenti." SET password='".md5($new_pass)."' WHERE email='".$email."'";
            if(
    mysql_query($modifica)) {
                
    $dati = array($username,$new_pass);
                return 
    $dati;
            }
            else {
                return 
    "errore"//errore nella modifica
            
    }
        }
        else {
            return 
    "non trovato"//indirizzo non trovato
        
    }


  4. #4
    Originariamente inviato da Alhazred
    Nella pagina chiamata dal form c'è questo codice:
    Codice PHP:
    include_once("../include/db_user_lib.php");
    ....
    $risultato recupera_dati($_POST['email'],$tabella_utenti); //recupera_dati è una funzione definita nel file incluso
    ...
    var_dump($risultato); //stampa NULL
    ... 
    La funizione è questa:
    Codice PHP:
    function recupera_dati($email,$tabella_utenti) {

        
    //controllo che l'indirizzo sia nel database
        
    $query "SELECT username FROM ".$tabella_utenti." WHERE email='".$email."'";
        
    $result mysql_fetch_array(mysql_query($query)); //prerndo l'username dell'utente per poi inserirlo nell'email
        
    if(mysql_affected_rows() > 0) {
            
    //genero una nuova password e la imposto
            
    $username $result[0];
            
    $new_pass 'pippo'//ho evitato tutto il codice per la generazione casuale per brevità
            
    $modifica "UPDATE ".$tabella_utenti." SET password='".md5($new_pass)."' WHERE email='".$email."'";
            if(
    mysql_query($modifica)) {
                
    $dati = array($username,$new_pass);
                return 
    $dati;
            }
            else {
                return 
    "errore"//errore nella modifica
            
    }
        }
        else {
            return 
    "non trovato"//indirizzo non trovato
        
    }

    su che sito?

  5. #5
    E' strano che ritorni NULL, pero' per controllare i risultati di una SELECT devi usare mysql_num_rows(), mysql_affected_rows() si usa per le query che "agiscono" (INSERT, DELETE, UPDATE, REPLACE).

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il sito è attualmente in locale, uso XAMPP.
    Se nella funzione, prima del return, metto
    echo $dati[0]." - ".$dati[1];
    i valori vengono correttamente stampati.

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da n0t
    su che sito?
    su www.accessonegatoalfurbettoditurnocheciprova.org


    credo che tu lo conosca
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.