09/10/2018, 23:58

Nhờ phát triển thêm cái script php

Chào hết, mình cũng là dân vừa mới mò mẫm cái PHP thôi. Code source scripts thì nhiều nhưng mình muốn đi từ cái đơn giản 1 chút cho dễ, sẵng tiện share luôn cho các newbie.
Mình có 1 cái script trang tin tức đơn giản này:

http://www.freewebs.com/caominhtriet/tintuc.rar

- Bạn có thể sử dụng apache để chạy php trên máy (làm trên localhost trước hén).
- Chỉnh các thông trong file config.php gồm có:
+ db_name: database bạn đã tạo trong phpmyadmin (http://localhost/phpmyadmin)
tạo database xong rồi import cái file sql vào để tạo các table)
file sql nằm trong thư mục install/creat.sql
+ db_username: để "root" nếu bạn chạy trên localhost
+ db_password: Bạn có thể để trống
+ root_domain: có thể là "http://localhost/tintuc" nếu bạn chạy trên localhost

Vậy là có thể chạy cái website của bạn rồi. Và người đăng ký đầu tiên là admin. Vào đăng ký, post vài bài thử trước khi tiếp tục phá.

Script này đơn giản chỉ là kết hợp giữa các khung trong template là header.tpl, index.tpl và footer.tpt vậy nên rất dễ cho các người mới như mình mò mẫm học trước.

Mình đã vọc nhiều cái này rồi và chế ra nhiều giao diện khác nhau (chủ yếu là thêm bớt trong phạm vi có sẵn của nó), nhưng vấn đề quan trọng là mình muốn phát triển thêm nó ra để nghiên cứu tiếp cái ngôn ngữ php này, tìm tòi đã đời nhưng năng lực hạn chế nên đành nhờ vã thêm các đại ca ở đây:

1. Tạo thêm phần comment cho các bài viết
2. Khi post bài có thể chèn thêm video, flash, nhạc...
3. Quản lý thành viên cao cấp hơn, thay vì chỉ có 2 cấp admin và member mà thôi.

