10/10/2018, 09:50

Form đăng kí này sai ở đâu ạ??

em có cái form đăng kí như viết như này ạ:
Code:
	<form action ="dangki.php" method ="post">
	<p> <b> Tên đăng nhập:</b> <input type="text" name="tendn" size="20" maxlength="20" value="" /></p>
	<p> <b> Mật khẩu : </b> <input type="password"" name = "matkhau" size ="20" maxlength="20" /></p>
	<p> <b> Email : </b> <input type = "text" name="email" size ="40" maxlength="40" value = "" /></p>
	 <div align="center"><input type = "submit" name="submit" value="Đăng ký" /> </div>
	<?php
	if (isset($_POST['submit']))
	{
		$message = NULL;
		if (empty($_POST['tendn']))
		{
			$tdn = FALSE;
			$message = '<p> Ban chua khai bao ten dang nhap! </p>';
			
		}
		else
		{
			$tdn = $_POST['tendn'];
		}
		if (empty($_POST['matkhau']))
		{
			$mk = FALSE;
			$message = '<p> Ban chua nhap mat khau! </p>';
		}
		else
		{
			$mk=$_POST['matkhau'];
		}
		if (empty ($_POST['email']))
		{
			$mail = FALSE;
			$message = '<p> Ban chua nhap email </p>';
		}
		else 
		{
			$mail = $_POST['email'];
		}
	if (isset ($message))
	{
		echo '<font color ="red" >', $message, '</font>';
	}
	}
	?>

	 </form>
Còn đây là trang dangki.php
Code:
	<?php
	{
		include ('dbconnect.php');
		mysql_query("SETNAMES 'UTF8'");
		if (isset($_POST['submit']))
		{
			$query = "INSERT into users (Matv, Tendangnhap, Matkhau, Email) VALUES (Matv+1, '$tdn', '$mk', '$mail')"
			 or die(mysql_error());
			$result = @mysql_query($query);
		if ($result) 
			{
			echo "Chúc mừng ban đã đăng kí thành công";
			}
		else
			{
			 echo "Loi ket noi database" ;
		
			}
		
		}
	}
	?>
Sau khi chạy xong thì toàn "Loi ket noi database" ạ . Em tìm mãi mà ko biết lỗi chỗ nào vậy các bác?
hoainguyenduc viết 11:59 ngày 10/10/2018
Được gửi bởi nguyenthao_1011
em có cái form đăng kí như viết như này ạ:
Code:
	<form action ="dangki.php" method ="post">
	<p> <b> Tên đăng nhập:</b> <input type="text" name="tendn" size="20" maxlength="20" value="" /></p>
	<p> <b> Mật khẩu : </b> <input type="password"" name = "matkhau" size ="20" maxlength="20" /></p>
	<p> <b> Email : </b> <input type = "text" name="email" size ="40" maxlength="40" value = "" /></p>
	 <div align="center"><input type = "submit" name="submit" value="Đăng ký" /> </div>
	<?php
	if (isset($_POST['submit']))
	{
		$message = NULL;
		if (empty($_POST['tendn']))
		{
			$tdn = FALSE;
			$message = '<p> Ban chua khai bao ten dang nhap! </p>';
			
		}
		else
		{
			$tdn = $_POST['tendn'];
		}
		if (empty($_POST['matkhau']))
		{
			$mk = FALSE;
			$message = '<p> Ban chua nhap mat khau! </p>';
		}
		else
		{
			$mk=$_POST['matkhau'];
		}
		if (empty ($_POST['email']))
		{
			$mail = FALSE;
			$message = '<p> Ban chua nhap email </p>';
		}
		else 
		{
			$mail = $_POST['email'];
		}
	if (isset ($message))
	{
		echo '<font color ="red" >', $message, '</font>';
	}
	}
	?>

	 </form>
Còn đây là trang dangki.php
Code:
	<?php
	{
		include ('dbconnect.php');
		mysql_query("SETNAMES 'UTF8'");
		if (isset($_POST['submit']))
		{
			$query = "INSERT into users (Matv, Tendangnhap, Matkhau, Email) VALUES (Matv+1, '$tdn', '$mk', '$mail')"
			 or die(mysql_error());
			$result = @mysql_query($query);
		if ($result) 
			{
			echo "Chúc mừng ban đã đăng kí thành công";
			}
		else
			{
			 echo "Loi ket noi database" ;
		
			}
		
		}
	}
	?>
