|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2007
Messaggi: 442
|
[PHP-MySQL] Gestione sottoinsieme di record
Buongiorno a tutti. Ecco la situazione(semplificata):
ho un sito sviluppato in php/html per la gestione(inserimento, cancellazione, modifica ecc) di record via web. Il database MySQL contiene una tabella "tbl1" dove sono memorizzati tutti i record in questione. I problemi nascono quando utilizzo la funzione "trova", che mi permette di ricercare un sottoinsieme di record che soddisfino un certo numero di attributi e, conseguentemente, di utilizzare questo sottoinsieme di record per effettuare le classiche operazioni(modifica un singolo record, elimina, modifica un attributo a tutti i record cercati ecc). Fino ad ora me la sono sbrigata creando una copia di "tbl1" chiamata "tbl1_temp", sbattendo dentro tutti i record ricercati (ovviamente preceduto da un bel truncate) e aggiornando una variabile di sessione $_SESSION['tabella'] = "tbl1_temp". Poi quando decido di smettere di lavorare su questo sottoinsieme mi basta impostare $_SESSION['tabella'] = "tbl1" e tutto torna come prima. In poche parole questa variabile di sessione mi indica se sto lavorando sulla tabella principale o sulla tabella temp. Fin qui tutto bene, gli script funzionano bene e senza mille controlli in quanto mi basta solo controllare a quale tabella faccio riferimento nella clausola FROM di ogni query. I fastidi iniziano qui: e se ho 2 o più utenti che vanno a smanettare con la funzione trova? si ha che entrambi vanno ad agire sulla tabella "tbl1_temp", con ovvie conseguenze. brrrr come risolvere questa situazione? ad una superficiale analisi avevo pensato a creare delle tabelle temporanee per ciascun session_id oppure inserire gli id dei record trovati in un array che si può mettere o in una variabile di sessione o in un cookie. La cosa è fattibile o vado incontro a problemi seri? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Apr 2005
Città: Campagnola Emilia
Messaggi: 202
|
Io userei tabelle temporanee
__________________
"L'informatica è come la fisica.La differenza è che mentre la fisica è governata da leggi naturali, in informatica sei tu il creatore. All'interno del computer puoi essere un Dio." Linus Torvalds |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2007
Messaggi: 442
|
grazie per la risposta.
ok allora mettiamo che l'utente si crei queste tabelle temporanee. problema 1: nome della tabella? problema 2: struttura della tabella? solo con id di riferimento alla prima o identica? problema 3: come faccio ad eliminare queste tabelle temporanee nel caso non l'avesse fatto l'utente (es: uscita dal browser)? esistono particolari routines di mysql che mi permettono di eliminare automaticamente queste tabelle dopo un determinato timeout? |
|
|
|
|
|
#4 | |||
|
Member
Iscritto dal: Apr 2005
Città: Campagnola Emilia
Messaggi: 202
|
Quote:
Quote:
Quote:
__________________
"L'informatica è come la fisica.La differenza è che mentre la fisica è governata da leggi naturali, in informatica sei tu il creatore. All'interno del computer puoi essere un Dio." Linus Torvalds |
|||
|
|
|
|
|
#5 | ||
|
Senior Member
Iscritto dal: May 2007
Messaggi: 442
|
ok fin qui me la posso cavare in qualche modo.
Quote:
Quote:
nella pratica ho il file trova.php che mi visualizza un form dove seleziono gli attributi che mi interessano e li invio al file stesso (via POST) che li processa (via query) e, se ci sono elementi che soddisfano la mia ricerca, li sbatte in questa tabella "temp". da questo punto in poi io lavoro su questa tabella "temp" proprio come se fosse quella principale. |
||
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Apr 2005
Città: Campagnola Emilia
Messaggi: 202
|
Allora segui lo stesso sistema, ma utilizzando tabelle normali (MyISAM o innoDB o il tipo che ti serve) che crei e distruggi di volta in volta, quando non ti servono più.
Ovvio che saranno più lente rispetto a delle tabelle temporanee. Io cmq non capisco la necessità di salvare i dati di una ricerca in un'altra tabella. Non puoi semplicemente lavorare sui risultati della query "trova"?
__________________
"L'informatica è come la fisica.La differenza è che mentre la fisica è governata da leggi naturali, in informatica sei tu il creatore. All'interno del computer puoi essere un Dio." Linus Torvalds |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: May 2007
Messaggi: 442
|
Quote:
mi hai dato un'illuminazione! potrei salvarmi la query in una variabile di sessione e quando serve fare riferimento ad essa!
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:57.












mi hai dato un'illuminazione! potrei salvarmi la query in una variabile di sessione e quando serve fare riferimento ad essa!








