Remember me - Lost password?
m3c__ : about 1 year ago
Stavo per chiedere un aiutino quando sono riuscito a trovare la soluzione "da solo".

Questa funzione permette di navigare i risultati di una query in modo molto preciso, decidendo la riga e la colonna alla quale si vuole accedere.

Solitamente non serve dato che si va di while ma mi è appena capitato una necessità adeguata alla soluzione e volevo condividerla con voi dato che ci ho messo 2 ore a trovarla

code
<?php

$query="select * from table_xyz";
$result = mysql_query($query) or die(mysql_error());
$arr_table_result=mysql_fetch_full_result_array($result);

function mysql_fetch_full_result_array($result)
{
$table_result=array();
$r=0;
while($row = mysql_fetch_assoc($result)){
$arr_row=array();
$c=0;
while ($c < mysql_num_fields($result)) {
$col = mysql_fetch_field($result, $c);
$arr_row[$col -> name] = $row[$col -> name];
$c++;
}
$table_result[$r] = $arr_row;
$r++;
}
return $table_result;
}

echo $arr_table_result[2]['id'];

?>


Thanks to Sebastian K.

Se conoscete soluzioni migliori siete ovviamente invitati a condividerle
from nato a Locarno - vivo a Pantelleria in php - 29 replies
capobecchino : about 1 year ago
ehm! ma a cosa ti serve? non ti basta impostare la query per farti uscire solo quella riga che ti serve?
from Sesto San Giovanni, IT - detail
m3c__ : about 1 year ago
Eh ma a me servono 6 righe, ognuna deve essere visualizzata in un posto diverso della pagina. Dovrei fare 6 query per ottenere la stessa cosa... o dovrei fare un while, contare le righe e piazzare un bel po' di if...
from nato a Locarno - vivo a Pantelleria - detail
capobecchino : about 1 year ago
ehm! scusa eh! 1 query che ti tira fuori le 6 righe, metti tutto in un array e poi fai quel che vuoi ...
from Sesto San Giovanni, IT - detail
m3c__ : about 1 year ago
E non va... faccio la query, creo l'array tramite mysql_fetch_array e poi non posso accedere ai risultati tramite $array[2]['campo']...
from nato a Locarno - vivo a Pantelleria - detail
capobecchino : about 1 year ago
ehm! meemi funziona cosi posta il tuo codice
from Sesto San Giovanni, IT - detail
m3c__ : about 1 year ago
code
$select = mysql_query("SELECT campo FROM table") or die("Errore query database: " . mysql_error());
$rows = mysql_fetch_array($select);
echo $rows[0]['campo'];


E mi stampa la lettera iniziale di "campo" della prima riga... se metto [1] mi stampa la seconda lettera e così via. Ma di navigare fra le righe, non ne vuole sapere.
from nato a Locarno - vivo a Pantelleria - detail
capobecchino : about 1 year ago
hai ragione scusa io stesso uso questo

code

while ($row = mysqli_fetch_assoc($_result)) {$this->rows[] = $row; }


mi butto tutti i risultati in un array e poi ho quello che dici, ho fatto confusione e stavo pensando alla nuova versione di mysqli che stavo guardando in questi giorni in cui nativamente esiste gia questa funzionalità http://www.php.net/manual/en/m...
from Sesto San Giovanni, IT - detail
rejected : about 1 year ago
<brontolo>Non so cosa pensiate voi in merito ma ritengo assolutamente inefficiente e perfino ridicolo che fino a poco tempo fa, per motivi di praticità, fosse necessario il travaso e per giunta manuale dei dati in un array in PiVaccaPi... Oltre all'evidente, inutile e inspiegabile necessità di duplicare in memoria gli stessi dati per poterli trattare in modo "umano"...</brontolo>
from Isola-che-non-c'è - detail
contezero74 : about 1 year ago
@rejected: non è che gli altri framework non lo fanno... solo lo fanno di nascosto e tu non lo vedi e sei bello e contento.
Se vuoi che PHP lo faccia di nascosto gli lo puoi dire... basta che usi una delle tante librerie wrapper attorno all'accesso alle basi di dati e non le funzioni di basso livello (che sono quelle di cui si sta parlando qui).
from Cremona, Lombardia, Italia - detail
m3c__ : about 1 year ago
Uhm capito, quindi alla fine facciamo la stessa cosa ma in modo diverso... uso il metodo che ho trovato dato che non sto programmando ad oggetti .

Sembra utile la mysqli_fetch_all ma non si trova un granché in giro, uhm...

@rejected Personalmente preferisco lavorare con queste imperfezioni di PHP invece di buttarmi su C++ e dover convivere con l'ambiente di lavoro Microsoft, ogni tentativo che ho fatto mi ha fatto allontanare disgustato... non parliamo di VB poi!
from nato a Locarno - vivo a Pantelleria - detail
capobecchino : about 1 year ago
@rejected concordo con te ...
from Sesto San Giovanni, IT - detail
rejected : about 1 year ago
@m3c: il mio discorso non è su quello che dovresti o non dovresti fare, ci mancherebbe. Ognuno fa quello che vuole con quello che vuole. Il mio discorso è sul PHP come linguaggio in sè, qualcosa che ritengo cresciuto in modo casuale, con cose posticce messe qui e là, ecc... Apparentemente è facile da usare ma sotto sotto è una mezza oscenità, informe e ricca di idiosincrasie. Poi io sarò pure un fighetto...