Sau khi chạy xong thì toàn "Loi ket noi database" ạ . Em tìm mãi mà ko biết lỗi chỗ nào vậy các bác?
tìm trong file dbconnect.php mà bạn include xem config đúng chưa, như là đúng server, username, pass hay là tên db.
Shellingfox viết 12:00 ngày 10/10/2018
Lạy hồn. Viết kiểu này thì cái đống kiểm tra kia là thừa à :|.

Còn bạn kiểm tra file dbconnect.php đi, chắc là điền sai thông tin database rồi
nguyenthao_1011 viết 12:00 ngày 10/10/2018
Hix..Em đã kiểm tra kỹ file dbconnect.php rồi, đúng hết ạ.
@bác shellingfox: Đống code của em có gì ko ổn ạ? cái đống kiểm tra kia là để bắt buộc người dùng phải nhập hết vào các trường mà.
ktakta viết 12:04 ngày 10/10/2018
không show file dbconnect.php ra có trời mà lần bị sai chỗ nào
nguyenthao_1011 viết 11:51 ngày 10/10/2018
Được gửi bởi ktakta
không show file dbconnect.php ra có trời mà lần bị sai chỗ nào
show luôn:
Code:
<?
mysql_connect("localhost", "root","") 
or die ("Could not connect to database");
mysql_select_db("huongnghiep") or 
die ("Could not select database");
?>
tất cả đều chuẩn mờ
// cái dòng "Loi ket noi database" là em echo ra đấy ạ. {Sợ các bác chưa xem hết đoạn code của em lại bảo file dbconnect có vấn đề :| }
lucky-boy viết 12:07 ngày 10/10/2018
Cái này đây phải do lỗi ko kết nối được đến DB đâu mà sao lại echo như dzi.
Bạn hãy xem lại db structure và câu query.

Code như dzi làm sao file dangki.php có thể hiểu các biến $tdn, $mk, $mail mà insert vào. Các biến đó là NULL, khi thực hiện insert sẽ bị lỗi.

Copy đoạn này vào đầu file dangki.php

Code:
	if (isset($_POST['submit']))
	{
		$message = NULL;
		if (empty($_POST['tendn']))
		{
			$tdn = FALSE;
			$message = '<p> Ban chua khai bao ten dang nhap! </p>';
			
		}
		else
		{
			$tdn = $_POST['tendn'];
		}
		if (empty($_POST['matkhau']))
		{
			$mk = FALSE;
			$message = '<p> Ban chua nhap mat khau! </p>';
		}
		else
		{
			$mk=$_POST['matkhau'];
		}
		if (empty ($_POST['email']))
		{
			$mail = FALSE;
			$message = '<p> Ban chua nhap email </p>';
		}
		else 
		{
			$mail = $_POST['email'];
		}
}
Shellingfox viết 11:53 ngày 10/10/2018
Được gửi bởi nguyenthao_1011
Hix..Em đã kiểm tra kỹ file dbconnect.php rồi, đúng hết ạ.
@bác shellingfox: Đống code của em có gì ko ổn ạ? cái đống kiểm tra kia là để bắt buộc người dùng phải nhập hết vào các trường mà.
Ờ. Với điều kiện tên file đó phải là dangky.php. Bạn thử coi form của bạn submit lên trang dangky.php và cái file dangky.php của bạn dưa ra chỉ có mấy dòng SQL thì làm sao mà nó kiểm tra được. Mình nói thừa là vì vậy, bạn thử chạy và không điền gì xem có kiểm tra được không.



Sửa như luckyboy là ok rồi đó.

P/S: Thiệt tình đọc mấy cái code mix tất tần tật Model-View-Controller như thế này hoa cả mắt. Bị lỗi đâu tìm cho chết luôn.
rong_nho viết 11:54 ngày 10/10/2018
Bạn nên echo cái $query này ra chuỗi rồi paste thẳng vào cái PhpMyadmin thử coi, tôi nghi ngờ là cái dòng này nó bị lỗi.
"INSERT into users (Matv, Tendangnhap, Matkhau, Email) VALUES (Matv+1, '$tdn', '$mk', '$mail')" Tôi nghi nhất là cái đoạn 'Matv+1 " đó, trên php nó không thực hiện một phép toán trên một chuỗi đâu,bạn thử echo xem. Nếu bạn muốn cái field nó tự tăng lên thì tốt nhất là cho field nó thành autonumber đi.
phuongthom viết 12:04 ngày 10/10/2018
đúng đó, lệnh UPDATE thì có thể tính toán trên tên field được chứ INSERT thì ko được

Để tự động tăng Matv lên 1 thì nên đặt chế độ Auto Increment cho field này
và dùng code sau
PHP Code:
"INSERT into users (Tendangnhap, Matkhau, Email) VALUES ('$tdn', '$mk', '$mail')" 
Bài liên quan
0