Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [Html-Php-Mysql]

  1. #1

    [Html-Php-Mysql]

    Salve,

    ho un db formato da un certo numero di tabelle che devono essere popolate attraverso vari form posti su pagine html in sequenza; il problema è che i dati dovrebbero essere inseriti nelle tabelle solo dopo conferma presente sull'ultima maschera. Quale tecnica potreste consigliarmi per memorizzare i dati nell'archivio. Avrei pensato di utilizzare le variabili di sessione come appoggio, procedendo alla registrazione nel db solo alla fine. La soluzione non mi convince pienamente perché la mole di dati è rilevante... boh?!
    Ringrazio anticipatamente tutti coloro che vorranno indicarmi suggerimenti.

  2. #2
    opzioni

    1. fai una tabella temporanea dove salvi i dati per l'utente che ha una determinata sessione.

    2. inserisci tutto nei form delle varie pagine

    personalmente ti consiglio la prima, salvi e vai avanti, salvi e vai avanti....

    ...quindi elimini le cose dalla tabella temporanea e salvi definitivamente
    Totò, vero ma strano
    www.ateicos.com

  3. #3
    Ringrazio Ateicos per la risposta e devo dire che avevo già in mente qualcosa del genere, anche se non avevo pensato di utilizzare delle tabelle temporanee. In particolare, avevo pensato di introdurre un campo in una particolare tabella in cui riportare lo status dell'utente che stava registrando i propri dati: "sospeso" sino all'ultima conferma, quindi "attivo" dopo la conferma di richiesta di inserimento dei propri dati.
    Lo scopo è quello di ripulire le tabelle dai dati non confermati. A tal fine vorrei chiedere se qualcuno potesse indicarmi se esiste modo attraverso Php di far eseguire una procedura ad un orario prefissato. In alternativa, suggerimenti su come ripulire in modo efficace le tabelle dai dati non necessari, ovvero lasciati a metà strada. Grazie nuovamente.

  4. #4
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    Non e' il massimo dell'eleganza ma potresti eventualmente considerare di inserire una colonna "confermato" a tutte le tabelle che ti servono.

    Dopodiche' non fai altro che modificare le tue select in giro in modo da tirare fuori dati con confermato=true

    Visto che non c'e' modo per fare in modo che il PHP esegua operazioni pianificate e visto che mysql non supporta ne' i trigger ne' le stored procedures, l'unica soluzione che vedo per adesso e' una cosa del genere: al caricamento di una pagina fai in modo che con probabilita' 0.01, ad esempio (dipende molto dalla frequenza di accesso alla pagina) fai il delete di tutti i dati con confermato=false (consiglio caldamente un indice sulla colonna).

    Alternativamente potresti fare una cosa del genere: salvare dove ti pare (DB, file di testo..) la data/ora dell'ultimo DELETE massiccio. Al caricamento di ogni pagina se il tempo che e' passato dall'ultimo cleanup e' > 30 minuti (o quanti minuti pare a te) aggiorni la data/ora in questione e lanci il cleanup.

    Come vedi sono accrocchi, ma in assenza di trigger non c'e' molto da fare.

  5. #5
    Originariamente inviato da Roberto Phis
    A tal fine vorrei chiedere se qualcuno potesse indicarmi se esiste modo attraverso Php di far eseguire una procedura ad un orario prefissato. In alternativa, suggerimenti su come ripulire in modo efficace le tabelle dai dati non necessari, ovvero lasciati a metà strada. Grazie nuovamente.
    tra gli articoli in freephp.html.it dovrebbe esserci, su google trovo questo (http://www.diludovico.it/guide/cron.shtml)

    poi, se fai una tabella temporanea, e i dati restano a metà, puoi sempre impostare una funzione di pulizia (garbage collector - raccolta immondizia), che rimuova i record vecchi ( "DELETE * FROM tabella_temporanea WHERE data_mktime < '". mktime() - 3600 ."' " )

    3600 = 1 ora = 60 secondi * 60 minuti

    questa sola funzione ti pulisce la tabella dai record inutili.
    Totò, vero ma strano
    www.ateicos.com

  6. #6
    Salve,

    ringrazio innanzitutto sia Ateicos che Ray. Per il mio problema penso di introdurre dei trucchetti come quelli suggeriti, con delete a cascata nelle tabelle collegate attraverso i campi chiave. Pensavo anche se fosse possibile agganciare le operazioni di cancellazione alla scadenza di una sessione; se esistesse un modo di intercettare la chiusura della sessione (voluta dall'utente o per scadenza naturale) potrei agganciare all'evento la cancellazione. Chissà...
    Grazie.

  7. #7
    Originariamente inviato da Roberto Phis
    Salve,

    ringrazio innanzitutto sia Ateicos che Ray. Per il mio problema penso di introdurre dei trucchetti come quelli suggeriti, con delete a cascata nelle tabelle collegate attraverso i campi chiave. Pensavo anche se fosse possibile agganciare le operazioni di cancellazione alla scadenza di una sessione; se esistesse un modo di intercettare la chiusura della sessione (voluta dall'utente o per scadenza naturale) potrei agganciare all'evento la cancellazione. Chissà...
    Grazie.
    no, non puoi, cmq meglio usare una tabella temporanea che una contenete dati fissi.

    è come scrivere una lista di nomi e poi cancellarne alcuni, e poi dover rivedere tra quelli "non cancellati" quello che cerci.

    meglio una tabella "provvisoria" e una "definitiva" no?
    Totò, vero ma strano
    www.ateicos.com

  8. #8
    Salve Ateicos,

    il problema che mi trattiene dall'utilizzare immediatamente il tuo suggerimento (relativo all'utilizzo di una tabella temporanea) sta nel fatto che i dati ottenuti dalle varie maschere popolano 7 tabelle fra loro correlate e con relazioni di tipo 1-n. Di conseguenza, credo mi toccherebbe replicare tutta la struttura in modo da poter successivamente passare i dati in quelle definitive. L'idea che mi gira al momento nella mente è quella di introdure nella tabella principale un campo di tipo enum('confermato','sospeso') da utilizzare per individuare i dati da eliminare "a posteriori". E' possibile che la soluzione sia poco pratica/corretta/pulita. Grazie per i precedenti e gli ulteriori suggerimenti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.