Oppure

Loading
10/05/12 14:54
giocala88
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

$query = mysql_query("SELECT val1, val2 AS val22 ... FROM nome_tb");

function values_query($query) {
		
		while($rows = mysql_fetch_array($query)) {
		
			$keys = array_keys($rows);
			
			$values = array_values($rows);
			
			$array[] = (
							array(
							
									"$keys" => "$values"
								  )
						   );
		}
		
		echo $array[0]['val1'];
}


Con questo codice ottengo una Notice: Undefined index: val1 in ...
Sapreste spiegarmi perchè? Dove sbaglio? Grazie
aaa
10/05/12 15:31
freenet
Puoi prelevare i valori usando

$rows['tuocampo']


Quindi al posto di "tuocampo" inserisci il nome del campo che vuoi prelevare.
Ultima modifica effettuata da freenet 10/05/12 15:33
aaa
10/05/12 16:18
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 ...
aaa
10/05/12 18:28
freenet
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?
aaa
10/05/12 18:39
Bonny
prova ad usare il parametro opzionale di:
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:
php.net/manual/en/…
aaa
26/05/12 10:14
giocala88
Scusate il ritardo ragazzi. Vi spiego cosa intendo fare ...
Allora supponiamo di avere la seguente lettura query mysql

$query = mysql_query("SELECT val1, val2 AS val22 ... FROM nome_tb");

function values_query($query) {

                while($rows = mysql_fetch_array($query)) {

                        $val1 = $rows['val1'];
                        $val22 = $rows['val22']; ....
                        
                        // creo un array 
                        $array[] = (array ( "val1" => "$val1", "val22" => "$val22" ... ) );

                        return($array);
}

// lettura ok
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:

$query = mysql_query("SELECT val1, val2 AS val22 ... FROM nome_tb");

function values_query($query) {

                while($rows = mysql_fetch_array($query)) {

                        $keys = array_keys($rows);
                        $val = array_values($rows); ....
                        
                        // creo un array 
                        $array[] = (array ( "$keys" => "$val" ) );

                        return($array);
}

//lettura error: Notice: Undefined index: val1 in ...
echo $array[0]['val1'];


Questa funzione non va ... sapreste dirmi perchè? Cmq spero di essere stato chairo ;)
aaa
26/05/12 14:49
giocala88
Allora ragazzi dopo prove su porve sono riuscito finalmente nel mio intento di craere quello che volevo ... Lo posto per vedere cosa ne pensate ;)

	$query = mysql_query("select * from table"); 
	 
              // funzione generale che volevo creare
	function estrazione($res) {
	
		// ciclo gli elementi          
		while($row = mysql_fetch_assoc($res)) {  
			
			// estraggo le chiavi
			$keys = array_keys($row);
			
			// max num elementi array di chiavi
			$max = count($row);
			
			// ciclo gli elementi delle chiavi
			for($i=0; $i<$max; $i++) {
			
				// array di valori per chiave
				$values[$i] = $row[$keys[$i]];
						
				// array con chiavi e valori estratti
				$array[] = array(
									"$keys[$i]" => "$values[$i]"
								);
			}
		}
		
		// ritorno l'array di valori
		return($array);
		
	}
	
	$a = @estrazione($query, $array);
	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 ;)
aaa