Hỏi - Đáp

Giáo viên trả lời:
Lỗi này là do tập tin upload lên không đúng kiểu.

Tập tin Flash có đuôi là .swf
Khi upload tập tin này Bạn hãy dùng lệnh Upload file chứ không dùng lệnh Upload and Resize Image.
Trong lệnh Upload file hãy thêm vào đuôi file cần upload là swf, bấm nút - loại bỏ các đuôi file txt hay pdf chỉ chừa lại đuôi file swf và các đuôi file ảnh như jpg,png,gif thôi.

Giáo viên trả lời:
Lỗi này là do Bạn chưa cấu hình web server. Bạn chỉ mới cấu hình Dreamweaver thôi thì vẫn chưa đủ để chạy các trang php do bạn tạo ra trong Dreamweaver, Bạn phải khai báo với web server biết thư mục website trong Dreamweaver bạn tạo ra là thư mục nào nữa thì mới được.


cau hinh web server
 
Bạn phải cấu hình tập tin httpd.conf và cấu hình ở thông số DocumentRoot
Tại thông số DocumentRoot hãy chỉ đường dẫn tới thư mục đang chứa trang web.

DocumentRoot "C:/AppServ/www/cms"

cau hình web server

Ví dụ thư mục chứa website của ta là cms đang nằm trong thư mục gốc của web server www thì đường dẫn cấu hình sẽ như trên.

Sau khi cấu hình xong nhớ Stop và Start lại máy chủ Web Server thông qua Services Apache2.2

cau hinh web server

Giáo viên trả lời:
Khi bạn xuất dữ liệu ra thường bạn sẽ dùng vòng lặp để xuất ra ví dụ như là while hay do...while hay foreach vv...

Bạn chỉ cần tạo biến đếm thôi để xử lý thôi
Ví dụ trước khi lặp bạn cho biến đếm i=0
Bắt đầu lặp bạn cho biến đếm i tăng lên 1 đơn vị i++

Ví dụ muốn áp dụng cho mẫu tin đầu đến kế cuối thì bạn so sánh biến đếm i còn nhỏ hơn tổng số mẫu tin hay bạn muốn áp dụng cho mẫu tin kế cuối thì so sánh biến đếm i = tongsomautin -1

Còn muốn áp dụng cho mẫu tin chẳn hay lẻ bạn có thể dùng phép toán mod % để so sánh

<section class="tindocnhieu">
<header class="tindocnhieu_title">ĐỌC NHIỀU NHẤT</header>
<?php
$dem=0; //khởi gán biến đếm = 0
do {
$dem++; //tăng biến đếm lên 1 đơn vị <=> dem=dem+1
?>
<article class="baiviet">
<span class="<?php if ($dem<=3) {echo 'sothutu'; } else {echo 'sothutu_xanh';} ?>"><?php echo $dem ?></span>
<h1><span class="linkdendam">
<a href="<?php echo $url ?>cat<?php echo $row_rs_tindocnhieu['ID_theloai']; ?>/detail<?php echo $row_rs_tindocnhieu['ID_tintuc']; ?>/<?php echo vietdecode($row_rs_tindocnhieu['tieudetin']); ?>.html"><?php echo $row_rs_tindocnhieu['tieudetin']; ?></a>
</span></h1>
<p><?php echo date('G:i',strtotime($row_rs_tindocnhieu['ngaycapnhat'])); ?> ngày <?php echo date('d/m/Y',strtotime($row_rs_tindocnhieu['ngaycapnhat'])); ?></p>
</article>
<?php } while ($row_rs_tindocnhieu = mysql_fetch_assoc($rs_tindocnhieu)); ?>
</section>

Ví dụ trên là phần tin đọc nhiều ví dụ 3 tin đầu tiên của phần tin đọc nhiều nhất tô màu đỏ cho cho thứ tự, 2 tin còn lại tô màu xanh

Ví dụ trong đoạn bên dưới này các tin từ 1 đến kế cuối dùng class tintuc49 còn tin tức cuối thì dùng class tintuc49_cuoi dựa vào biến đếm có còn nhỏ hơn tổng số mẫu tin hay không?

