Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2001
    residenza
    Roma
    Messaggi
    91

    Funzione per richiamare nome utente

    Funzione per richiamare nome utente
    Ho un codice dove il nome cognome o ragione sociare del cliente viene richiamate molte volte.
    Mi sembrava logico scrivere una funzione che mi ritorni queste informazioni in base al ID
    Solo che all'interno della funzione non riesco ad estrare i dati:

    codice:
    codice:
    function denom($u)        
    {
            $stmt = $indexPage->runQuery("SELECT * FROM Utenti WHERE id=:id");
            $stmt->execute(array(":id"=>$u));
            $usr = $stmt->fetch(PDO::FETCH_ASSOC);
            $eDenom = (!empty($usr['ragione_soc'])) ? $usr['ragione_soc'] : $usr['name']." ".$usr['nome'];           
         return $eDenom;    
    }
    In teoria sarebbe una cosa semplice, ma sicuramente mi scappa qualcoa.
    In qualsiasi pagina la richiamassi, mi ritorna error 500.
    Il problema dovrebbe essere nel connettersi al DB, perché se salto la connessione non da errore, restituendo un empty. Domanda: all'interno della funzione posso eseguire la query così come nell'esempio ?
    Ottima scelta

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,038
    Dipende da diverse cose, ad esempio se da dentro la funzione $indexPage è visibile, così come se risulta esistente una connessione.

    Comunque se nella logica della tua applicazione ti serve più volte il nome dello stesso cliente e ogni volta per ottenerlo interroghi il db, potrebbe essere necessario rivedere la logica stessa perché potrebbe convenirti mettere tale nome in una qualche variabile ed evitarti tutti quegli accessi al db che rallentano.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2001
    residenza
    Roma
    Messaggi
    91
    Spiego il problema:
    Gestionale di un laboratorio di assistenza; diversi clienti portano diversi dispositivi, quindi devo associare ad ogni dispositivo il suo proprietario. quindi il cliente non è quasi mai lo stesso, dipende dal numero di dispositivi che ha riparato nel laboratorio.
    Codice PHP:
        $stmt $indexPage->runQuery("SELECT * FROM Riparazioni WHERE lab=:lab ORDER BY id DESC LIMIT 50");
        
    $stmt->execute(array(":lab"=>$SESSION['lab']['id']));
        while(
    $row $stmt->fetch(PDO::FETCH_ASSOC))
        {
            
    $nmCliente $indexPage->runQuery("SELECT id, ragione_soc, name, nome FROM Utenti WHERE id=:id");
            
    $nmCliente->execute(array(":id"=>$row['usr']));
            
    $client $nmCliente->fetch(PDO::FETCH_ASSOC);
            
    $denomClient = (empty($client['ragione_soc'])) ? $client['name']." ".$client['nome'] : $client['ragione_soc'];
            ......................
            
    Qui ho lo stato della riparazionei vari interventi eseguiti
            In diverse pagine 
    (riparazione conclousa in arrivoin lavorazionein attesa di ritirola storia si ripete con molti dispositivi e nominativi
            Per adesso ho lo stesso codice per ciascuna pagina
    .
            ......................
          } 
    Funziona tutto bene, ma lo stesso codice viene ripetuto ogni volta che ho bisogno del nome/ragione sociale del cliente.

    $indexPage si connette per tutte le volte che ho bisogno, ma non nella funzione.
    Per capirlo meglio: https://demo.fixhub.it
    subito dopo login c'è un esempio chiaro (associazione nomi ai dispositivi) di quello che mi servirebbe.
    Ottima scelta

  4. #4
    Utente di HTML.it L'avatar di ninja72
    Registrato dal
    May 2020
    residenza
    -
    Messaggi
    132
    prova con questo approccio, poi ovviamente fai le modifiche necessarie.

    codice:
    function denom()
    {
        $eDenom = [];
        // variabili d'esempio
        $usr['ragione_soc'] = 'azienda1';
        $usr['nome'] = 'nome1';
        $usr['cognome'] = 'cognome1';
    
        $eDenom = [
            'ragione_soc' => $usr['ragione_soc'],
            'nome' => $usr['nome'],
            'cognome' => $usr['cognome']
        ];
        return $eDenom;
    }
    
    echo denom()['ragione_soc'];
    echo denom()['nome'];
    echo denom()['cognome'];

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2001
    residenza
    Roma
    Messaggi
    91
    Quote Originariamente inviata da ninja72 Visualizza il messaggio
    prova con questo approccio, poi ovviamente fai le modifiche necessarie.

    codice:
    function denom()
    {
        $eDenom = [];
        // variabili d'esempio
        $usr['ragione_soc'] = 'azienda1';
        $usr['nome'] = 'nome1';
        $usr['cognome'] = 'cognome1';
    
        $eDenom = [
            'ragione_soc' => $usr['ragione_soc'],
            'nome' => $usr['nome'],
            'cognome' => $usr['cognome']
        ];
        return $eDenom;
    }
    
    echo denom()['ragione_soc'];
    echo denom()['nome'];
    echo denom()['cognome'];
    Il mio problema è che non mi trova l'utente, non la definizione in sè.
    Quindi anche inviando ID utente, non riesce ad estrarlo dal DB per qualche motivo.
    dove prenderei i dati nel tuo esempio ?

    E' questo pezzo qui che ha problemi nella funzione:
    Codice PHP:
    Codice PHP:
    function denom($u)
    {
            
    $nmCliente $indexPage->runQuery("SELECT id, ragione_soc, name, nome FROM Utenti WHERE id=:id");
            
    $nmCliente->execute(array(":id"=>$u));
            
    $client $nmCliente->fetch(PDO::FETCH_ASSOC); 


    Funziona tutto se lo ripeto per ogni pagina, ma se devo creare una funzione non si connette al DB.
    $u arriva correttamente, togliendo l'estrazione mi ritorna ID utente senza problemi.
    Ottima scelta

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.