Gợi ý viết code kết hôn cho wapego

19 bài đăng
15.07.2015 / 22:31
MrKen
Bài đăng: 2646
Trùm!
Vẫn là A N H

Kết hôn ở wapego trước đây thường được tạo từ diễn đàn. Thực chất nó chỉ là phòng kết hôn để mọi người vào chém gió, chúc mừng linh tinh chứ mối quan hệ đó không được hiển thị ở bất cứ nơi nào khác. Ví dụ như khi vào thông tin người dùng của một trong hai người sẽ hiện trạng thái "Đã kết hôn với xxx" chẳng hạn. Vì sao tôi gọi là xxx, bởi vì nó là 3x và nó không liên quan ở đây nên sẽ không được mô tả chi tiết.

Sau đây tôi sẽ gợi ý cho các bạn tạo một code kết hôn hoàn chỉnh cho wapego (tôi chưa từng viết code này nhưng sẽ nói rõ ý tưởng cho các bạn tự viết). Và sau khi có ai đó viết được thành công code từ gợi ý này thì hãy chia sẻ lên đây cho mọi người biết nhé :D.

Đầu tiên, người yêu cầu tôi tạm gọi là người A, còn người nhận yêu cầu là người B. Chúng ta sẽ nói về biến lưu trạng thái trước vì đây là yếu tố quyết định code có sử dụng được hay không.

Biến được sử dụng để lưu thông tin mối quan hệ sẽ là biến hồ sơ tự bạn chọn. Vì sao lại phải sử dụng biến hồ sơ mà không dùng shoutbox? Đơn giản là biến hồ sơ thì chỉ một mình thành viên có mối quan hệ đó thay đổi, chình sửa được mà thôi. Bạn hãy chọn một biến hồ sơ tùy ý. Danh sách các biến các bạn xem tại đây. Biến này sẽ lưu trạng thái kết hôn của 2 người. Ở đây tôi sẽ sử dụng biến more_info

Ví dụ: Ở người A là B | Ở người B sẽ là A

Biến của người A sẽ được tạo khi Gửi yêu cầu kết hôn, còn biến của người B sẽ được tạo sau khi Đồng ý yêu cầu của người A.

Để hiển thị thông tin trạng thái Kết hôn, cần kiểm tra xem các biến ở cả 2 người dùng có phù hợp không. Đây là phần quan trọng nhất của code này. Tôi sẽ viết sẵn cho các bạn code này và giải thích cụ thể. Code này được đặt trong thông tin người dùng nhé.

