Newsgroup: it.comp.programmare
Titolo: evitare troppe chiamate a db

Ciao gente,
un mio amico dice "finché una cosa funziona freghiamocene e andiamo avanti",
ma per esperienza non sono d'accordo perché credo che un codice più pulito e
meglio gestito aiuta a risolvere un sacco di cose, tipo evitare e trovare
errori
banali, fare modifiche a aggiornamenti più facilmente.
Premesso ciò vi pongo il mio dilemma:
(avevo scritto un esempio e altre cose ma l'ho cancellate perché mi sembrava
superfluo ai fini della domanda)
Devo anche dire che programmo con PHP+MySql, il post l'ho inviato a
it.comp.www.php ma mi rendo conto che forse é più appropriato inviarlo qui.
Come riutilizzo più volte all'interno di uno script i risultati di una
query?
Vorrei fare la chiamata a db una volta e poi potermi gestire i risultati con
la dimestichezza di un array associativo.
Forse non mi son spiegato bene, me ne rendo conto ma trovo un po' di
difficolta.
Se per esempio volessi sapere il contenuto di una colonna di una particolare
riga, vorrei evitare di fare 2 cose:
1) ripetere la chiamata a db con i vari 'where' etc...
2) se ho il puntatore al result della query precedente, fare un ciclo while
con mysql_fetch_array($result)... per ricercare quella riga. Quindi di nuovo
reset e ancora ciclo...
A proposito quest'ultimo puntatore si può riutilizzare in qualche modo?
Una volta mi creavo un file php contenente un array associativo creato in
base ai contenuti del db, ma succedeva un casino se qualcuno (autorizzato)
cambiava a mano il db, per non parlare dell'attenzione da tenere ai permessi
delle cartelle. Era comodo per un verso ma intrattabile dall'altro.
Grazie a tutti
    Mark ...che ci ha provato e non trova soluzioni

 delle cartelle. Era comodo per un verso ma intrattabile dall'altro.
Bè la soluzione è ovvia ed è quella che avevi creato tu:
tenersi in un array locale una cache dei dati che hai ricercato.
Non ce ne sono altre, altrimenti semmai puoi ottimizzare la
query perchè sia meno pesante da chiamare.
Se il problema è la modifica del DB da cui provengono i dati,
puoi fare un test sul DB stesso, lanciato ogni tot secondi,
per vedere se il DB è cambiato e nel caso ricaricare i dati:
sempre meglio che rifare la query.
Altre soluzioni diverse da questa, non le vedo... a meno che
tu non abbia accesso al DB e possa fare in modo che sia il DB
stesso a chiamare il tuo programma per ricaricare i dati.

 stesso a chiamare il tuo programma per ricaricare i dati.
Io uso MySql, non sempre ho gli accessi al server per gestire l'housing. Ma
in entrambi i casi come potrei da DB richiamare lo script che fa ricaricare
i dati su file?
grazie per ora.
    Mark

 i dati su file?
Ah boh... mai programmato un DB :-)
Però se il DB ha un trigger che può
far partire una funzione appena i "tuoi" dati
vengono modificati sei a cavallo: cercala e
vedi se per caso esiste...

 errori  banali, fare modifiche a aggiornamenti più facilmente.
il principio non si applica a ciò che poi riporti come esempi a tuo
favore.
se sei in prima stesura non funziona ancora... ed esci per else
se sei in modifica allora non funzionava... ed esci per else
c'è il caso infine di cosa funzionante che accetti di modificare, ma
rientriamo in perversioni di cui non so nulla purtroppo
;)