![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzień dobry,
Moja witryna w PHP5+MySQL składa się zasadniczo z trzech stron: 1. enter_announcement.php - wprowadzanie/edycja ogłoszenia 2. submit_announcement.php - dodanie/modyfikacja ogłoszenia w bazie 3. summary.php - wyświetlenie podsumowania. Dokładniej rozwiązanie działa tak, że strona enter_announcement.php na submicie ma stronę submit_announcement.php, która na koniec dopiero wywołuje summary.php. Numer ogłoszenia składa się z trzech części: rok, miesiąc, numer w miesiącu. Oto szkic submit_announcement.php: START TRANSACTION LOCK TABLES announcements WRITE if (empty($_POST['full_announcement_no'])) { // nowe ogłoszenie $announcement = new Announcement; $announcement->initializeWithPOST(); INSERT INTO announcements z nowym numerem MAX+1 } else { // modyfikacja ogłoszenia $announcement = new Announcement; $announcement->initializeWithPOST(); $announcement->initializeWithNumber($_POST['full_announcement_no'])); UPDATE announcements } UNLOCK TABLES COMMIT header('Location: summary.php'); Problem w tym, że nie jestem pewien czy wewnątrz transakcji instrukcja LOCK TABLES jest potrzebna. Tabele blokuje ze względu na współbieżność generowania numerów ogłoszeń (SELECT MAX(no)+1 FROM announcements WHERE year=bieżący AND month=bieżący). Byłbym wdzięczny za informację, czy wewnątrz tranakcji lokowanie jest potrzebne. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 08:20 |