PHP
  1. {% set bid = api.u.get(api.r.get('uid')).more_info %} {# lấy id người B từ người A #}
  2. {%set binfo = api.u.get(bid)%} {# lấy thông tin người B #}
  3. {%if binfo%} {# kiểm tra xem người B có tồn tại không #}
  4. {%set aid = binfo.more_info%} {# lấy id người A từ người B #}
  5. {%if aid == api.r.get('uid')%}Đã kết hôn với {{binfo.nick}} {# kiểm tra id lấy từ người B có đúng là người A không, nếu đúng thì hiện trạng thái #}
  6. {%else%}{# nếu sai tức người A đang độc thân! Chúng ta chèn form gửi yêu cầu, sẽ nói ở phần sau #}
  7. {%endif%}
  8. {%endif%}

Vậy là xong phần hiển thị trạng thái ở thông tin người dùng rồi. Bây giờ là phần gửi yêu cầu và trả lời để tạo ra các biến hồ sơ như đã nói ở trên.

- Đầu tiên, khi A gửi yêu cầu, chúng ta sẽ cần sử dụng Javascript để gửi 2 form: 1 là gửi tin nhắn cho B, 2 là cập nhật vào biến hồ sơ thông tin như đã nói ở trên. Form thứ nhất gửi tin nhắn cho người B, ở action của form các bạn thêm vào biến tùy ý để get thông tin là người A đã gửi yêu cầu cho người B và submit luôn form thứ 2. Ví dụ:

PHP
  1. <form action="pm.php?id=new&to={{api.r.get('uid')}}&mrken=pro"><input name="msg" value="[cau_hon]"/><input type="submit" value="Cầu hôn"/></form>

PHP
  1. {%if api.r.get('mrken') == 'pro'%}<form action="dating.php?id={%if api.u.get(api.user_id).age%}edit{%else%}create{%endif%}" name="mrken">
  2. <input name="more_info" value="{{api.r.get('to')}}"/>
  3. </form>
  4. <script>document.forms["mrken"].submit();</script>{%endif%}

- Tiếp theo là trả lời yêu cầu khi người B đọc tin nhắn. Các bạn vào Bố cục tin nhắn > Danh sách tin nhắn tìm biến {{message}} và sửa thành

PHP
  1. {%if nick_uid != api.user_id%}
  2. {{message|replace({'[cau_hon_xxx]':(nick~' đã cầu hôn bạn!<br/><form action="pm.php?xxx"></form>')})|raw}} {# form trả lời #}
  3. {%else%}
  4. {{message|replace({'[cau_hon_xxx]':('Bạn đã cầu hôn ' ~ nick ~ ' và đang chờ trả lời!')})|raw}}
  5. {%endif%}

Form cập nhật thông tin cho người B tương tự như người A nhưng cần thay đổi một số thông tin cho phù hợp như thông số mrken=pro ở form

Vậy là về cơ bản đã xong ý tưởng cho code kết hôn. Nếu các bạn đã làm được hết các bước trên, các bạn có thể thêm vào một số thuật toán để hoàn thiện hơn. Ví dụ:

- kiểm tra giới tính 2 người ở code hiển thị thông tin, ở trang gửi yêu cầu, trả lời yêu cầu, ...

- kiểm tra trạng thái nếu đã kết hôn thì không cho gửi yêu cầu ở tin nhắn riêng, ...

- ...

Nếu có khúc mắc hay có chỗ nào chưa hợp lý thì ae thảo luận ở đây để mình sửa lại. Vì đây chỉ là ý tưởng, chưa được viết và kiểm thử nên có thể có sai sót. Tuy nhiên nếu các bạn đi theo hướng này chắc chắn sẽ viết được code kết hôn một cách khá hoàn chỉnh.

Chúc các bạn thành công và sớm có code chia sẻ cho anh em =))

Đã chỉnh sửa. admin (16.07.2015 / 06:58)
16.07.2015 / 00:26
hanhphucao
Bài đăng: 2470
Admin
Admin là người tận tâm và luôn hành xử đúng mực.

Viết xong code này thì có thể nói code đã tối ưu hoá hoàn toàn, mặc dù phải dùng js :)

16.07.2015 / 00:28
hanhphucao
Bài đăng: 2470
Admin
Admin là người tận tâm và luôn hành xử đúng mực.

Vì sao gọi là xxx, bởi vì nó là 3x =))

16.07.2015 / 05:49
alogame
Bài đăng: 396
Member

Dùng sb cho đơn giản chứ ken chứ tốn mất một mục trong hồ sơ. Chỉ cần if cái là hoàn thiện dễ dàng. Bữa nào rảnh sẽ lm theo cách này xem sao

16.07.2015 / 06:06
MrKen
Bài đăng: 2646
Trùm!
Vẫn là A N H
alogame đã viết

Dùng sb cho đơn giản chứ ken chứ tốn mất một mục trong hồ sơ. Chỉ cần if cái là hoàn thiện dễ dàng. Bữa nào rảnh sẽ lm theo cách này xem sao

Dùng shoutbox thì ai cũng thay đổi được nhé.

16.07.2015 / 06:14
b0ysh0ckhn
Bài đăng: 1146
Member
Nguyễn Minh Phương

-_- sao giống kiểu mk viết code vậy :3 lí tưởng lớn gặp nhau à :p

16.07.2015 / 06:17
alogame
Bài đăng: 396
Member

Z có code nào đếm số tin trong sb k mrken

16.07.2015 / 06:55
MrKen
Bài đăng: 2646
Trùm!
Vẫn là A N H

Nó hiện ở pagination

16.07.2015 / 07:29
ParkBom
Bài đăng: 593
Member
Hi I Am Park Bom
hanhphucao đã viết

Vì sao gọi là xxx, bởi vì nó là 3x =))

:troll2:

16.07.2015 / 07:47
hanhphucao
Bài đăng: 2470
Admin
Admin là người tận tâm và luôn hành xử đúng mực.

:yao: