Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Discussione: Problema con array

  1. #1

    Problema con array

    Ciao a tutti, in un metodo, dovrei fare il return di 1 di 2 array in base al parametro passato, una ritorna, l' altra invece non mi si valorizza nonostante che le stampo e vedo che sono state valorizzate tutte e 2:

    Codice PHP:
    public function f_array_value_option($query_result$w)     
    {         
        while (
    $row mysqli_fetch_array($query_resultMYSQLI_ASSOC))         
         {          
           
    $id_contract_in=$row["id_contracts"];          
           
    $company_name=$row["company_name"];          
           
    $info_in=$row["info"];          
           
    $hourly_cost_in=$row["hourly_cost"];                      
           
    $option_id[] = $id_contract_in;                    
           print  
    $option_id[0]; //è valorizzata                            
           
    $option_name[] = $company_name." - ".$info_in." - Euro ".$hourly_cost_in;                    
           print  
    "<br>".$option_name[0]; //è valorizzata                   
        
    }               

       
    //eseguo il return in base al parametro $w
       
    if($w == "id")         
       {            
          return 
    $option_id//questa ritorna         
       
    }           

       elseif(
    $w == "name")         
       {           
          return 
    $option_name//mentre questa no (Undefined variable: option_name)         
       
    }      

    Grazie a tutti.

  2. #2
    up ;-)

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Sicuro che passi nel ciclo while ?

    Un consiglio. Sempre inizializzare le variabili.

    Codice PHP:
    public function f_array_value_option($query_result$w)     
    {   
        
    $option_id = array();
        
    $option_name = array();
          
        while (
    $row mysqli_fetch_array($query_resultMYSQLI_ASSOC))         
         {          
           
    $id_contract_in=$row["id_contracts"];          
           
    $company_name=$row["company_name"];          
           
    $info_in=$row["info"];          
           
    $hourly_cost_in=$row["hourly_cost"];                      
           
    $option_id[] = $id_contract_in;                    
           print  
    $option_id[0]; //è valorizzata                            
           
    $option_name[] = $company_name." - ".$info_in." - Euro ".$hourly_cost_in;                    
           print  
    "<br>".$option_name[0]; //è valorizzata                   
        
    }               

       
    //eseguo il return in base al parametro $w
       
    if($w == "id")         
       {            
          return 
    $option_id//questa ritorna         
       
    }           

       elseif(
    $w == "name")         
       {           
          return 
    $option_name//mentre questa no (Undefined variable: option_name)         
       
    }      

    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Verifica cosa recupera la query quando $w vale 'name', se non prende niente non entrerai mai nel while e l'array $option_name non verrà inizializzato.

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Altro consiglio. Stai facendo oop. Se uno usa il tuo codice potrebbe non passare un valore corretto per $w. Quindi fatti un paio di metodi.

    Codice PHP:
    public function f_array_value_option_byId($query_result) {
      return 
    $this->f_array_value_option($query_result,"id");   
    }
    public function 
    f_array_value_option_byName($query_result) {
      return 
    $this->f_array_value_option($query_result,"name");   

    Poi metti f_array_value_option private.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Ciao e scusa se sono sparito ma ero a risolvere altre storie...ho dovuto cambiare strategia, adesso sto cercando di creare un metodo a cui passo:
    - risultato della query
    - array con i nomi delle colonne dove prendere il dato
    Quindi vorrei andare a popolare una variabile array con l' insieme dei risultati trovati..ma ovviamente non funziona, mi dice che l' array non viene settata:

    Codice PHP:
    public function f_while_fetch_array2($query_result$column)      
    {        
       
    //Numero di risultati        
       
    $num mysqli_num_rows($query_result);        
       
    //Numero di colonne        
       
    $numC count($column);         
       
    //array da popolare
       
    $return = array();                   

       while (
    $row mysqli_fetch_array($query_resultMYSQLI_ASSOC))                  
       {             
           for(
    $i=0$i<$numC$i++)            
           {                      
               
    $return[] = " - ".$row[$column[$i]]." - ";                     
            }         
        }        
        return 
    $return;        

    Grazie

  7. #7
    Ma il foreach cosa ti ha fatto di male?

    Questo codice funziona (ed e' piu' leggibile e non sembra C scritto in PHP), anche se e' strano estrarre dati da diverse colonne di diversi record e metterli tutti in fila in un array, se non funziona c'e' qualche problema nella query:

    Codice PHP:
    function get_array($result$columns) {
        
    $return = array();

        while (
    $row mysqli_fetch_array($resultMYSQLI_ASSOC)) {
            foreach (
    $columns as $column) {
                
    $return[] = $row[$column];
            }
        }

        return 
    $return;


  8. #8
    Niente non ne vuole sapere...ho anche provato, all' interno della funzione a stampare i valori dell' array $columns e i valori arrivano tutti. Ho provato a fare un while fuori dalla funzione dove creo la $result col risultato della query e mi fa la stessa cosa, quindi il problema pare proprio nel risultato della query, l' ho stampata ed eseguita in phpmyadmin e funziona...la query è questa:

    SELECT id_jobs, fp_number, name, surname, data_start, data_end, address, location FROM v_contracts_jobs WHERE id_contracts = 1 ORDER BY data_start

    v_contracts_jobs è una vista creata in phpmyadmin, potrebbe essere che da problemi?

    [edit]
    se faccio un var_dump di $result mi da:
    object(mysqli_result)#4 (5) { ["current_field"]=> int(0) ["field_count"]=> int(8) ["lengths"]=> NULL ["num_rows"]=> int(2) ["type"]=> int(0) }
    Ultima modifica di camionistaxcaso; 05-05-2015 a 19:39

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non capisco cosa faccia il tuo codice. Che cosa c'è nell'array $column ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Non capisco cosa faccia il tuo codice. Che cosa c'è nell'array $column ?
    $columns è un array che contiene i nomi delle colonne dalle quali estrarre il dato per popolare l' array $return
    Ultima modifica di camionistaxcaso; 06-05-2015 a 00:16

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.