Problema con creazione array

camionistaxcaso

Nuovo Utente
14 Mag 2015
11
0
1
Ciao a tutti. Ho creato un metodo che passandogli una variabile con il codice sql, (SELECT campo1, campo2 FROM tabella) esegue una select su una tabella, e crea un' array con i valori trovati eseguendo poi il return della stessa. L' array creata, la passo poi ad un altro metodo che crea delle options per una select html:

PHP:
//f_options_date() crea l' array 

 public function f_options_date($sql)
      {  $var = array();
        //Risultato della query 
        $result = mysqli_query($this->_link, $sql);
        //Creo array con nomi colonne 
        $get_column = $result->fetch_fields();
        foreach ($get_column as $column)
         {
           $columns[] = $column->name; 
         }
        //eseguo il ciclo while e creo l' array       
        while($row = mysqli_fetch_array($result, MYSQL_ASSOC))
        {     

              $var[] = array($row[$columns[0]], $row[$columns[1]]);
              
        }
        return $var;
     }

Quindi "da fuori" richiamo il metodo valorizzando una variabile e passandola al metodo che crea la select:
PHP:
//memorizzo l' array
$type = $o_db->f_options_date("SELECT id_type, info FROM t_site_type");
//passo l' array al metodo che crea la select html e creo la select

$myselect = $o_html_form->f_get_select('select1', 'type', 'myclass', $type);
Questo è il metodo che crea la select html:
PHP:
public function f_get_select($w, $name, $class, $arr)
  {  
     //Creo un' array contenente vari gruppi di input e le loro caratteristiche
     $attributes_list = array(  
                                
                                
                                "select1"      => array("name" => $name,
                                                        "class"=> $class
                                                        )
                                //Poi ne creo altri
                                 
                               
                              );
            
     $a = "<select class=\"".$attributes_list[$w]["class"]."\" name=\"".$attributes_list[$w]["name"]."\"> \n";
     //Elenco le options
     foreach($arr as $key => $value)
     {    
       for($i=0; $i<count($key); $i++)
       {
          //Creo le options 
          $a .= "<option value='".$value[0]."'>" .$value[1]. "</option>\n";
          
       }  
     }          
     $a .= "</select> \n";
     return $a;
                
  }
Insomma funziona tutto però lo posso utilizzare solo per creare select poichè, come potete vedere dal codice, nel metodo f_options_date() alla riga:
$var[] = array($row[$columns[0]], $row[$columns[1]]);
creo l' array con gli elementi che mi servono indicando manualmente l' indice dell' array $columns.
Io vorrei fare una cosa più variabile Ho provato a fare cosi nel while ma non funziona:

PHP:
while($row = mysqli_fetch_array($result, MYSQL_ASSOC))
        {     
              //Per quante colonne ha trovato
             for($i=0; $i<count($columns); $i++)
              {
                $var[] =  $row[$columns[$i]];
                
              }
              
              
        }
Mi da errore nel metodo f_get_select() alla riga:
$a .= "<option value='".$value[0]."'>" .$value[1]. "</option>\n";
Notice: Uninitialized string offset: 1 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71
immagino venga fuori un' array non compatibile o chissà che cosa...
Grazie 1000 a chi mi aiuta.
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, $row è già un array puoi fare semplicemente
PHP:
$var = array();
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
    $var[] = $row;
}
return $var;
e non ti serve nemmenno il fetch_fields visto che i nomi delle colonne non li usi al di fuori del metodo
 

camionistaxcaso

Nuovo Utente
14 Mag 2015
11
0
1
Ciao, $row è già un array puoi fare semplicemente
PHP:
$var = array();
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
    $var[] = $row;
}
return $var;

Mi sa che hai ragione...mi viene fuori una cosa di questo tipo e mi pare che vada bene:
array(2) { [0]=> array(2) { ["id_type"]=> string(1) "1" ["info"]=> string(11) "sede legale" } [1]=> array(2) { ["id_type"]=> string(1) "2" ["info"]=> string(13) "punto vendita" } }

solo che non mi crea le options nel metodo f_get_select() quello che crea la select, mi da questa sbarrica di notice:
Notice: Undefined offset: 0 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

Notice: Undefined offset: 1 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

Notice: Undefined offset: 0 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

Notice: Undefined offset: 1 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

Notice: Undefined offset: 0 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

Notice: Undefined offset: 1 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

Notice: Undefined offset: 0 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

Notice: Undefined offset: 1 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

Notice: Undefined offset: 0 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

Notice: Undefined offset: 1 in C:\Program Files\xampp\htdocs\new_bs_site\class\c_html_form.php on line 71

nella riga 71 come puoi vedere nel precedente post c' è:
$a .= "<option value='".$value[0]."'>" .$value[1]. "</option>\n";
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
puoi modificare gli indici con i nomi dei campi
PHP:
$a .= "<option value='".$value['id_type]."'>" .$value['info]. "</option>\n";
oppure togliere il parametro MYSQL_ASSOC dal fetch in modo che ti restituisca l'indice numerico del campo anzichè il nome
 

camionistaxcaso

Nuovo Utente
14 Mag 2015
11
0
1
puoi modificare gli indici con i nomi dei campi
PHP:
$a .= "<option value='".$value['id_type]."'>" .$value['info]. "</option>\n";
oppure togliere il parametro MYSQL_ASSOC dal fetch in modo che ti restituisca l'indice numerico del campo anzichè il nome

Quello lo so anch' io, volevo farlo in maniera variabile proprio per riutilizzare il metodo anche x altro, è l' oggetto della discussione.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
oppure togliere il parametro MYSQL_ASSOC dal fetch in modo che ti restituisca l'indice numerico del campo anzichè il nome
prova cosi
PHP:
mysqli_fetch_array($result,MYSQLI_NUM)
 
Discussioni simili
Autore Titolo Forum Risposte Data
Emix Problema con creazione form css/mobile HTML e CSS 3
C [PHP] Problema con creazione csv PHP 3
R Problema con la creazione file PHP 2
P Problema creazione form con ajax PHP 1
L problema creazione query con campo float PHP 2
F Problema formattazione data e creazione array con nuove date Javascript 2
L problema creazione template con guida mrwebmaster.it WordPress 0
G Problema con la creazione di una tabella form PHP 9
LaKanka Problema creazione thumb solo con alcune immagini PHP 5
H Problema creazione sitemap con A1 sitemap generator Web Server 1
Danilo82 Problema con sito web in fase di creazione HTML e CSS 3
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 4
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
Tommy03 Problema con z-index HTML e CSS 3
M Problema inserimento parole con apostrofo nel db PHP 5
C Problema con dati meteo xml XML 1
S Problema con infrarossi videocamera IP Cam e Videosorveglianza 1
V Problema con librerie allegro5 c++ C/C++ 1
M Problema con php per calcolo costo percentuale PHP 7
S Problema con mysqli_num_rows PHP 18
grgfede Problema javascript con aruba Javascript 1
M Problema con visibility e radio button Javascript 2
Marti1! Problema con casella mail cancellata Posta Elettronica 3
L [PHP] Problema con Telegram PHP 1
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
S Strano problema con i title su Google SEO e Posizionamento 3

Discussioni simili