Categories PHP-MySQL

Kiểm soát lỗi ẩn khi thao tác dữ liệu

Khi tôi bắt đầu làm chương trình quản lý bán hàng online, tôi thiết kế chương trình khá cơ bản với lòng cốt là bảng dữ liệu vận đơn, chi tiết vận đơn và sản phẩm. Các thao tác dữ liệu tương đối đơn giản và rõ ràng về mặt hiển thị. Nói cách khác, nếu thao tác thêm sửa xoá dữ liệu bị lỗi, nó sẽ làm cho vận đơn hiển thị lỗi. 

Tuy nhiên khi chương trình trở nên phức tạp. Nhiều bảng dữ liệu cần phải thêm vào, chẳng hạn như dữ liệu kho hàng để kiểm soát kho, dữ liệu khách hàng để làm tiếp thị lại hoặc chương trình khách hàng thân thiết…

Những bảng dữ liệu này rất quan trọng tuy nhiên không phải lúc nào khi thao tác dữ liệu trên nó, chương trình cũng hiển thị ra ngoài toàn bộ kết quả. Có khi thao tác bị lỗi ở đâu đó nhưng hiển thị vận đơn không giúp ta nhìn được điều ấy.

Điều đó không phải vì tôi không thể hiển thị kết quả đối với sự thay đổi của bảng dữ liệu đó. Vấn đề nằm ở chỗ: Nếu tất cả các dữ liệu thay đổi đều được hiển thị ra ngoài thì dẫn đến thừa mứa thông tin không thực cần thiết.

Thông tin về hàng tồn kho chỉ cần dùng đến khi nó sắp hết hàng, giúp báo động cho ta biết cần nhập thêm hàng. Thông tin về lịch sử khách mua cũng chỉ có ý nghĩa khi ta thực hiện khuyến mại chẳng hạn.

Đó là những vấn đề cụ thể, nhưng về cơ bản tôi sẽ phải giải quyết nguy cơ: nếu có thao tác dữ liệu sai thì tôi phải biết.

Mẹo mà bây giờ tôi dùng là sử dụng kết quả mà PHP trả về khi thao tác dữ liệu. Nó sẽ trả về số bản ghi hoặc kết quả dương khi thao tác thêm sửa xoá thành công. Như vậy tôi cần một biến Status tương ứng với mỗi vận đơn. Biến Status này sẽ chạy qua tất cả các vòng thao tác dữ liệu. Theo mặc định nó được gán là OK để biểu thị không có vấn đề gì suốt cả quá trình.

Khi xảy ra vấn đề nào đó, chẳng hạn thao tác trừ 2 sản phẩm trong kho hàng có vấn đề Status sẽ được gán đoạn thông báo lỗi kiểu như: “Thao tác dữ liệu với kho hàng bị lỗi”. Nếu Status có vấn đề trong việc cập nhật với lịch sử mua hàng của khách, nó sẽ được gán thêm đoạn lỗi: “Thao tác dữ liệu với lịch sử mua hàng bị lỗi”.

Như vậy bằng cách gán trạng thái Status lỗi mỗi lần đi qua các thao tác dữ liệu có vấn đề tôi vẫn biết được khi có lỗi xảy ra mà không phải hiển thị thừa thông tin.

Ồ thế nào mà lại nghĩ đến thiền: nếu mình không tỉnh giác ở đây, bây giờ để ghi nhận thì mình biết lỗi sai của mình ở chỗ nào đâu tâm nhỉ?

Back to Top