Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di super5
    Registrato dal
    Jun 2013
    Messaggi
    20

    [php] bloccare record se utilizzato da altro utente

    Ciao a tutti.

    Ho realizzato un applicativo php/mysql per la gestione delle anagrafiche

    Nel database posso interagire piu utenti contemporaneamente.

    Volevo sapere se esiste un modo di capire se un anagrafica é aperta da un altro utente e, in questo caso bloccarne l'apertura in tempo reale.

    Qualcuno di voi ha giá realizzato qualcosa di simile?

    Vi ringrazio anticipatamente!

  2. #2
    aggiungi una colonna: "in uso" e quando apri l'id di una determinata riga, con un UPDATE cambi la cella "in uso" e ci metti "si", dopodiché metti no una volta che la la modifica è stata fatta, non credo che ti importi bloccarla se qualcuno la guarda solamente

  3. #3
    Utente di HTML.it L'avatar di super5
    Registrato dal
    Jun 2013
    Messaggi
    20
    Originariamente inviato da CBR900cc
    aggiungi una colonna: "in uso" e quando apri l'id di una determinata riga, con un UPDATE cambi la cella "in uso" e ci metti "si", dopodiché metti no una volta che la la modifica è stata fatta, non credo che ti importi bloccarla se qualcuno la guarda solamente
    C'è un modo per fare sparire dinamicamente i record che sono nello stato di modifica?
    O semplicemente avviare un controllo in javascript che verifica il flag ogni X secondi?

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Pur restando valido il consiglio della CBR900cc, ti consiglio di prevedere un meccanismo di sblocco dopo un certo tempo. Perchè potrebbe succedere che:
    1. Apro il record e blocco la riga (mettendo in_uso= 1)
    2. Non faccio alcuna modifica, anzi chiudo il browser o clicco su un altro link

    Cosa succede? il record resta bloccato per sempre (o almeno finchè non si agisce manualmente sul record).

    Quindi, oltre al campo in uso metti un campo timestamp che indica da quanto è bloccato.
    Se qualcun'altro richiede il record ed è bloccato, verifichi che il tempo trascorso dal blocco sia superiore ad un certo tempo (es 5 minuti). In quel caso consideri il record non più bloccato.
    Chiaramente questa tecnica va "affinata" perchè possono capitare altri casi particolari.

  5. #5
    Utente di HTML.it L'avatar di super5
    Registrato dal
    Jun 2013
    Messaggi
    20
    Originariamente inviato da boots
    Pur restando valido il consiglio della CBR900cc, ti consiglio di prevedere un meccanismo di sblocco dopo un certo tempo. Perchè potrebbe succedere che:
    1. Apro il record e blocco la riga (mettendo in_uso= 1)
    2. Non faccio alcuna modifica, anzi chiudo il browser o clicco su un altro link

    Cosa succede? il record resta bloccato per sempre (o almeno finchè non si agisce manualmente sul record).

    Quindi, oltre al campo in uso metti un campo timestamp che indica da quanto è bloccato.
    Se qualcun'altro richiede il record ed è bloccato, verifichi che il tempo trascorso dal blocco sia superiore ad un certo tempo (es 5 minuti). In quel caso consideri il record non più bloccato.
    Chiaramente questa tecnica va "affinata" perchè possono capitare altri casi particolari.
    Si già pensavo ad una soluzione del genere per evitare che la chiusura del browser mi lasci nel limbo questi record.

    Sto solo impazzendo a cercare di capire come posso sapere prima di cliccare se il record è occupato oppure no.

    Uno script all'"onClick" che mi dica "ok, record libero" o "ko, non puoi modificare il record".

    Sto provando con le richiestehttp e ajax ma non ne sto uscendo fuori.

    Qualcuno di voi ha qualche esempio di codice per questa implementazione?

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Una soluzione è quella di crearti una funzione JS che viene richiamata ogni tot secondi (es 2 sec).
    Questa funzione fa una chiamata Ajax al server che gli invia, ad esempio l'id dei record occupati (magari con JSON). Con questi id, vai nella lista dei record della pagina e disabiliti il link edit (magari cambi pure lo stile della riga)

    un altro approccio è quello di usare node.js ed i websocket...se cerchi nel forum ci sono un po di discussioni sull'argomento (chat php, php real time etc)

  7. #7
    come ti hanno suggerito, puoi anche mettere la richiesta ajax con js alla chiusura della pagina!

  8. #8
    Utente di HTML.it L'avatar di super5
    Registrato dal
    Jun 2013
    Messaggi
    20
    Originariamente inviato da boots
    Una soluzione è quella di crearti una funzione JS che viene richiamata ogni tot secondi (es 2 sec).
    Questa funzione fa una chiamata Ajax al server che gli invia, ad esempio l'id dei record occupati (magari con JSON). Con questi id, vai nella lista dei record della pagina e disabiliti il link edit (magari cambi pure lo stile della riga)

    un altro approccio è quello di usare node.js ed i websocket...se cerchi nel forum ci sono un po di discussioni sull'argomento (chat php, php real time etc)
    Grazie mille, ho provato a cercare ma non riesco ad integrarlo con la mia applicazione, sicuramente perché sbaglio qualcosa....

    Qualcuno di voi è cosi gentile da postarmi un esempio di HTTPrequest ?

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ti conviene postare su Javascript, perchè non si tratta più di php

    Magari lì qualcuno a già avuto a che fare con chiamate ajax cicliche

  10. #10
    Utente di HTML.it L'avatar di super5
    Registrato dal
    Jun 2013
    Messaggi
    20
    Originariamente inviato da boots
    Ti conviene postare su Javascript, perchè non si tratta più di php

    Magari lì qualcuno a già avuto a che fare con chiamate ajax cicliche
    Topic spostato qui: http://forum.html.it/forum/showthrea...readid=1546543 !

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.