@contezero74: ciò che dici è vero ma valgono mille principi come quello di non reinventare la ruota ogni volta, esponendosi ogni volta a rischi inutili. Inoltre, se mi consenti, fare certe cose a livello di framework significa che qualcuno, possibilmente dotato di solidi attributi programmativi, può e sa ottimizzare e rendere sicure le cose meglio di un qualunque programmatore medio. Lo scopo dei framework dopotutto è (anche) quello o sbaglio?
from Isola-che-non-c'è - detail
capobecchino : about 1 year ago
ed infatti ora l'hanno ottimizzato ...
from Sesto San Giovanni, IT - detail
rejected : about 1 year ago
@capobecchino: hai detto bene, ora. ^^'
from Isola-che-non-c'è - detail
contezero74 : about 1 year ago
@rejected: non ti capisco... questa volta proprio non ti capisco: io sinceramente non vedo il problema. PHP permette un accesso a basso livello ai DB, esattamente come tutti gli altri linguaggi (C# incluso), ma non ti obbliga ad usarlo (che poi la maggior parte lo faccia è un altro discorso... ma non ha a che fare col linguaggio): se vuoi ci sono degli ottimi wrapper di terze parti (la maggior parte gratuiti) che ti permette di avere un accesso più pulito. Come questi framework lo facciano è abbastanza facile: usano le API di basso livello per darti un'interfaccia più umana (come dici tu) per accedere ai dati. Non vedo così tanta differenza da altri ambienti di sviluppo.
from Cremona, Lombardia, Italia - detail
contezero74 : about 1 year ago
@rejected: P.S. se poi non ti piace il linguaggio... bhe allora è un altro discorso
from Cremona, Lombardia, Italia - detail
rejected : about 1 year ago
@contezero74: vedila in questo modo. Ogni linguaggio della Terra tranne PHP ha fornito da tempo e senza necessità di intervento di terze parzi un sistema per ottenere e gestire i dati in un formato managgevole. Perfino ASP "classic" ha avuto DAO e poi ADO!
from Isola-che-non-c'è - detail
capobecchino : about 1 year ago
si, su questo quoto @rejected
from Sesto San Giovanni, IT - detail
rejected : about 1 year ago
@capobecchino: grassie...
from Isola-che-non-c'è - detail
contezero74 : about 1 year ago
@rejected: DAO e ADO, quanto tempo... ma sinceramente anche se erano ad un gradino (ino... ino) superiori a livello di astrazione non si allontanavano molto come metodologia di accesso ai dati: (a) facevi la query, (b) avevi come risultato un oggetto recordset, (c) te lo scorrevi per recuperare i dati. Ammetto che avevano più features nascoste come il caching dei dati... ma la metodologia di accesso ai dati non è diversa da quella proposta da PHP: se volevi un accesso come quello che chiede @m3c__ dovevi fare la stessa cosa che fai in PHP... spostarti i dati in una tua struttura.
Il vero punto di forza (sempre sottolineato da MS, ma mai completamente raggiunto) era la (quasi) trasversalità rispetto alla fonte di dati.
from Cremona, Lombardia, Italia - detail
rejected : about 1 year ago
@contezero74: esattamente, era una soluzione "di fabbrica" e con una serie di feature non male per l'epoca. Ora siamo un pelo più avanti con la versione .Net...
from Isola-che-non-c'è - detail
contezero74 : about 1 year ago
@rejected: bho... sarà che a me PHP non dispiace: lavoro raramente su web e la curva di apprendimento di PHP è nettamente più bassa di ASP(.NET)... per ovviare a quello che PHP non mi lascia fare mi sono fatto un mio piccolo framework abbastanza robusto e quindi non mi ci trovo male... quindi per me il problema che tu hai esposto è un finto problema: altre possibilità di accesso ai DB ci sono se vuoi usarle (la prima che mi viene in mente: MDB2

P.S. non volevo generare un flame: è solo che veramente non ci vedo il problema... s
from Cremona, Lombardia, Italia - detail
capobecchino : about 1 year ago
@contezero74 ovvio che noi tutti ci siamo fatti le nostre belle classi, però giustamente come diceva @rejected (e tra l'altro ci sono arrivati ora con PDO o MySqli) se il PHP metteva a disposizione queste cosette prima era meglio.

a conti fatti, ciclarti la struttura per riempirti un array, quando gli stessi dati sono gia in memoria è uno spreco, ovvio che incide poco sulle prestazioni per piccoli / medi progetti
from Sesto San Giovanni, IT - detail
rejected : about 1 year ago
@contezero74: in realtà se flame è stato, l'ho generato io per cui sorry. E più non dico.
from Isola-che-non-c'è - detail
capobecchino : about 1 year ago
ma no, dai quale flame, si discuteva
from Sesto San Giovanni, IT - detail
contezero74 : about 1 year ago
@capobecchino, @rejected:
penso che siamo tutti d'accordo che più il linguaggio ci mette a disposizione più lo apprezziamo tutti
from Cremona, Lombardia, Italia - detail
capobecchino : about 1 year ago
ah! si si ovvio
from Sesto San Giovanni, IT - detail
rejected : about 1 year ago
yup!
from Isola-che-non-c'è - detail
m3c__ : about 1 year ago
Sapete vero, che avete parlato in arabo? io non lavoro neanche in OOP per ora rileggerò questa discussione fra qualche annetto...
from nato a Locarno - vivo a Pantelleria - detail
New to meemi?
Join now to quickly and easily way

Problem? Rigenerate new code
By clicking the button, you agree all terms of service