Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Problema con stampa arrya_keys e array_values ...
Forum - PHP - Problema con stampa arrya_keys e array_values ...

Avatar
giocala88 (Normal User)
Expert


Messaggi: 243
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 16:54
Giovedì, 10/05/2012
Salve ragazzi come da titolo ho un piccolo problema con una funzione che ho implementato. In poche parole ho una select su una query e vorrei prelevare con le rispettive funzioni in php array_keys e array_values le chiavi e di valori nella lettura della query. Riporto il codice

Codice sorgente - presumibilmente Php

  1. $query = mysql_query("SELECT val1, val2 AS val22 ... FROM nome_tb");
  2.  
  3. function values_query($query) {
  4.                
  5.                 while($rows = mysql_fetch_array($query)) {
  6.                
  7.                         $keys = array_keys($rows);
  8.                        
  9.                         $values = array_values($rows);
  10.                        
  11.                         $array[] = (
  12.                                                         array(
  13.                                                        
  14.                                                                         "$keys" => "$values"
  15.                                                                   )
  16.                                                    );
  17.                 }
  18.                
  19.                 echo $array[0]['val1'];
  20. }



Con questo codice ottengo una Notice: Undefined index: val1 in ...
Sapreste spiegarmi perchè? Dove sbaglio? Grazie  

PM Quote
Avatar
freenet (Member)
Newbie


Messaggi: 20
Iscritto: 02/05/2012

Segnala al moderatore
Postato alle 17:31
Giovedì, 10/05/2012
Puoi prelevare i valori usando

Codice sorgente - presumibilmente Plain Text

  1. $rows['tuocampo']



Quindi al posto di "tuocampo" inserisci il nome del campo che vuoi prelevare.

Ultima modifica effettuata da freenet il 10/05/2012 alle 17:33


"Nulla è per sempre, tranne il periodo di prova di winrar" cit.
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 243
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 18:18
Giovedì, 10/05/2012
Lo so che posso prelevare i campi in quel modo, ma quello che sto cercando di creare è una funzione che sia "più generale" possibile ...

PM Quote
Avatar
freenet (Member)
Newbie


Messaggi: 20
Iscritto: 02/05/2012

Segnala al moderatore
Postato alle 20:28
Giovedì, 10/05/2012
Testo quotato

Postato originariamente da giocala88:

Lo so che posso prelevare i campi in quel modo, ma quello che sto cercando di creare è una funzione che sia "più generale" possibile ...



In che senso più generale possibile?


"Nulla è per sempre, tranne il periodo di prova di winrar" cit.
PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 20:39
Giovedì, 10/05/2012
prova ad usare il parametro opzionale di:
Codice sorgente - presumibilmente PHP

  1. array mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )


passando la costante MYSQL_NUM cosi per scorrere l'array usi un indice intero.
(se non sbaglio funziona anche se non lo passi perchè MYSQL_BOTH di default ti permette anche questo)

php manual:
http://php.net/manual/en/function.mysql-fetch-array.php


Bonny
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 243
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 12:14
Sabato, 26/05/2012
Scusate il ritardo ragazzi. Vi spiego cosa intendo fare ...
Allora supponiamo di avere la seguente lettura query mysql

Codice sorgente - presumibilmente Php

  1. $query = mysql_query("SELECT val1, val2 AS val22 ... FROM nome_tb");
  2.  
  3. function values_query($query) {
  4.  
  5.                 while($rows = mysql_fetch_array($query)) {
  6.  
  7.                         $val1 = $rows['val1'];
  8.                         $val22 = $rows['val22']; ....
  9.                        
  10.                         // creo un array
  11.                         $array[] = (array ( "val1" => "$val1", "val22" => "$val22" ... ) );
  12.  
  13.                         return($array);
  14. }
  15.  
  16. // lettura ok
  17. echo $rows[0]['val1'];



La mia domanda è la seguente: è possibile creare una funzione analoga a values_query sfruttando le funzioni array_keys e array_values?Es:

Codice sorgente - presumibilmente Php

  1. $query = mysql_query("SELECT val1, val2 AS val22 ... FROM nome_tb");
  2.  
  3. function values_query($query) {
  4.  
  5.                 while($rows = mysql_fetch_array($query)) {
  6.  
  7.                         $keys = array_keys($rows);
  8.                         $val = array_values($rows); ....
  9.                        
  10.                         // creo un array
  11.                         $array[] = (array ( "$keys" => "$val" ) );
  12.  
  13.                         return($array);
  14. }
  15.  
  16. //lettura error: Notice: Undefined index: val1 in ...
  17. echo $array[0]['val1'];



Questa funzione non va ... sapreste dirmi perchè? Cmq spero di essere stato chairo ;)

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 243
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 16:49
Sabato, 26/05/2012
Allora ragazzi dopo prove su porve sono riuscito finalmente nel mio intento di craere quello che volevo ... Lo posto per vedere cosa ne pensate ;)

Codice sorgente - presumibilmente PHP

  1. $query = mysql_query("select * from table");
  2.          
  3.               // funzione generale che volevo creare
  4.         function estrazione($res) {
  5.        
  6.                 // ciclo gli elementi          
  7.                 while($row = mysql_fetch_assoc($res)) {  
  8.                        
  9.                         // estraggo le chiavi
  10.                         $keys = array_keys($row);
  11.                        
  12.                         // max num elementi array di chiavi
  13.                         $max = count($row);
  14.                        
  15.                         // ciclo gli elementi delle chiavi
  16.                         for($i=0; $i<$max; $i++) {
  17.                        
  18.                                 // array di valori per chiave
  19.                                 $values[$i] = $row[$keys[$i]];
  20.                                                
  21.                                 // array con chiavi e valori estratti
  22.                                 $array[] = array(
  23.                                                                         "$keys[$i]" => "$values[$i]"
  24.                                                                 );
  25.                         }
  26.                 }
  27.                
  28.                 // ritorno l'array di valori
  29.                 return($array);
  30.                
  31.         }
  32.        
  33.         $a = @estrazione($query, $array);
  34.         echo $a[1]['val1']." ".$a[2]['val2']."<br />";



Funziona alla grande! ... però vorrei un vostro parere riguarda la correttezza di questa funzione 'generale' per estrarre i dati da una qualsiasi lettura di una query 8-| ... grazie ancora a tutti ;)  

PM Quote