Hỏi - Đáp

Giáo viên trả lời:
Trong Dreamweaver Bạn vào menu Commands -> chọn menu Apply Source Formating là OK liền 


html format

Giáo viên trả lời:

$so = "";
$chu = "";
$thongbao ="";
/***************Viết hàm đọc số hàng đơn vị***************/
function docso_hangdonvi($so){
if($so >= 0 && $so <= 9){
switch($so){
case 0: return "không";
case 1: return "một";
case 2: return "hai";
case 3: return "ba";
case 4: return "bốn";
case 5: return "năm";
case 6: return "sáu";
case 7: return "bảy";
case 8: return "tám";
default: return "chín";
}
}
}
function docso_hangchuc($so){
if($so >= 10 && $so <= 99){
//tách số người dung nhập vào ra dạng 1 số và dung hàm docsohangdonvi đọc riêng tứng số
// 3 => docsohangdonvi(3)
// 9 => docsohangdonvi(9)
$so_hang_chuc = floor($so/10); //hàm làm tròn xuống floor(3.9) => 3
$so_hang_don_vi = $so % 10;
$chu_hang_chuc = docso_hangdonvi($so_hang_chuc); //Ba
$chu_hang_don_vi = docso_hangdonvi($so_hang_don_vi); // chín
// nối chừ hàng chục với chữ hàng đơn vị
//Xử lí một số trường hợp đặc biệt
// 10: => Mười
// 11,12,13,14,15,16,17,18,19 => Mười một
// 25,35,45,65,75,85,95 => hai mươi năm
// 20,30,40,50,60,70,80,90 => hai mươi
// 21,31,41,51,61,71,81,91 => hai mươi mốt
if($so == 10){
return "Mười";
}elseif($so == 15){
return "mười lăm";
}elseif($so_hang_chuc == 1){
return "Mười $chu_hang_don_vi";
}elseif($so_hang_don_vi == 5){
return "$chu_hang_chuc mươi lăm";
}elseif($so_hang_don_vi == 0){
return "$chu_hang_chuc mươi";
}elseif($so_hang_don_vi == 1){
return "$chu_hang_chuc mươi mốt";
}else{
return "$chu_hang_chuc mươi $chu_hang_don_vi";
}
}
}
//echo docsohang_chuc(39);
function docso_hangtram($so){
if($so >= 100 && $so <= 999){ //496
//tách số ra:4 => docso_hangdonvi(4)=>Bốn, 96 => docso_hangchuc(96)=> chín mươi sáu
$so_tram = floor($so/100); //4
$so_chuc = $so % 100; //96
$chu_tram = docso_hangdonvi($so_tram); //Bốn
$chu_chuc = docso_hangchuc($so_chuc);// Chín mươi sáu
if($so_chuc == 0){
// đoạn này nên xử lí thê nào ạ ?
}
return "$chu_tram trăm $chu_chuc";
}
}
//echo docso_hangtram(555);
if(isset($_POST['btnTinh']) && $_POST['so'] >= 0 && $_POST['so'] <= 999){
$so = $_POST['so'];
if($so < 10){
$chu = docso_hangdonvi($so);
}elseif($so < 100){
$chu = docso_hangchuc($so);
}else{
$chu = docso_hangtram($so);
}
}else{
$thongbao = " số nhấp vào phải >=0 và <=999";
}