<section class="tintucmoi_col_2" id="content_2">
<?php
$dem=0;
do {
$dem++;
?>
<article class="<?php if ($dem < $totalRows_rs_tinso49) {echo 'tintuc49';} else {echo 'tintuc49_cuoi';} ?>">
<a href="<?php echo $url ?>cat<?php echo $row_rs_tinso49['ID_theloai']; ?>/detail<?php echo $row_rs_tinso49['ID_tintuc']; ?>/<?php echo vietdecode($row_rs_tinso49['tieudetin']); ?>.html"><img src="<?php echo $objDynamicThumb1->Execute(); ?>" border="0" class="canhlechohinh"/></a>
<h2>
<?php
// Show IF Conditional region2
if (@$row_rs_tinso49['cohinh'] == 1) {
?>
<img src="images/icon_picture.jpg" width="14" height="13" />
<?php }
// endif Conditional region2
?>
<?php
// Show IF Conditional region1
if (@$row_rs_tinso49['cophim'] == 1) {
?>
<img src="images/icon_video.jpg" width="13" height="11" />
<?php }
// endif Conditional region1
?>
<span class="linkdennhat">
<a href="<?php echo $url ?>cat<?php echo $row_rs_tinso49['ID_theloai']; ?>/detail<?php echo $row_rs_tinso49['ID_tintuc']; ?>/<?php echo vietdecode($row_rs_tinso49['tieudetin']); ?>.html"><?php echo $row_rs_tinso49['tieudetin']; ?></a>
<!-- <a href="layout_chitiettin.php?cat=<?php echo $row_rs_tinso49['ID_theloai']; ?>&amp;id=<?php echo $row_rs_tinso49['ID_tintuc']; ?>"><?php echo $row_rs_tinso49['tieudetin']; ?></a>-->
</span></h2>
</article>
<?php } while ($row_rs_tinso49 = mysql_fetch_assoc($rs_tinso49)); ?>
</section>

