09/10/2018, 23:36
Cần giúp đỡ viết web PHP...
Em đang tìm hiểu về lập trình PHP , mong các cao thủ giúp đỡ.
Em muốn viết 1 trang web php về game ( trang web chơi game flash trực tuyến nhưng không cần hệ thống lưu điểm như trochoiviet.com ... )
Những phần em muốn làm là :
1. Menu : tất cả các game được lưu trong database sẽ được hiển thị trên 1 trang.
VD: em tạo table Game (id,name,description,url) , làm thế nào để cho tất cả các 'name' trong table này hiện ra ở trang web menu.php , kể cả các game mình vừa add thêm ?
2. Search : bộ máy tìm kiếm các game trong table Game đó, có lẽ sử dụng câu query
đúng không nhỉ ?
Sau đây là code search người quen em viết ra ( có chỉnh sửa 1 chút ) :
Máy tìm kiếm sẽ có 2 file : timkiem.php và ketqua.php
Trong file timkiem.php :
Trong file ketqua.php :
Code xong rồi ,nhưng em không dùng được ( Cài trên Localhost , khi chạy nó báo là "Access Denied for user 'ODBC'@'localhost' on line... , mặc dù em không hề thiết lập một cái user nào tên 'ODBC' cả ! )
3. Add : công cụ add game . Cái này em dựa vào code search trên mà viết ra. Theo em là dùng query
Tóm lại code add sẽ gồm 2 file : add.php và added.php
Trong file add.php :
Trong file added.php :
~~~~~~~~~~~~
Về phần code em nghĩ là ổn rồi , nhưng em chưa biết cách kết nối website với database!
Khi chạy các file trên localhost nó toàn báo không kết nối được với database vì chưa thiết lập thông tin kết nối như database name, user,password, ... Làm thế nào để thiết lập đây ?
*Mong các bác chỉ rõ tận tình ...
Em muốn viết 1 trang web php về game ( trang web chơi game flash trực tuyến nhưng không cần hệ thống lưu điểm như trochoiviet.com ... )
Những phần em muốn làm là :
1. Menu : tất cả các game được lưu trong database sẽ được hiển thị trên 1 trang.
VD: em tạo table Game (id,name,description,url) , làm thế nào để cho tất cả các 'name' trong table này hiện ra ở trang web menu.php , kể cả các game mình vừa add thêm ?
2. Search : bộ máy tìm kiếm các game trong table Game đó, có lẽ sử dụng câu query
Code:
SELECT * Game WHERE 'name' LIKE '%$tukhoa%'
Sau đây là code search người quen em viết ra ( có chỉnh sửa 1 chút ) :
Máy tìm kiếm sẽ có 2 file : timkiem.php và ketqua.php
Trong file timkiem.php :
Code:
<form name="search" method="post" action="ketqua.php"> <input type=text name="keyword"> <input type=submit value="Tìm"> </form>
Code:
// Lấy giá trị nhập trong textbox , $_POST sẽ nhận giá trị của textbox với tên là keyword // còn $_GET sẽ lấy giá trị trên thanh URL . $keyword = $_POST['keyword'] ; $strSQL = "SELECT * FROM Game WHERE name LIKE '%$keyword%'"; // PHP cho phép để tên biến trực tiếp trong string luôn, ko cần phải dùng phép nối chuỗi . Hay nhỉ $result = mysql_query(strSQL); if (!$result) { echo 'Không thể kết nối : ' . mysql_error(); exit; } echo "<table><tr><td>Tên games</td><td>Link</td>"; while( $row = mysql_fetch_row($result) ) { echo "<tr>"; echo "<td>$row[1]</td><td>$row[3]</td>"; // Row[0] là id, 1 la tengame, 2 la chú thích, 3 là link , thích xuất cái gì tùy em echo "</tr>"; } echo "</table>";
3. Add : công cụ add game . Cái này em dựa vào code search trên mà viết ra. Theo em là dùng query
Code:
INSERT INTO Game('id', 'name', 'description', 'url') values ('%$id%', '%$name%', '%$description%', '%$url%')
Trong file add.php :
Code:
<html><body> <form name="addgame" method="POST" action="added.php"> ID : <input type=text name="id"><br> Tên game : <input type=text name="name"><br> Chú thích :<input type=text name="description"><br> URL :<input type=text name="url"><br> <input type=submit value="ADD"> </form> </body></html>
Code:
<html><body> <?php include ('add.php'); $id = $_POST['id'] ; $name = $_POST['name'] ; $description = $_POST['description'] ; $url = $_POST['url'] ; $strSQL = "INSERT INTO 'game'('id', 'name', 'description', 'url') values ('%$id%', '%$name%', '%$description%', '%$url%')"; // Em thay lệnh SELECT bằng lệnh INSERT INTO để thêm dữ liệu vào DB $result = mysql_query(strSQL); if (!$result) { echo 'Không thể kết nối CSDL : ' . mysql_error(); exit; } echo "Game $name đã được thêm !"; // Cái này không biết có cho ko nhỉ ? đặt biến vào echo luôn ( $name ) ^_^ ?> </body></html>
Về phần code em nghĩ là ổn rồi , nhưng em chưa biết cách kết nối website với database!
Khi chạy các file trên localhost nó toàn báo không kết nối được với database vì chưa thiết lập thông tin kết nối như database name, user,password, ... Làm thế nào để thiết lập đây ?
*Mong các bác chỉ rõ tận tình ...
Bài liên quan
Trước tiên dùng phpMyAdmin để tạo một user mới, tạo database mới.
Tạo một file đặt tên là dbconnect.php như vầy:
$dbserver = 'tên_server';
$dbname = "tên_database";
$dbuser = "username_gì_đó";
$dbpasswd = "password_của_user_trên";
@mysql_connect($dbserver,$dbuser,$dbpasswd) or
die ("Can't connect database.");
@mysql_select_db ($dbname) or
die ("Can't select database");
require_once "dbconnect.php";
if (!$result)
{
echo 'Không thể kết nối : ' . mysql_error();
exit;
}
else
{
echo "<table><tr><td>Tên games</td><td>Link</td>";
// dưới đây, nếu làm như em thì lỡ query thất bại thì làm sao mysql_fetch_row được?
while( $row = mysql_fetch_row($result) )
{
echo "<tr>";
echo "<td>$row***91;1***93;</td><td>$row***91;3***93;</td>"; // Row***91;0***93; là id, 1 la tengame, 2 la chú thích, 3 là link , thích xuất cái gì tùy em
echo "</tr>";
}
mysql_free_result($result); // Giải phóng bộ nhớ
}
- Trang add game : các input em không ghi " vào được ( vì query được quy định là $query = "INSERT INTO..."; ) , muốn ghi thì phải thêm dấu \ vào trước ". Làm thế nào để mình có thể ghi dấu " hay ' vào thẳng luôn , khi submit nó sẽ tự thêm dấu \ vào trước mỗi " hay ' .. ? Em có hỏi 1 anh kia cũng có biết php , ảnh nói là "SQL Inject... Prevention" gì gì đó rồi kêu search trên google ... ko hiểu gì luôn !
- Trang xóa game : em muốn xóa 1 game ( 1 row trong table ) thì làm sao ? Dùng phpmyadmin để lấy code ko được vì nó cho code dạng như thế này :
- Tự động thêm id : trang add game của em mỗi lần thêm game phải tự điền ID vào , làm thế nào để mỗi lần mình add 1 game mới nó tự động add ID lớn hơn ID hiện tại ko ? VD: trong DB có 9 game , tức ID lớn nhất là 9 , add thêm game mới nó sẽ tự thêm vào cột id là 10.
- ORDER BY : trong trang kết quả , em dùng ORDER BY để sắp xếp dữ liệu xuất hiện , nhưng phải có yêu cầu dạng ORDER BY 'column name' để nó xếp theo column name đó , làm sao để nó chỉ xếp dạng ASC hay DESC mà không yêu cầu 'column name' ( giống như các guestbook hay forum : bài viết mới sẽ được xếp lên trên cùng , bài cũ sẽ xếp xuống dưới.. ---> DESC ).
- dùng $_GET : khi làm 1 trang web động em dùng $_GET để nó có dạng play.php?gameid=1 , để làm điều đó em dùng if () elseif... có cách nào khác không dùng if vẫn làm được trang web động không ? ( dùng if thấy nó rối quá ! ).
- sử dụng Cookie : em đang viết trang admin.php cho game để quản lý như sửa game , xóa game , ... dùng cách cơ bản để set user và password admin ( if ( $user = ... && $pass= ... ) {}.. ) , nếu dùng như vậy hình như không an toàn. Nghe nói phải dùng đến Cookie và Session ... em không hiểu về cookie và session , mong được hướng dẫn.
--------------------------------------------------------
* Trên đây là các vấn đề em đang gặp phải, mong được giúp đỡ.
- Thứ nhất về cái dấu " .. đơn giản cứ dùng hàm addslashes() khi insert vào database , nó sẽ tự thêm dấu \ phía trước " . Tất nhiên khi lấy dữ liệu ra để trình bày thì phải dùng hàm stripslashes() để bỏ những dấu \ đã thếm vào . Nếu sever đã magic_quotes_gpc thì ko cần phải làm như thế , nó sẽ tự làm lấy
- Xóa 1 row ra khỏi table thì cần gì phải khai báo hết tất tần tật đâu , chỉ cần cung cấp cái ID như của bạn là xon rồi
"DELETE FROM table*** WHERE id='$id'" . Nếu nó không chạy bạn nên kiểm tra syntax lại.
- Vấn đề ID tự tăng thì khi thiết kế xây dựng datbase bạn sẽ gán thuộc tính auto_increment , nó sẽ tự tăng lên
- Oder by nhất định phải có tên feild rồi, nếu ko nó order dựa vào đâu , thông thường cứ order by id
- Vấn đền$_GET của bạn mình không hiểu lắm, nếu như bạn muốn điều hướng hành động cho trang web không dùng if ..else thì có thể dùng switch ... case
Tốt nhất là xem lại Php Manual