 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
griffin
Data înscrierii: 07/Dec/2006
Mesaje: 83
|
| 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: 83
|
| 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: 535
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: 83
|
| 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 |
|
| |
|