Xem demo (phần tin tức mới nhất tin cuối cùng không có đường kẻ dưới còn các tin tức trên nó thì có đường kẻ dưới

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

Bạn đã xem qua phần video hướng dẫn đề tài chưa vây?
Bạn xem trong phần hướng dẫn đề tài, rất nhều Video nói về vấn đề này, ví dụ như phần module liên hệ.

Giáo viên trả lời:
Bạn thiết kế bảng phivanchuyen bao gom co ID_phivanchuyen,tinhthanh, dongia

Trong lúc xác đặt hàng trong form xác nhận ta phải cho học chọn Tỉnh thành, khi có được tỉnh thành rồi thì từ đó ta suy ra được đơn giá vận chuyển, lúc đó trong trang order-finish ta chỉ cần hiện lại giỏ hàng và cộng thêm phí vận chuyển vào để cho khách hàng biết tổng tiền là bao nhiêu. Lấy Grand Total + don giá trong bảng phivanchuyen la được.

Bạn nên đăng ký dịch vụ shipchung.vn để tính phí vân chuyển.
hãy Email cho tôi để tôi gửi tài liệu và hướng dẫn cách tích hợp shipchung vào Ecart.
Xem demo ở website http://123muanhanh.vn đã có tích hợp dịch vụ của shipchung.vn vào để tính phí vận chuyển

Giáo viên trả lời:
Lệnh Show Thubnail có chức năng là tạo ra một ảnh nhỏ từ một ảnh gốc lớn. Ví dụ ảnh gốc lớn lúc upload lên 800 x 600 nhưng khi muốn hiện ra ta chỉ muốn hiện ảnh nhỏ cỡ 1400 x 100 thôi thì ta sẽ dùng lệnh Show Thumnail.


Ở đây bạn bấm vào không hiện được ảnh to có nghĩa là ảnh gốc bạn không có vậy suy ra có thể bạn làm sai ở bước upload hình.

Khi uupload hình thì hình sẽ nằm trong thư mục images. Để kiểm tra ta chỉ cần vào thư mục images xem ảnh upload lên có đúng bằng kích thước của ảnh mà ta đã chọn hay không. Chú ý trong lúc upload không được chọn vào checkbox Resize và không nhập vào kích thước resize. Ví dụ ảnh của ta lúc Browse tối có kích thước là 800 x 600 thì upload lên kích thước của nó cũng phải giữ nguyên. vậy sau khi upload xong vào thư mục images kiểm tra lại hình ảnh này đã có kích thước là 800 x 600 hay không? nếu nó là ảnh nhỏ 140 x 100 là cấu hình sai lệnh upload từ đó trong lúc Show Thumbnail thì nó sẽ không phóng to ảnh được vì ảnh upload lên chỉ có 140 x 100 vậy lúc pho1nh to lên thì kích thước cũng là 140 x 100.

Hãy kiểm tra kỹ lại lệnh Upload image trong tab Server Behavior xem đã cấu hình lệnh này đúng hay chưa?

Nếu cấu hình sai thì phải gỡ bỏ checkbox Resize Image và phải thực hiện lại thao tác upload ảnh lên lại, sau đó phải kiểm tra hình upload lên trong thư mục images trên máy chủ web server đã đúng hay chưa? Nếu đã đúng rồi thì mới thực hiện lệnh Show Thumnail trong trang List.

Nếu vẫn làm chưa được nhắn số Teamview để tôi vào kiểm tra thử xem nó bị gì

Giáo viên trả lời:
Muốn Import thì đầu tiên ta phải Export site ra thì sau này mới Import lại vào được.

Còn nếu ta có thư mục rôi thì bạn nên vào tạo lại site mới cho nhanh vì khi tạo site mới ta có rất nhiêu thông số cấu hình để nó hoạt động theo ý của chúng ta thì sẽ tốt hơn Import.

Giáo viên trả lời:
Trong ví dụ này ví dụ mảng arr1 chúng ta có các phần tử như sau

Array
(
    [0] => 1
    [1] => 2
    [2] => 4
    [3] => 3
    [4] => 4
    [5] => 2
)
Để đếm số lần xuất hiện của các phần tử trong mảng arr1 này ta có thể dùng hàm array_count_values
ví dụ: $arr_count=array_count_values($arr1);
Hàm này sẽ trả về một mảng như sau:
Array
(
    [1] => 1
    [2] => 2
    [4] => 2
    [3] => 1
)
Trong đây khóa của mảng arr_count này chính là giá trị của phần tử trong mảng arr1 mà chúng ta muốn đếm số lần xuất hiện
Còn giá trị của mảng arr_count lưu số lần xuất hiện của phần tử .

Khi xuất kết quả ra text field ta muốn có định dạng là 1:1 2:2 4:2 3:1
Đây là một chuỗi số đầu tiên cho biết giá trị của phần tử cần đếm số lần xuất hiện
Còn số sau dấu : cho biết số lần xuất hiên của phần tử này

=> Do đó chúng ta dùng vòng lắp foreach để duyệt qua mảng arr_count vì mảng này không phải là mảng có khoá tự động

foreach($arr_count as $k=>$v)
{
$solanxuathien.="$k:$v ";
}

Vòng lặp foreach này sẽ duyệt qua tất cả các phần tử của mảng arr_count và khi duyệt qua mỗi phần tử như vậy thì khóa của nó ta lưu vào vùng nhớ k còn giá trị của phần tử ta lưu vào vùng nhớ v
Bạn thấy trong mảng arr_count có tổng cộng 4 phần tử vậy chúng ta sẽ duyệt qua tổng cộng là 4 lần
+ Lần lặp thứ 1 ta có  k=1 và v=1, vậy ta sẽ có chuỗi 1:1. Chuỗi 1:1 này lưu vào biến solanxuathien
+ Lần lặp thứ 2 ta có k=2 và v=2, vậy ta sẽ có chuỗi 2:2. Chuỗi này sẽ nối nhồi vào bên trong solanxuathien do ta sử dụng phép toán nối chuỗi .= vậy ta sẽ có chuỗi 1:1 2:2
+ Lần lặp thứ 3 ta có k=4 và v=2 vậy ta có chuỗi 4:2. Chuỗi này sẽ nối nhồi vào chuỗi 1:1 2:2 => ta sẽ có chuỗi 1:1 2:2 4:2 lưu trong biến solanxuathien
+ Lần lặp thứ 4 ta có k=3 và v=1 vậy ta có chuỗi 3:1. Chuỗi này sẽ nối nhồi tiếp vào chuỗi đang lưu trong biến solanxuathien => ta sẽ có chuỗi 1:1 2:2 4:2 3:1


Giáo viên trả lời:
Tôi tìm thấy kết quả ra bình thường. 

Xem hình minh hoạ khi tìm từ khóa chiến sĩ

tim kiem bang php

Giáo viên trả lời:
+ Tôi kiểm tra code trong bài tập của bạn thấy hàm highlight không hỗ trợ tìm kiếm tiếng việt do đó bạn hãy viết lại hàm này ví dụ như mẫu sau:

function makeHighlighter($keyword, $field) {
$i = strripos($field, $keyword);
if ($i !== false) {
$keyword = str_ireplace($keyword, substr($field, $i, (strlen($keyword))), $keyword);
} else {
return $field;
}
$as_unm_split = explode($keyword, $field);
$string_hig = "";
for ($i = 0; $i < count($as_unm_split); $i++) {
if ($i < count($as_unm_split) - 1)
$string_hig.=$as_unm_split[$i] . "<span style=\"background: yellow\">" . $keyword . "</span>";
else
$string_hig.=$as_unm_split[$i];
}
unset($as_unm_split, $keyword, $i);
return $string_hig;
}

Trong trang kết quả tìm kiếm bạn chỉnh lại chỗ này một chút

while ($row = mysql_fetch_object($result))
{

$tieude = makeHighlighter($_POST['tieude'],$row->tieude);
echo "<p>Bài viết thứ $i</p>";
echo "<p><a href='index.php?action=detail&id=".$row->id."'>$tieude</a></p>";
$gioithieu = $row->gioithieu;
echo "<p>$gioithieu</p>";
$i++;
}

Trong trang chi tiết sửa lại chỗ này

$id = $_REQUEST["id"];
$result = mysql_query("SELECT * FROM tintuc where id = $id");

+ Chỗ xuất ra bài viết hãy chỉnh lại như sau

while ($row = mysql_fetch_object($result))
{
$tieude = $row->tieude;
$hinhanh = "hinh/".$row->hinhanh;
$hinh = "<img src='$hinhanh' alt = '$tieude'>";
$gioithieu = nl2br($row->gioithieu);
$chitiet = nl2br($row->chitiet);
$nguon = $row->nguon;
echo "<div>$tieude</div>";
echo "<div class='trai'>$hinh</div>";
echo "<div class='phai'>
<p><b>Chi tiết:</b><br />$chitiet</p>
<p><b>Nguồn:</b><br />$nguon</p>
</div>";
}
}

