Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Blocare inregistrare
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Subiectul anterior :: Subiectul următor  
Autor Mesaj
griffin



Data înscrierii: 07/Dec/2006
Mesaje: 100

Trimis: Vin Dec 14, 2007 6:38 pm    Titlul subiectului: Blocare inregistrare  

Salut.Am o aplicatie in care folosesc Php si Mysql.La aceasta aplicatie se conecteaza concomitent mai multi utilizatori si fiecare din ei primeste informatie
despre o inregistrarea cu cel mai mic id intr-un tabel.
Query-ul care face asta arata cam asa
SELECT min(id) FROM tabel;
Dupa ce se ruleaza acest query fac un update pe un camp ( in_use int DEFAULT 0) pentru a nu mai fi luat din nou.
Update tabel SET in_use=1 WHERE id='id_ul selectat mai sus'

Faza e ca se mai intampla (rar dar se intampla) ca doi utilizatori primesc aceleasi date (adica selecteaza amandoi inregistrarea cu cel mai mic id la un anumit moment).Ce vreau eu sa stiu e daca exista in Mysql un sistem de blocare,sau daca stiti cum pot sa fac sa nu mai apara problema asta
Multumesc anticipat
Sus  
griffin



Data înscrierii: 07/Dec/2006
Mesaje: 100

Trimis: Vin Dec 14, 2007 7:34 pm    Titlul subiectului: Update la blocare inregistrare  

Eu fac totul din Php,adica
$sql=mysql_query("SELECT MIN(id) FROM tabel");
$id=mysql_fetch_row($sql);
mysql_query("UPDATE tabel SET in_use=1 WHERE id=$id[0]");

Ma gandesc ca problema ar putea aparea din cauza faptului ca fac 2 drumuri la Mysql si pana vine id_ul inapoi in PHP si pana dau update un alt user imi ia acelasi id.Ma intreb daca fac o procedura stocata (evit astfel plimbatul de la PHP la Mysql) mai apare problema?
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 656
Locație: Drobeta Turnu Severin

Trimis: Vin Dec 14, 2007 10:46 pm    Titlul subiectului:  

Asa cum ai scris orice ai face toti utilizatorii primesc acelasi ID, cel mai mic.

Aici :
$sql=mysql_query("SELECT MIN(id) FROM tabel");

nu trebuie :
$sql=mysql_query("SELECT MIN(id) FROM tabel WHERE in_use=0;"); ?

si daca da,
cand setezi in_use la valoarea 0 ?

Nu-i o idee buna chestia asta cu id-ul luat din tabela, si de ce trebuie cel mai mic ?
Sus  
griffin



Data înscrierii: 07/Dec/2006
Mesaje: 100

Trimis: Vin Dec 14, 2007 11:16 pm    Titlul subiectului:  

Greseala mea.In incercarea de a reformula ce aveam prin script am scris primul query gresit.Dechim are dreptate. De fapt e SELECT MIN(id) FROM tabel WHERE in_use=0.Ideea cu aplicatia asta e ca am nevoie sa-mi ia randurile dintr-un tabel in ordinea id_urilor si sa-mi faca update la date.Am un buton "next" cand dau click apare un formular cu toate datele unui rand si ele trebuiesc updatate.De asta am nevoie ca mereu sa-l ia pe cel mai mic care nu a fost updatat.Utilizatorul da "next" ,ii apar datele in formular,se face update la tabel in randul cu id_ul selectat (adica se trece in_use de pe 0 pe 1) si apoi daca are ceva de modificat la datele din randul respectiv modifica si salveaza.Daca nu,pentru ca in_use a fost setat pe 1 el nu va mai fi luat din nou.Apropo initial toate randurile au in_use=0.Sper sa fiu mai clar acum
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community