09/10/2018, 18:27

Giúp dùm tôi hỡi các cao thủ PHP

Tôi có 2 file
file sign.php có nội dung:

<h2>Sign my Guest Book!!!</h2>
<form method=post action=”create_entry.php”>
<b>Name:</b> <input type=text size=40 name=name> <br> <b>Location:</b> <input type=text size=40 name=location> <br> <b>Email:</b> <input type=text size=40 name=email> <br>
<b>Home Page URL:</b> <input type=text size=40 name=url> <br> <b>Comments:</b>
<textarea name=comments cols=40 rows=4 wrap=virtual></textarea> <br> <input type=submit name=submit value=”Sign!”>
<input type=reset name=reset value=”Start Over”>
</form>

file create_entry.php
<?
include(“dbconnect.php”);
if ($submit == “Sign!”)
{ $query = “insert into guestbook (name,location,email,url,comments) values (‘$name’, ‘$location’, ‘$email’, ‘$url’, ‘$comments’)”; mysql_query($query) or
die (mysql_error());
?>
<h2>Thanks!!</h2>
<h2><a href=”view.php”>View My Guest Book!!!</a></h2>
<?php
}
else { include(“sign.php”); } ?>

Khi tôi chạy file sign.php, nhập các thông tin vào form và submit thì trang create_entry.php báo lỗi là:
Notice: Undefined variable: submit in c:inetpubwwwroot huchanh_phpcreate_entry.php on line 3
Các cao thủ có thể cho tôi biết tại sao nó lại báo lỗi như vậy ko?
quỷ kiếm viết 20:44 ngày 09/10/2018
Lỗi: if ($submit == “Sign!”)
Biến $submit chưa được định nghĩa!
Từ php 4.3.7 (hình như vậy, ko nhớ chính xác) trở đi, các giá trị được gởi từ form bằng phương thức POST hoặc GET sẽ ko lưu trữ trong các biến toàn cục dạng $tên_biến, mà được lưu trữ trong các mảng $HTTP_POST_VARS , hoặc $_POST (Đối với phương thức GET thì bạn thay chữ POST = GET), Trong các phiên bản mới hơn thì php khuyến cáo nên dùng mảng $_POST và có thể tương lai sẽ ko hỗ trợ mảng $HTTP_POST_VARS nữa.
Như vậy trong file create_entry.php bạn có một số cách để nhận giá trị submit.
Dùng trực tiếp : $_POST["submit"]
Gán vào biến trung gian $submit = $_POST["submit"]
Dùng hàm extract($_POST); sau đó dùng các biến $submit, $name,...
Bạn có thể dùng lệnh print_r($_POST); để kiểm tra các biến và giá trị được gởi đến bằng phương thức POST.
ltuananh viết 20:43 ngày 09/10/2018
Cám ơn Quỷ kiếm thật nhiều, nhưng cho tôi hỏi thêm 1 câu nữa nhé. Ko hiểu sao dữ liệu được thêm vào trong bảng dữ liệu Guestbook đối với những font Unicode thì có dạng như sau: chẳng hạn "Lê Minh Lộc" thì trở thành "Lê Minh L***7879;c" trong bảng dữ liệu, có cách nào mà trong bảng dữ liệu cũng là "Lê Minh Lộc" luôn ko bạn?
NsT viết 20:41 ngày 09/10/2018
Trong bảng dữ liệu ? ý bạn nói là trong database ở trong host phải không ? nếu vậy thì ở phần Home của myphpadmin có phần chọn charset , bạn thử chọn là utf-8 coi có được không .

Còn ở trong web thì bạn thử đặt dòng này trong <head> , và dùng unicode để type tiếng việt xem

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
ltuananh viết 20:38 ngày 09/10/2018
Tôi mới học PHP được 2 ngày thôi, chỉ là tự học nên chưa biết nhiều. NsT có thể cho tôi biết phần "Home của myphpadmin" là ở đâu ko vậy?

Tôi mới học PHP được 2 ngày thôi, chỉ là tự học nên chưa biết nhiều. NsT có thể cho tôi biết phần "Home của myphpadmin" là ở đâu ko vậy?
quỷ kiếm viết 20:42 ngày 09/10/2018
Cái đó là do dữ liệu của form nhập đã được mã hoá. Dữ liệu được mã hoá theo các bảng mã khác nhau. Bảng mã mà chúng ta hay dùng là UTF-8 hoặc windows-1252 . Để thay đổi bảng mã của form nhập dữ liệu. Bạn mở file sign.php tìm đến dòng
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
(Nếu bạn soạn thảo bằng dreamweaver thì dòng này là dòng số 4. Ở chế độ code)
Bạn sửa lại thành
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
hoặc
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
Nếu bạn đã xoá mất dòng này thì có thể thêm vào. Vị trí của nó là trong thẻ <head>...</head>
----------------------------------------------------------------
phpmyadmin và một trang web có chức năng quản trị csdl mysql. Nó thường phát hành kèm với các chương trình phptriad hoặc applser ...
Bạn thử vào thư mục htdocs. nếu có thư mục phpmyadmin thì trang web này đã có và bạn có thể sử dụng trang web này để thao tác với csdl. Bạn có thể download bản mới hơn tại địa chỉ sau: www.phpmyadmin.net
sử dụng phpmyadmin: http://localhost/phpmyadmin
File cấu hình: htdocs/phpmyadmin/config.inc.php
Bài liên quan
0