Còn phần xuất ra 5 tin ở trang chủ thì phần này dễ bạn cứ viết thử đi, chỉ dùng vòng la95p while để xuất dữ liệu ra thôi giống như trong trang kết quả tìm thôi chi có cái là Recordset của bạn chỉ sort để làm sau xuất ra được tin mới nhất là được.


Giáo viên trả lời:
Bạn cứ bố trí mỗi tin là nằm trong một section hay một div thôi bạn dạng ví dụ như vậy


Bắt đầu vòng lặp của bạn (chỗ này bạn dùng while)

<section class="news">
<img.....>
   <h1>Tiều đề bài viết</h1>
    <p>Trích dẫn bài viết</p>
</section>

kết thúc vòng lặp

Tôi thấy bạn dùng thẻ Table, tr, td đế xuất dữ liệu do đó vấn đề SEO sẽ không tốt do đó bạn nên bỏ hết mấy cái thẻ này đi mà đổi qua dùng thẻ <section> hay thẻ div cũng được

Bắt đầu vòng lặp của bạn (chỗ này bạn dùng while)

<div class="news">
<img.....>
<h1>Tiều đề bài viết</h1>
<p>Trích dẫn bài viết</p>
</div>

kết thúc vòng lặp

Bắt đầu vòng lặp của bạn (chỗ này bạn dùng while)

<section class="news">
  <article>
           <img.....>
           <h1>Tiều đề bài viết</h1>
           <p>Trích dẫn bài viết</p>
    </article>
</section>

kết thúc vòng lặp


Giáo viên trả lời:
Bạn cứ dán đường dẫn tới các tập tin này vào trình duyệt, sau đó lưu các file này vào trong website của bạn, sau đó đổi lại cách dùng bằng đường dẫn tương đối chỉ đường dẫn tới các tập tin này thôi mà không dùng đường dẫn tuyệt đối.