======================================================
Cách sửa lại bạn xem câu (#291) nằm ở trang 8 trong phần hỏi đáp trong website hocwebgiare.com nhé.

Giáo viên trả lời:
Bạn xem bài học của Tuần học có tên như hình, xem các bài học được đánh dấu màu vàng có hướng dẫn cách thiết kế các bảng này. 

Còn phần nhập liệu cho các bảng này khi vào phần thiết kế module AdminCP ta mới học cách tạo Form để nhập liệu vào cho các table này.

thiet ke database MySQL

Giáo viên trả lời:
SMTP: mail.cacmaunhadep.vn

User:testmail@cacmaunhadep.vn
Pass:testmail

Giáo viên trả lời:
Bạn có thể cấu hình các thông số Unikey như các hình bên dưới


su dung Unikey

cau hinh Unikey

+ Khi nhập liệu vào bảng trong MySQL Gui Tool nếu ta nhập tiếng Việt thì sau này khi xuất dữ liệu ra ta phải SET NAMES utf8 thì khi xuất dữ liệu ra mới có tiếng việt
+ Nếu ta nhập tiếng Việt vào bảng như vậy thì sẽ không bảo mật dữ liệu lắm vì nhìn vào thấy hết dữ liệu.
+ Sau này khi nhập liệu vào bảng ta sẽ thiết kế Form để nhập liệu thì dữ liệu chèn vào bảng sẽ mã hoá do đó sẽ bảo mật hơn vì sẽ khó đọc.
+ Trong bài thực hành nhập liệu cho table trong database này ta tập nhập liệu để biết cách nhập liệu và hiểu bảng nó lưu cái gì trong đó thôi, chứ sau này ta không nhập liệu tiếng Việt trực tiếp vào database như vậy mà phải thiết kế FROM để nhập liệu để bảo mật hơn.
+ Trong bài thực hành này Bạn cũng có thể nhập tiếng Việt không dấu cũng được.

Giáo viên trả lời:
So sánh chuỗi để sau này chúng ta có thể dùng nó trong việc tìm kiếm dữ liệu. Ví dụ khi người ta muốn tìm dữ liệu người ta sẽ nhập vào một chuỗi vậy chúng ta phải so sánh xem chuỗi người dùng nhập vào nó có tồn tại trong chuỗi gốc của chúng ta hay không? nếu có thì chúng ta sẽ xuất ra kết quả tìm kiếm.

Giáo viên trả lời:

<form action="?action=user" method="POST" name="dn" onsubmit="return check_submit();">
<table style="padding: 10px; ">
<tr>
<td>Tên Người chơi :</td>
<td><input style="margin-left: 15px;" type="text" name="username" size="30" id="name"><span style="color:red; font-weight: bold; margin-left: 20px;" id="ckuser"></span></td>
</tr>
<tr>
<td>Email:</td>
<td><input style="margin-left: 15px;" type="text" name="email" size="30" id="email"><span style="color:red; font-weight: bold; margin-left: 20px;" id="ckemail"></span></td>
</tr>
<tr>
<td></td>
<td><input style="margin-left: 15px; height:35px; font-size: 12" type="submit" name="ok" value="Bắt đầu" class="button small blue"></td>
</tr>
</table>
</form>
<!-- check form!-->
<script language="javascript" type="text/javascript">
document.forms['dn'].name.focus();
function check_submit(){
var frm = window.document.dn;
var name = frm.username;
var email = frm.email;
var filter = /^[A-Za-z0-9]+([_\.\-]?[A-Za-z0-9])*@[A-Za-z0-9]+([\.\-]?[A-Za-z0-9]+)*(\.[A-Za-z]+)+$/;
if(name.value == ''){
document.getElementById("ckuser").innerText= "Xin vui lòng nhập tên của bạn!";
name.focus();
return false;
} else {
if(name.value.length < 4) {
document.getElementById("ckuser").innerText= "Tên phải có 4 ký tự trở lên!";
name.focus;
return false;
} else {
document.getElementById("ckuser").innerText= "";
}
}
if(email.value=='') {
document.getElementById("ckemail").innerText= "Xin vui lòng nhập Email !";
email.focus();
return false;
} else {
document.getElementById("ckemail").innerText= "";
if (!filter.test(email.value)) {
document.getElementById("ckemail").innerText= "Email không hợp lệ";
email.focus;
return false;
} else {
document.getElementById("ckemail").innerText= "";
}
}
}
</script>
===========================================================
Bạn hãy viết thêm hàm xử lý khoảng trắng rồi sau đó hãy kiểm tra

<form action="" method="POST" name="dn" onsubmit="return check_submit();">
<table style="padding: 10px; ">
<tr>
<td>Tên Người chơi :</td>
<td><input style="margin-left: 15px;" type="text" name="username" size="30" id="name"><span style="color:red; font-weight: bold; margin-left: 20px;" id="ckuser"></span></td>
</tr>
<tr>
<td>Email:</td>
<td><input style="margin-left: 15px;" type="text" name="email" size="30" id="email"><span style="color:red; font-weight: bold; margin-left: 20px;" id="ckemail"></span></td>
</tr>
<tr>
<td></td>
<td><input style="margin-left: 15px; height:35px; font-size: 12" type="submit" name="ok" value="Bắt đầu" class="button small blue"></td>
</tr>
</table>
</form>
<SCRIPT LANGUAGE="JavaScript">
function trim(str)
{
var start = 0;
var end = str.length;
while (start < str.length && str.charAt(start) == ' ')
start++;
while (end > 0 && str.charAt(end-1) == ' ')
end--;
return str.substr(start, end-start);
}
</script>

<!-- check form!-->
<script language="javascript" type="text/javascript">
document.forms['dn'].name.focus();
function check_submit(){
var frm = window.document.dn;
var name = frm.username;
var email = frm.email;
var filter = /^[A-Za-z0-9]+([_\.\-]?[A-Za-z0-9])*@[A-Za-z0-9]+([\.\-]?[A-Za-z0-9]+)*(\.[A-Za-z]+)+$/;
var temp_name=trim(name.value);
if(temp_name == ''){
document.getElementById("ckuser").innerText= "Xin vui lòng nhập tên của bạn!";
name.value='';
name.focus();
return false;
} else {
if(temp_name.length < 4) {
document.getElementById("ckuser").innerText= "Tên phải có 4 ký tự trở lên!";
name.value='';
name.focus();
return false;
} else {
document.getElementById("ckuser").innerText= "";
}
}
if(email.value=='') {
document.getElementById("ckemail").innerText= "Xin vui lòng nhập Email !";
email.focus();
return false;
} else {
document.getElementById("ckemail").innerText= "";
if (!filter.test(email.value)) {
document.getElementById("ckemail").innerText= "Email không hợp lệ";
email.focus;
return false;
} else {
document.getElementById("ckemail").innerText= "";
}
}
}
</script>

Giáo viên trả lời:
+ Bạn tải các extension html5,css3 tại đây http://hocwebgiare.com/attach/html5css3.rar

+ Sau đó bạn hãy mở chương trình Adobe Extension manager CS3 lên

adobe extension manager

+ Bấm nút Install rồi chọn 2 tập tin vừa mới giải nén ra (2 tập tin này bạn nên đặt ở thư mục gốc ổ C hay D)

adobe extension manager

+ Trong lúc cài đặt nhớ đóng DWCS3
+ Sau khi cài đặt xong mở DWCS3 lên lại

Giáo viên trả lời:
Dreamweaver CS6 không hỗ trợ Toolbox,, bản DWCS6 chủ yếu hỗ trợ thiết kế web chạy trên Mobile.
Do đó bạn hãy dùng DWCS4 hay DWCS3 mới cài được, tốt nhất là dùng DWCS3 vì theo tôi bản này chạy tốt nhất trên DWCS3.

Do đó bạn hãy cài thêm vào máy bản DWCS3 sau đó cài thằng này vào là OK. Nhớ cài thêm HTML5 &  CSS3 cho DWCS3

Giáo viên trả lời:
Tại sao ta phải gõ vậy cho mất công vậy? 

Thao tác khai báo website của bạn trong Dreamweaver bạn đã làm chưa?
Bạn đang chạy cơ chế 1 website hay chạy cơ chế nhiều website theo dạng máy ảo?
Bạn đang cấu hình cho website nào? website tin tức cms hay website project?
Bạn có khai báo webiste của bạn trong mục Site->Manage Site hay chưa?
Đã có khai báo các thông số Local Info, Remote InfoTesting Server hay chưa?

Thông số Local Info bao gồm các thông tin như:

   + Site name: cms
   + Local root folder: chỉ đường dẫn tới thư mục đang chứa webiste ví dụ:C:\AppServ\www\cms\
   + HTTP Address: http://localhost

Thông số Remote Info bao gồm các thông số như

   + Access: Local/Network
   + Remote Folder: C:\AppServ\www\cms\

Thông số Testing Server bao gồm các thông số

   + Server Model: PHP/MySQL
   + Access: Local/Network
   + URL Prefix: http://localhost/

Bạn đã cấu hình thông số Documentroot trong file cáu hình httpd.conf của web server tới thư mục chứa trang web của bạn hay chưa?
Bạn đã khởi động lại Web Server sau khi đã cấu hình tập tin httpd.conf hay chưa?

Nếu bạn chưa làm qua các bước in đậm phía trên thì nó sẽ không cho bạn preview trực tiếp trang web động php từ Dreamweaver mà phải tự gõ tay đường dẫn vào

Giáo viên trả lời:
Trong website của bạn thấy vị trí bạn đặt Jquery này chưa thích hợp, bạn hãy cho nó lên phía trên thằng nicescroll là OK.


su dung jquery scoll to top

Giáo viên trả lời:

$thongbao = "";
$sont ="";
if(isset($_POST['btn_ktra'])){
$sont = $_POST['sont'];
//Số nguyên tố là số chỉ chia hết cho 1 và chính nó
if($sont > 1){
//xử lia kiểm tra số nguyên tố
/*
Dùng for để duyệt các số từ 2 < số người dùng nhập vào
- nếu số người dùng nhập vào ko chia hết cho mọi i(biến đếm) -> số nhập vào là số nguyến tố
- nếu số người dùng nhập vào chia hết cho một i nào đó -> ko phải là số nguyên tố
*/
for($n=2; $n<=$sont; $n++){
// ứng với mọi giá trị của n thì sẽ kiểm tra xem n có phải là số nguyên tố hay ko?
 
$flag = true; // là số nguyên tố
$i=2;
while($i < $n){
if($n % $i == 0){
$flag = false; // ko phải là số nguyên tố
break;
}
$i++;
}
if($flag == true){
$thongbao.="$n;";
}
$thongbao = $thongbao." là số nguyên tố";
}
}else{
$thongbao ="Số bạn nhập vào ko phải là số nguyên tố";
}
 
 
}
tim day so nguyen to

============================
Đoạn cdoe của bạn có những chỗ bắt đầu { và kết thúc } sai chỗ

$thongbao = "";
$sont ="";
if(isset($_POST['btn_ktra'])){
$sont = $_POST['sont'];
//Số nguyên tố là số chỉ chia hết cho 1 và chính nó
if($sont > 1){
//xử lia kiểm tra số nguyên tố
/*
Dùng for để duyệt các số từ 2 < số người dùng nhập vào
- nếu số người dùng nhập vào ko chia hết cho mọi i(biến đếm) -> số nhập vào là số nguyến tố
- nếu số người dùng nhập vào chia hết cho một i nào đó -> ko phải là số nguyên tố
*/
for($n=2; $n<=$sont; $n++){
// ứng với mọi giá trị của n thì sẽ kiểm tra xem n có phải là số nguyên tố hay ko?
 
$flag = true; // là số nguyên tố
$i=2;
while($i < $n){
if($n % $i == 0){
$flag = false; // ko phải là số nguyên tố
break;
}
$i++;
}
if($flag == true){
$thongbao.="$n;";
}
} //end for => thiếu kết thúc for
$thongbao = $thongbao." là số nguyên tố";
//} dư kết thúc if vì bên dưới có dấu } rồi
}else{
$thongbao ="Số bạn nhập vào ko phải là số nguyên tố";
}
 
 
}
?>

Giáo viên trả lời:
Đã gửi ví dụ mẫu cho bạn qua email, kiểm tra email để làm thử, có chỗ nào không hiểu thì gửi câu hỏi để tôi giải thích cho bạn kỹ hơn.

Bạn xem trước rồi hỏi sẽ tốt hơn.
Trong này tôi chỉ nói một số ý thôi
+ Khi thiết kế form bạn phải đặt một tên cho nó trong ví dụ này form của ta là dangky
+ Khi click nút đang ký thì sẽ bắt đầu kiểm tra hợp lệ do đó trong thẻ form này ta có gọi sữ kiện onSubmit="return kiemtra()"
+ Mỗi thành phần trong form bạn phải đặt tên cho nó tại thuộc tính name
+ Sử dụng kỹ thuật viết hàm để viết hàm kiểm tra
+ Để truy xuất tới giá trị của một thành phần trong Form ví dụ ta truy xuất như sau
   document.dangky.teninput.value

Do tôi không biết Form bạn muốn thiết kế là Form như thế nào bao gồm các trường gì nên tôi làm một ví dụ tham khảo cho bạn.  Sau này chúng ta dùng Jquery tạo hợp lệ thì trang trí sẽ đẹp và hay hơn. Còn bây giờ tạm thời bạn dùng Javascript cũng được.

function kiemtra()
{
//Kiểm tra họ tên
if(document.dangky.hoten.value=="")
{
alert("Xin vui lòng nhập họ tên");
document.dangky.hoten.focus();
return false;
}
//Kiểm tra địa chỉ
if(document.dangky.diachi.value=="")
{
alert("Xin vui lòng nhập địa chỉ");
document.dangky.diachi.focus();
return false;
}
//Kiểm tra email
if(document.dangky.email.value=="")
{
alert("Xin vui lòng nhập email");
document.dangky.email.focus();
return false;
}
email=document.dangky.email.value;
atpos = email.indexOf("@");
dotpos = email.lastIndexOf(".");
if (atpos < 1 || ( dotpos - atpos < 2 ))
{
alert("Email nhập chưa hợp lệ")
document.dangky.email.focus();
return false;
}
//Kiểm tra điện thoại
if(document.dangky.dienthoai.value=="")
{
alert("Xin vui lòng nhập điện thoại");
document.dangky.dienthoai.focus();
return false;
}
dienthoai=document.dangky.dienthoai.value;
if(isNaN(dienthoai))
{
alert("Xin vui lòng nhập điện thoại phải là số");
document.dangky.dienthoai.focus();
return false;
}
//Kiểm tra khoá học
if(document.dangky.khoahoc.value=="-1")
{
alert("Xin vui lòng chọn khóa học");
document.dangky.khoahoc.focus();
return false;
}
}


Giáo viên trả lời:

Bạn xem cách làm ở đây nhé

Giáo viên trả lời:
+ Vòng lặp while hay do...while đều dùng để thực hiện các công việc được lặp đi lặp lại nhiều lần và các công việc này ta không xác định được số lần lặp là bao nhiêu

+ Nhưng về cách thức thực hiện thì vòng lặp while sẽ có khác chút so với vòng lặp do...while
    - Đối với vòng lặp while thì nó sẽ kiểm tra điều kiện trước rồi mới lặp (nếu điều kiện thoả thì mới lặp)
    - Còn đối với vòng lặp do...while thì nó sẽ lặp trước rồi mới kiểm tra điều kiện (do đó vòng lặp này sẽ được thực hiện ít nhất 1 lần bất kể dữ liệu có thoả điều kiện hay không) do đó vòng lặp này ít nhất sẽ được thực hiện một lần.
Còn vấn đề áp dụng khi nào ta cần dùng cái nào thì ta phải suy nghĩ xem ta có cần kiểm tra điều kiện trước rồi mới lặp hay không? hay là ta lặp trước mới kiểm tra điều kiện.
Lấy một ví dụ: ví dụ bạn mới quen một cô bạn gái, bây giờ ví dụ bạn muốn hôn cô ấy vậy bây giờ bạn phải suy nghỉ xem ta nên làm như thế nào.  Xin phép trước rồi hôn (xác xuất 50/50), hay cứ hôn trước rồi tính ?  (vậy xác xuất thành công là bao nhiêu cái này còn tuỳ thuộc vào tâm trạng bạn gái của bạn, nếu hôm đó vui thì không sao còn buồn thì coi chừng)


Giáo viên trả lời:
Chưa thấy hình của bạn gửi, hãy gửi hình và source web bạn đang làm qua email để tôi kiểm tra và sửa cho Bạn.

Giáo viên trả lời:
Tôi kiểm tra Code menu thấy menu của Bạn làm chạy tốt mà đâu có bị lệch gì đâu. Bạn chụp cái hình minh hoạ bị lệch để tôi xem thử.

Tôi chạy Code website của bạn trên trình duyệt máy của tôi thấy bình thường và chụp lại 2 hình để bạn xem nè.
Bạn có thể bỏ thuộc tính border-bottom:1px solid #0F642B trong phần định nghĩa #sticky và chèn thêm cái banner vào nữa, khi kéo menu lên chắc nhìn sẽ OK hơn

Hình menu lúc chưa sticky của bạn


Kéo nội dung lên menu giữ lại và giãn ra 100%


Giáo viên trả lời:
Ta đâu cần phải làm chi cho phức tạp vậy, chức năng đăng nhập là một chức năng cơ bản của một website, website nào cũng phải có cả, vấn đề là nếu là trang riêng tư thì ta không để link Login hay hộp Login ra trang chủ thôi bạn, và đường dẫn tới trang login này là admin tự biết, sau này muốn truy cập vào thì gõ thẳng tới trang đăng nhập này thôi, thường thì ta đặt trong thư mục hay đặt tên trang web mà chỉ có mình admin biết thôi. Khi truy cập vào trang này thì nó sẽ hiện ra form đăng nhập và bắt buộc phải nhập đúng userbane và password của admin mới vào được vì ta đã phân quyền rồi cho user admin rồi thì ta đâu có lo gì nữa, các user khác đâu có biết user và password thì họ sẽ không đăng nhập để vào được trang admin của bạn. Hiện tại thì có các phần mềm khi nó dò vào website của ta nó sẽ biết trong website chúng ta có trang nào, vấn đề ở đây nó biết nhưng muốn vào được thì bắt buộc phải đăng nhập với quyền admin thì mới vào được. Giống như ta chúng ta biết trong ngân hàng chứa rất nhiều tiền nhưng làm thế nào để vào lấy được lại là chuyện khác vì ngân hàng có bảo vệ và các chính sách bảo mật của nó. Do đó cho dù họ có biết trang login của bạn mà họ không được cấp quyền thì họ cũng không làm gì được. Chúng ta nên tập trung vào vấn đề ý tưởng thiết kế website và chức năng của website mới là quan trọng bạn còn mấy chức năng đăng nhập này ta thiết kế làm sao dễ dùng, đăng nhập dễ dàng và bảo mật là được.

Giáo viên trả lời:
Vấn đề đặt hộp đăng nhập ở trang chủ hay không còn tuỳ thuộc vào thể loại của website của chúng ta đang làm là loại nào nữa, khi ta làm website bán hàng thì website này thuộc loại giống như website cộng đồng do đó ta nên đặt hộp login cho người dùng đăng ký và đăng nhập vì đều này rất có lợi cho người dùng và cho ta vì ta sẽ thu thập được thông tin của khách hàng và khách hàng có thể dễ dàng đăng nhập vào. Ở đây Form login là ta dùng chung, khi login vào thì ta sẽ hiện ra trang chào hỏi và trong trang chào hỏi này sẽ có các mục chào thành viên và cho admin nhưng các mục nào của admin thì ta phải kiểm tra quyền nếu đúng là admin thì ta mới hiện ra còn user thường thì sẽ không thấy các menu của admin. Ví dụ user thường khi login vào thì chỉ thấy Chào mừng bạn x đã login | Logout còn admin khi login vào thì thấy Chào mừng bạn admin đã login | Admin | Logout

Trong này link admin ta sẽ phân quyền chỉ cho user admin thấy thôi còn user thường thì sẽ không thấy được. Khi admin login vào sẽ thấy link admin và click vào để vào được trang quản lý của mình.

Đối với website mang tính chất riêng tư như website tin tức thì người dùng chỉ vào xem bài viết không post bài được do đó loại site này ta không để link login hay hộp login ở trang chủ mà muốn login phải nhập đường dẫn chính xác tới trang login và đăng nhập vào thường trang này chỉ có admin và các cộng tác viên biết và được phân quyền cho các user này thôi, các user thường khi truy cập được trang này nếu đăng nhập với user thường không đúng quyền thì sẽ không vào được trang quản lý.

Trong website ta có thể có cách để biết được trong website này có các trang nào, vấn đề là nếu ta có phân quyền cho các trang này thì bạn không phải lo là các user thường không có quyền hạn mà sẽ vào được.

Giáo viên trả lời:
Có thể trình duyệt của bạn Cache bị đầy, bạn thử vào history của trình duyệt và xóa hết thử xem nó có còn bị không. Nếu vẫn bị hãy gửi thư mục source bài tập của bạn qua để tôi kiểm tra và tìm chỗ lỗi trong source của Bạn.