Tôi có một trang PHP mà tôi đang cố gắng đơn giản hóa và gặp phải một số vấn đề mà tôi không thể vượt qua một mình. Biểu mẫu của tôi lấy dữ liệu người dùng, đăng lên chính nó, xác thực rằng các trường đã được điền vào và sau đó hiển thị nội dung/bài đăng biểu mẫu cho cơ sở dữ liệu MySQL.
Vấn đề tôi gặp phải là thay vì có 20 câu lệnh IF []/otherif, tôi muốn tải tên biến vào một mảng, lặp qua mảng đó và nếu một biến không được điền trong biểu mẫu, nó sẽ tạo ra một thông báo lỗi . Thật không may, mã của tôi sẽ hiển thị thông báo lỗi bất kể trường có giá trị trong đó hay không.
Như một lưu ý bổ sung, tôi có thể thêm $ Shippingco vào biểu mẫu của mình và lặp lại nó nhưng thông báo rằng nó chưa hoàn thành vẫn hiển thị.
Ngoài ra, nếu tập lệnh nhập câu lệnh IF mà tôi muốn nó ngừng thực hiện phần còn lại của trang sau khi đóng tôi đã thử thoát; không thành công.
Đây là những gì tôi có:
Sales Order Entry Form
Please press back to properly complete the form
Cảm ơn bạn trước.
hỏi ngày 13 tháng 7 năm 2012 lúc 23:13Jul 13, 2012 at 23:13
1
Tôi nghi ngờ rằng cú pháp $$ENote[$a]
có lẽ đang được hiểu là [$$ENote][$a]
thay vì $[$ENote[$a]]
[dấu ngoặc đơn không phải là cú pháp pháp lý, chỉ dành cho bản demo].
Vì vậy, tôi đề xuất một biến trung gian, hoặc cú pháp phức tạp khác:
foreach [$ENote as $a => $b] {
$varname = $ENote[$a];
if[!$$varname]{
hoặc [không được kiểm tra, chỉ là một linh cảm mà nó có thể hoạt động]:
foreach [$ENote as $a => $b] {
if[!${$ENote[$a]}]{
Đã trả lời ngày 13 tháng 7 năm 2012 lúc 23:43Jul 13, 2012 at 23:43
Chris Traheychris TraheyChris Trahey
Huy hiệu vàng 18.1k11 gold badge40 silver badges54 bronze badges
0
Có một số vấn đề đang chơi ở đây.
Đầu tiên, mỗi mục $ENote
phải bỏ qua ____10 hàng đầu. Các biến biến không được bao gồm phần
foreach [$ENote as $a => $b] {
$varname = $ENote[$a];
if[!$$varname]{
0.$ENote[] = 'Terms';
$ENote[] = 'FOB';
...
Thứ hai, như Ctrahey đã nói, bạn cần lưu trữ tên biến vào một biến để mở rộng nó với một ____10 khác.
Dưới đây là một số mẹo làm sạch mã:
- Kết hợp hai mảng thành một [bản đồ].
- Gán cho các biến được đặt tên từ
3 trong vòng lặp.foreach [$ENote as $a => $b] { $varname = $ENote[$a]; if[!$$varname]{
- Sử dụng
4 để thoát khỏi vòng lặp.foreach [$ENote as $a => $b] { $varname = $ENote[$a]; if[!$$varname]{
Điều này sẽ loại bỏ phần lớn sự dư thừa.
$ENote = array[
'Terms' => 'Shipping Terms',
'FOB' => 'FOB Method',
...
];
foreach [$ENote as $field => $title] {
$value = $$field = $_POST[$field];
if [!$value] {
... display error using $title ...
break; // exit loop
}
}
Đã trả lời ngày 14 tháng 7 năm 2012 lúc 0:13Jul 14, 2012 at 0:13
David Harknessdavid HarknessDavid Harkness
35K10 Huy hiệu vàng111 Huy hiệu bạc129 Huy hiệu đồng10 gold badges111 silver badges129 bronze badges
Tại sao bạn không tạo một mảng hoặc tất cả các trường và chuyển mảng đó vào một hàm, và trong hàm đó, lặp qua từng mục và nếu trống vứt lỗi?
Một cái gì đó như thế này:
function checkEmpty[$some_array] {
foreach[$some_array as $key=>$value] {
if[$value==""] {
or if[empty[$key]] { ///throw error }
//put error message and exit
}
}
}
rmtheis
6.62211 Huy hiệu vàng58 Huy hiệu bạc75 Huy hiệu đồng11 gold badges58 silver badges75 bronze badges
Đã trả lời ngày 13 tháng 7 năm 2012 lúc 23:45Jul 13, 2012 at 23:45
YeakyeakYeak
2.4308 Huy hiệu vàng41 Huy hiệu bạc70 Huy hiệu Đồng8 gold badges41 silver badges70 bronze badges