Các tập tin js thì bạn cứ lưu vào thư mục js rồi chỉ đường dẫn là js/tap_tin.js thôi mà không dùng dạng bắt đầu bằng http:// nữa

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

Về yêu cầu của bài tập này là chúng ta thay thế bất kỳ một phần tử trong mảng gốc thành một phần tử có giá trị khác.
Nếu bạn thay thế các phần tữ này bằng một chuỗi thì cách xử lý của ta cũng sẽ khác rồi, chúng ta không dùng cách xử lý này nữa.
Bạn làm qua bài Chương trình thay thế từ trong chuỗi vì khi nhập vào một chuỗi cách thức xử lý của ta sẽ khác.

Bạn xem ví dụ cách thay thế từ trong chuỗi trong ví dụ này

<?php
$chuoi="";
$tugoc="";
$tuthaythe="";
$ketqua="";
if(isset($_POST['button_tinh']))
{
$chuoi=$_POST['chuoi']; //lấy chuỗi người dùng nhập vào và lưu tạm vào biến chuoi
$tugoc=$_POST['tugoc']; //lấy từ gốc người dùng nhập vào và lưu tạm vào biến tugoc
$tuthaythe=$_POST['tuthaythe']; //lấy từ thay thế người dùng nhập vào lưu tạm vào biến tuthaythe
$ketqua=str_replace($tugoc,$tuthaythe,$chuoi);
}
?>
<form name="thaythetu" action="" method="post">
<div class="gforms spaced">
<div class="golden-forms wrapper">
<div class="form-title">
<h2>Chương trình thay thế từ trong chuỗi</h2>
</div>

<div class="form-enclose">
<div class="form-section">
<section>
<div class="row">
<div class="col3 first">
<label for="chuoi" class="lbl-text tleft">Chuỗi:</label>
</div>
<div class="col8 last">
<label class="lbl-ui append-icon">
<input type="text" name="chuoi" class="input" value="<?php echo $chuoi?>" required title="Xin vui lòng nhập vào chuỗi cần chứa từ cần thay thế"/>
<b class="tooltip left-top"><em> Chuỗi gốc </em></b>
<span><i class="icon-bullhorn"></i></span>
</label>
</div>
</div> <!--kết thúc row-->
</section>
<section>
<div class="row">
<div class="col3 first">
<label for="tugoc" class="lbl-text tleft">Từ gốc:</label>
</div>
<div class="col8 last">
<label class="lbl-ui append-icon">
<input type="text" name="tugoc" class="input" value="<?php echo $tugoc?>" required title="Xin vui lòng nhập vào từ gốc cần thay thế"/>
<b class="tooltip left-top"><em> Từ gốc </em></b>
<span><i class="icon-bullhorn"></i></span>
</label>
</div>
</div> <!--kết thúc row-->
</section>
<section>
<div class="row">
<div class="col3 first">
<label for="tuthaythe" class="lbl-text tleft">Từ thay thế:</label>
</div>
<div class="col8 last">
<label class="lbl-ui append-icon">
<input type="text" name="tuthaythe" class="input" value="<?php echo $tuthaythe?>" required title="Xin vui lòng nhập vào từ cần thay thế"/>
<b class="tooltip left-top"><em> Từ thay thế </em></b>
<span><i class="icon-bullhorn"></i></span>
</label>
</div>
</div> <!--kết thúc row-->
</section>
<section>
<div class="row">
<div class="col3 first">
<label for="ketqua" class="lbl-text tleft">Kết quả:</label>
</div>
<div class="col8 last">
<label class="lbl-ui append-icon">
<input type="text" name="ketqua" class="input" value="<?php echo $ketqua?>" readonly/>
<b class="tooltip left-top"><em> Kết quả </em></b>
<span><i class="icon-bullhorn"></i></span>
</label>
</div>
</div> <!--kết thúc row-->
</section>
<section>
<p align="center">
<input name="button_tinh" type="submit" class="button blue" value="Thay thế"/>
</p>
</section>
</div>
</div>
</div>
</div>
</form>


Giáo viên trả lời:
Lỗi này có thể do lúc bạn cấu hình trong lúc upload hình ảnh.