Nói chung là vừa share vừa hỏi, hì...
Bạn có thể hướng dẫn hoặc làm luôn thì càng tốt rồi share cho mọi người trên này luôn hén!
Nếu kô có nhiều thời gian mà bạn nào có scripts nào tương tự đáp ứng đủ mấy cái đó thì share cho mình với nha!
Thanks!!!
(Nhớ càng đơn giản, dễ sửa càng tốt, mới chập chững mà, hì hì...)
temp2 viết 02:10 ngày 10/10/2018
Thank you for sharing
gaulucky92 viết 02:00 ngày 10/10/2018
A, tui cũng đang có ý tưởng về comment... Định làm thử nè.. Nhưng cho hỏi chút, bạn biết cách hiển thị danh sách bài viết cố định như các forum ko? (VD: có 50 bài viết,mà mỗi trang chỉ hiện 10 bài, do đó nó sẽ hiện lên mục chọn Trang: 1 - 2 - 3 - 4 - 5
Tui làm cho select theo trang được rồi, nhưng ko biết cách hiển thị số trang...

Phần chèn nhạc, videos... bạn có thể dùng cái WYSIWYG, cái này tìm trên mạng có nhiều.. hoặc xem bài xây dựng một Rich TExt Editor: http://ddth.com/showthread.php?t=160685

Phần member theo tui bạn chỉ cần tạo thêm group cho thành viên thôi, sau đó là set quyền ... blah blah...
Hero_vanchien viết 02:10 ngày 10/10/2018

1. Tạo thêm phần comment cho các bài viết
2. Khi post bài có thể chèn thêm video, flash, nhạc...
3. Quản lý thành viên cao cấp hơn, thay vì chỉ có 2 cấp admin và member mà thôi.
1. Mấy cái này cũng không khó lắm, tạo thêm một table nữa để lưu comment (Bạn làm được các phần thêm bớt khác chăc chắn làm được cai này)
2.Có thể dùng WYSIWYG hoặc sử dụng TAG do bạn tự quy định sau đó replace các tag đóng và tag mở bằng các đoạn HTML: như [FLASH]http://...abc.swf[/FLASH]...v.v
3. cái này khá phức tạp. Nếu bạn định mở rộng nhưng vẫn cố định thì bạn code trực tiếp. Còn nếu theo kiểu như diễn đàn này chẳng hạn (với người mới thì là rất khó) bạn tạo thêm một vài table nữa để làm trung gian quyết định xem người này tại module, category, forum này có quyền gì. Nhưng bạn vẫn phải có một cái cố định đó là các chức năng tương ứng với quyên như: thêm, sửa, xóa được gắn với các cấp thành viên.

Nhưng cho hỏi chút, bạn biết cách hiển thị danh sách bài viết cố định như các forum ko? (VD: có 50 bài viết,mà mỗi trang chỉ hiện 10 bài, do đó nó sẽ hiện lên mục chọn Trang: 1 - 2 - 3 - 4 - 5
Bạn có được số trang thì cách đơn giản nhất là dùng vòng lặp theo số trang đó để tạo link
vd:
Code:
<?php
$pages = 5;
for($i=1;$i<=$pages;$i++){
echo '<a href="content.php?page='.$i.'">'.$i.'</a>';
}
?>
trên thực tế có thể còn phải kết hợp với các giá trị URI khác nữa để tạo request, cái này cũng khá phực tạp mình xin không nói nữa để các bạn đỡ choáng khi mới tìm hiểu.
gaulucky92 viết 01:58 ngày 10/10/2018
Kiểu vòng lặp thì mình làm được rồi, nhưng vất cả ở chỗ số trang cơ ! Ko phải lúc nào mình cũng để số bài/1 trang = 10 cả, mình muốn làm cho nó có thể biển đổi tùy ý dựa vào số bài trên 1 trang...
Giả sử dùng vòng lặp, cho giá trị ban đầu là 1, vậy còn giá trị cuối?? Đây là code mình làm:
Code:
<?php
  $limit = 0;
  if (isset($_GET['page']) && $_GET['page'] > '1')
  {
      $page = $_GET['page'];
      $limit = ($page-1)*$post_per_page;
      $post_per_page <= $post_per_page+$post_per_page;
  }
  $query = mysql_query("SELECT * FROM post ORDER BY id DESC LIMIT $limit,$post_per_page") or die (mysql_error());
  echo "Trang: ";
  for ($page=1;$page<=NHET_CAI_GI_VAO_DAY;$page++)
  {
      echo " <a href=\"index.php?act=default&page=$page\">".$page."</a> ";   
  }
  while ($row = mysql_fetch_array($query))
  {
      $title = $row['title'];
      echo "<BR>$title";
      
  }
?>
Code trên đã hiển thị tốt phần select dữ liệu dựa theo số trang ( mình cho $post_per_page+$post_per_page ), nhưng còn mục links số trang thì chịu! Chẳng biết nhét cái gì vào nữa!!
Hero_vanchien viết 02:07 ngày 10/10/2018
Làm thế nào để bạn biết câu query của ạn sẽ lấy ra được bao nhiêu trang?!?.
-> Bạn phải biết được có bao nhiêu record được SELECT, từ số record đó chia cho $post_per_page ta có số trang. bạn nhét cái số trang đó vào chỗ bạn cần.

1. query Count() xem có bao nhiêu record trong table.
2. tính toán số trang.
3. tính toán LIMIT
4 Query với LIMIT để lấy ra danh sách record: SELECT *.......LIMIT $limit,$post_per_page
5. In ra dữ kiệu
gaulucky92 viết 02:07 ngày 10/10/2018
Đã thử làm như thế rồi, dùng mysql_num_rows() cũng được phải ko? Nhưng rủi đếm ra số lẻ thì chia thế nào được? Ra số thập phân sao? Giả sử giờ đặt $post_per_page = 5, mà trong db thì có 12 rows (records), vậy chia như thế nào??? Tui thử chia rồi => blank
Mới chỉ làm được phần link trước trang hiện tại. VD đang ở trang 10 thì nó sẽ hiện ra list từ trang 1->9 trước số 10:
1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10
Còn phần sau số 10 thì...

1. query Count() xem có bao nhiêu record trong table.
2. tính toán số trang.
3. tính toán LIMIT
4 Query với LIMIT để lấy ra danh sách record: SELECT *.......LIMIT $limit,$post_per_page
5. In ra dữ kiệu
1. Query count() có thể thay = mysql_num_rows cho nhanh
2. tính thế nào nhỉ?
3. cho $limit = $post_per_page hiện tại, còn $post_per_page thì +thêm $post_per_page vào nữa
4. cái này thì OK
..
Nói chung phần tính toán số trang tui chưa làm được plz help~~
Hero_vanchien viết 02:14 ngày 10/10/2018
1. Nếu bạn query xong rồi dùng mysql_num_rows(): Có nghĩa là bạn làm mò. sẽ tốn rất nhiều RAM của máy chủ khi database của bạn lớn.
2: PHP manual: Ceil()
caominhtriet viết 02:12 ngày 10/10/2018
Mình chỉ bắt chước copy & past thôi, chưa qua trường lớp nào về PHP và SQL cả nên chẳng biết tạo table ntn. Làm giúp mình cái comment cho từng bài viết trong cái source trên đi!, please... từ từ rồi mới học hỏi tiếp chứ! Cài cái script đó nhanh òm mà, pls.... Table gồm những thứ gì, rồi đoạn code chèn vào source (trong trang viewpost)như thế nào?
Chủ yếu cái comment thôi, còn chèn thêm flash và video thì mình cũng gần gần ra rồi, tìm sửa cái lỗi nữa là okie. Còn cái tạo quyền cho thành viên thì hơi phức tạp nên từ từ nghiên cứu tiếp cũng đc.
Có ai test thử cái srcipt trên rồi giúp mình với nha! thankz
gaulucky92 viết 02:08 ngày 10/10/2018
Script của bạn tui test rồi, kì quá, import database ko được cứ báo lỗi sai giá trị DEFAULT của mấy cái table... tui xóa hết mấy dòng DEFAULT thì OK, nhưng run thử thì lỗi tùm lum...
Bạn muốn làm comment hả? Đề từ từ, tui hoàn thành cái phần số trang rồi thì bắt đầu làm qua comments... Hiện tại code tui chỉ có post bài thôi: http://websiteviet.info

@Hero_vanchien: sao tui xài count ko được zậy?? Trong table có 22 records (22 rows),nhưng select count(*) ra là #Resource #14 !! Ko hiểu gì ..!?
Còn xài mysql_num_rows thì ra đúng số records (22) .. còn về nặng thì chắc ko tới nỗi nào đâu... vì gán query cho biến, và chạy num_rows ==> trước sau cũng chỉ 1 thao tác mysql trong file:
Code:
$q = mysql_query("SELECT * FROM post") or die (mysql_error());
$check = mysql_num_rows($q);
==> Cuối cùng là chia trang đều đặn với hàm ceil()
Bài liên quan
0