Khi upload hình ảnh ta không chọn checkbox Resize (ví dụ nếu ta chọn resize hình về 240 x100) vậy ảnh upload lên sẽ chỉ còn 240x100 vậy chúng ta sẽ không có ảnh gốc lớn để sau này bấm vào popup nó ra ảnh lớn. Do đó khi chúng ta show thumbnail ảnh nhỏ ra và click vào để phóng to thì nó vẫn hiện ra ảnh nhỏ thôi.
Muốn có ảnh lớn thì trong lúc upload nhớ không chọn checkbox Resize.
Bạn hãy kiểm tra lại lệnh Upload hình nếu có resize thì hãy gỡ bỏ ra và chịu khó upload lại hình đã upload rồi (kích cỡ ảnh lớn upload khoảng 640 x 480), sau đó bên phần hiện ảnh nhỏ sử dụng chức năng show thumbnail và popoup cho hình này.

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

-Người dùng phải nhập dữ liệu vào textbox trước khi search
-dữ liệu nhập vào textbox phải từ 3 kí tự trở lên
-dữ liệu nhập vào textbox không dài quá 40 kí tự
-Thông báo lỗi sử dụng thư viện Jquery để tăng sự tương tác
========================================
Bạn có thể viết đơn giản như sau

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Tao hop le cho form bang Jqueryt</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {

$('#form1').validate({ // initialize the plugin
rules: {
ten_sua: {
required: true,
minlength: 3,
maxlength: 40
}
},
messages: {
ten_sua: {
required: "Nhập tên sữa",
minlength: "Nhập ít nhất 3 ký tự",
maxlength: "Nhập tối đa 40 ký tự"
}
},
submitHandler: function(form) {
form.submit();
}
});

});
</script>
<style type="text/css">
label {display:inline-block; color:#FF0004}
</style>
</head>

<body>
<div class="container">
<div class="content">
<?php
if(isset($_GET['action']))
{
switch($_GET['action'])
{
case "search":
require "kqtk.php";
break;
case "detail":
require "ctkqtk.php";
break;
}
}
?>
 
<!-- end .content --></div>
<div class="sidebar2">
<form id="form1" method="post" action="index.php?action=search" class="form b">
<input name="ten_sua" type="text" id="ten_sua" value="<?php if(isset($_POST["ten_sua"])) echo $_POST["ten_sua"];?>" /><br />
<input type="submit" value="Tìm kiếm" />
</form>
<!-- end .sidebar2 --></div>
</body>
</html>

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

Mục Properties dùng để hiện ra các thuộc tính của đối tượng khi chúng ta soạn thảo trang web.

Mặc định thì các hộp Properties này sẽ bị mờ, chúng ta phải vào Dreamweaver tạo một website trong nó (vào menu Site -> New site), sau đó tạo cấu trúc thư mục để lưu trữ các trang web và tạo các trang web bên trong website. Sau đó muốn thiết kế trang nào ta phải double click vào trang đó để mở nó lên và chúng ta đứng ở chế độ Design hay Code để thiết kế. 
Bạn xem qua 2 bài video này

Hướng dẫn làm quen với giao diện chương trình Adobe Dreamweaver CS4



Giáo viên trả lời:
OK, sory, do tôi xem file cũ nên thấy thiếu.

Bạn xem kỹ lại trong đoạn code là các thuộc tính chung là mình đã dời qua chung bên class nhân viên luôn rồi và bên class nv_vp không còn phương thức set và get để gán giá trị và lấy giá trị cho thuộc tính gioitinh nữa, do đó trong báo lỗi bạn thấy nó không hiểu thuộc tính giới tínhUndefined property: nv_vp::$gioitinh

bạn kiểm tra lại trong hàm tính trocap() cho nhan viên vp

function trocap()
{
//if($this->gioitinh == 1)
if(parent::get_gioitinh() == 1)
return parent::trocap() * 1.2;
else
return parent::trocap();
}

Chỗ dòng $this->gioitinh là ta không thể truy xuất tới thuộc tính này được vì thuộc tính này bây giờ nằm ở class cha nhanvien rồi. Từ khoá this chỉ truy xuất tới các thuộc tính mà ta xây dựng trong class của nó thôi.
Do đó dòng so sánh gioitinh==1 này sẽ sai.
Do đó ta phải sử dụng phương thức get_gioitinh bên lớp cha nhanvien thì ta mới lấy được giá trị của thuộc tính gioitinh này
Do đó chỗ này ta phải truy xuất là parent::get_gioitinh() giống như là phương thức trocap ta cũng phải truy xuất vào lớp cha nhanvien thì mới lấy được.

Với lại để cho đẹp thì trong trang vidu_quanlynhanvien.php xử lý thêm ở những chỗ

<input type="number" name="sosanpham" id="sosanpham" class="input" value="<?php echo $sosanpham?>" <?php if($loainv=="" || $loainv=="nhanvienvanphong") {echo 'disabled';}?>/>

<input type="radio" name="tangca" id="cotangca" value="1" <?php if((isset($_POST['tangca']) && $_POST['tangca']==1) || !isset($_POST['tangca'])) echo 'checked="checked"'?> <?php if($loainv=="" || $loainv=="nhanvienvanphong") {echo 'disabled';}?>>

<input type="radio" name="tangca" id="khongtangca" value="0" <?php if((isset($_POST['tangca']) && $_POST['tangca']==0)) echo 'checked="checked"'?> <?php if($loainv=="" || $loainv=="nhanvienvanphong") {echo 'disabled';}?>>

<input type="text" name="hesoluong" id="hesoluong" class="input" value="<?php echo $hesoluong?>" pattern="[-+]?[0-9]*[.,]?[0-9]+" <?php if($loainv=="sanxuat") {echo 'disabled';}?>/>

<input type="number" name="songayvang" id="songayvang" class="input" value="<?php echo $songayvang?>" <?php if($loainv=="sanxuat") {echo 'disabled';}?>/>


Giáo viên trả lời:
Nếu muốn tạo Slideshow bằng Javascript đơn giản nhất thì có thể kiếm mấy script miễn phí ở đây dùng cũng tạm được



Mấy cái script miễn phí này dùng Jquery tạo slideshow cũng tạm dùng được

Cái này miễn phí dùng Jquery tạo Slideshow chuẩn RWD chuyên nghiệp hơn nhiều

Giáo viên trả lời:
Đây là đoạn Code trong trang kqtk.php

=======
<?php
function highlight($text, $words) {
preg_match_all('~\w+~', $words, $m);
if(!$m)
return $text;
$re = '~\\b(' . implode('|', $m[0]) . ')\\b~';
return preg_replace($re, '<span style=background-color:yellow><b>$0</b></span>', $text);
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="dd.css" rel="stylesheet" type="text/css" />
</head>

<body>

<?php
$db = mysql_connect("localhost","root","123456");
if (!$db)
{
echo "Không thể kết nối CSDL";
exit;
}
$db_select = mysql_select_db("ql_ban_sua");
if (!$db_select)
{
die ("Không tồn tại CSDL ". mysql_error());
}
if (isset($_POST['ten_sua']))
{
$ten_sua = trim($_POST['ten_sua']);
$result = mysql_query("SELECT * FROM sua, hang_sua where sua.Ma_hang_sua=hang_sua.Ma_hang_sua and Ten_sua like '%$ten_sua%'");
if (mysql_num_rows($result)<>0)
{
$n = mysql_num_rows($result);
echo "<p>Có $n sản phẩm</p>";
$i=1;
while ($row = mysql_fetch_object($result))
{
//$ten_sua = $row->Ten_sua;
$ten = highlight($row->Ten_sua,$ten_sua); //text,word
echo "Bài viết thứ $i";
echo "<p><a href='index.php?action=detail&ten_sua=".$row->Ten_sua."'>$ten</a></p>";
$i++;
}
}
else
echo "Không tìm thấy sản phẩm này!";
}
?>
</body>

============
Bạn để ý những dòng màu đỏ nhé
Kết quả chạy file của bạn trên máy của tôi đây

hoc php

highlight search bang php


Giáo viên trả lời:
Kiểm tra thấy class nv_vp Bạn chưa xây dựng 2 phương thức thức set và get cho thuộc tính gioitinh. Do đó Bạn hãy bổ sung 2 phương thức này vào bên trong class nv_vp


function set_gioitinh($v)
{
if($v==1 || $v==0)
$this->gioitinh=$v;
else
$this->gioitinh=0;
}
function get_gioitinh()
{
return $this->gioitinh;
}