PDA

View Full Version : vọc sĩ PHP có mấy câu hỏi



NDThuan
07-08-2005, 15:16
1. Trong PHP có cách nào khai báo và sử dụng biến toàn cục đại loại như Application("tên biến") như trong ASP không?
2. PHP có thể làm việc với mảng động không?
3. Làm thế nào để bắt lỗi chương trình? Tức là có thể gửi một thông báo thân thiện thay vì thông báo lỗi kỹ thuật.
4. Nếu trong một cái form có n cái thẻ input cùng tên thì khi lấy giá trị từ form qua cái tên đó thì nó có trả lại một mảng không?

White Rose
07-08-2005, 17:35
1. Trong PHP có cách nào khai báo và sử dụng biến toàn cục đại loại như Application("tên biến") như trong ASP không?
PHP không hỗ trợ kiểu biến này. Có một số giải pháp để giải quyết nhưng theo mình nó không thực sự hoàn thiện.
[/quote]2. PHP có thể làm việc với mảng động không?[/quote]
Khi bạn gán mới nó sẽ tự thêm vào cuối mảng. Bạn cũng có thể cắt bớt vài phần tử của mảng (tham khảo các hàm về array trong manual)


3. Làm thế nào để bắt lỗi chương trình? Tức là có thể gửi một thông báo thân thiện thay vì thông báo lỗi kỹ thuật.
Sử dụng cú pháp bắt lỗi, sau đó tùy vào lỗi mà xử lý thích hợp.


4. Nếu trong một cái form có n cái thẻ input cùng tên thì khi lấy giá trị từ form qua cái tên đó thì nó có trả lại một mảng không?
Không.

ITbaby
07-08-2005, 18:50
He he ! Anh Quai râu cũng chịu khó trả lời như cái máy quá he. Anh NDThuan cứ làm như trên DDTH là một cái máy trả lời tự động ấy nhỉ :) .
Có mấy câu hỏi :
1, 2, 3, 4 --> Xong.

mr47
08-08-2005, 08:30
4. Nếu trong một cái form có n cái thẻ input cùng tên thì khi lấy giá trị từ form qua cái tên đó thì nó có trả lại một mảng không?
cái này có thể dùng JS để gom các gá trị thành một chuổi ( value của một input hidden nào đó ) rùi tách vào mảng ! Bằng hàm explode chẳng hạn !

jcisio
08-08-2005, 12:40
cái này có thể dùng JS để gom các gá trị thành một chuổi ( value của một input hidden nào đó ) rùi tách vào mảng ! Bằng hàm explode chẳng hạn !
Hoặc đặt tên là "name[]", thì PHP sẽ gán $name[] bằng giá trị 1, rồi bằng giá trị 2, cuối cùng $name sẽ thành 1 mảng lol

tinhbuonhiu
08-08-2005, 23:54
Thẻ input (checkbox,txt,password,file...) thì nên đặt name[] như jcisio nói là được hết.

Muốn khai báo toàn cục thì cứ đặt cho nó 1 định nghĩa, hoặc đơn giản hơn là đặt 1 tên ở 1 files nào đó mà bạn bảo đảm nó được include vào đầu mỗi files có sử dụng nó là OK.

PHP làm việc với mảng động khá tốt và nhiều lúc mình thấy nó thông minh hơn suy nghĩ của mình nhiều lắm

NDThuan
16-08-2005, 12:53
Trước tiên xin cảm ơn các bác đã tận tình chỉ bảo, em lại hỏi tiếp... :D

1. Nếu không thì các bác có thể mô tả giúp em nguyên lý chung của các chat room = php ko?
Giả sử em có một trang cần truy vấn db để hiển thị thông tin thì nếu có 10k người truy cập trong x phút thì nó phải thực hiện cả 10k cái truy vấn sao? ặc ặc,thế này thì teo mất server :|.
Em có xem source của phpBB và VBB hay thấy nó dùng GLOBAL ở đầu một số biến, để làm cái gì vậy?

3. Nếu em biết thì đã ko hỏi câu này :D
4. Cảm ơn bác jcisio, em đã thử và chạy tốt :)

5. Em có xài thử cái str_replace mà thấy nó phân biệt chữ thường với chữ hoa hay sao ấy (ko biết có cần tham số gì nữa ko).
Ví dụ
$x = str_replace("PHP", "ASP", "index.php") thì nó vẫn hiện ra là index.php

6. Có thể nào tắt tạm Apache để xài IIS và bật lại Apache sau khi tắt IIS ko?
Tại vì em có cài PHP trên IIS nhưng cái MySQL nó bị làm sao mà mỗi lần khởi động máy lại phải chạy \bin\mysqld.exe thì nó mới chạy :(

mr47
16-08-2005, 18:08
Trước tiên xin cảm ơn các bác đã tận tình chỉ bảo, em lại hỏi tiếp... :D


không có chi :D


Giả sử em có một trang cần truy vấn db để hiển thị thông tin thì nếu có 10k người truy cập trong x phút thì nó phải thực hiện cả 10k cái truy vấn sao? ặc ặc,thế này thì teo mất server :|.

Không hiểu bạn hỏi gì ! Mình đoán là bạn cần truy vấn số ngươi Online trong một khoảng thời gian giống như các 4rum ! Cái này cần phải lưu thời gian hoạt động cuối của người dùng, cùng với địa chỉ IP v.v Rùi lấy thời gian now , tình toán ra hai mốc thời gian !
Chỉ cần một truy vấn với một điền kiện la` BETWEEN
Ví dụ :
SELECT Name FROM tbl_Girls_Who_Love_Me WHERE Make_Love_Time BETWEEN 22:01:01 AND 23:02:10
:">


GLOBAL
Các biến Global là các biến được khai báo toàn cục ( trong phạm vi của phiên làm việc ) ! Được đem vào sử dụng khi bạn khai báo hàm !
ví dụ :
function viva_47()
{
global $_47_vi_dai;
.../some code

}
biến $_47_vi_dai; //đã được tạo ở ngoài phạm vi của hàm và đem vào sử dụng trong hàm!



Nếu không thì các bác có thể mô tả giúp em nguyên lý chung của các chat room = php ko?
Cứ vài giây thì refressh một lần cho nên các message được cập nhật tự động !

jcisio
17-08-2005, 01:46
Trước tiên xin cảm ơn các bác đã tận tình chỉ bảo, em lại hỏi tiếp... :D

1. Nếu không thì các bác có thể mô tả giúp em nguyên lý chung của các chat room = php ko?
Giả sử em có một trang cần truy vấn db để hiển thị thông tin thì nếu có 10k người truy cập trong x phút thì nó phải thực hiện cả 10k cái truy vấn sao? ặc ặc,thế này thì teo mất server :|.
2. Em có xem source của phpBB và VBB hay thấy nó dùng GLOBAL ở đầu một số biến, để làm cái gì vậy?

3. Nếu em biết thì đã ko hỏi câu này :D
4. Cảm ơn bác jcisio, em đã thử và chạy tốt :)

5. Em có xài thử cái str_replace mà thấy nó phân biệt chữ thường với chữ hoa hay sao ấy (ko biết có cần tham số gì nữa ko).
Ví dụ
$x = str_replace("PHP", "ASP", "index.php") thì nó vẫn hiện ra là index.php

6. Có thể nào tắt tạm Apache để xài IIS và bật lại Apache sau khi tắt IIS ko?
Tại vì em có cài PHP trên IIS nhưng cái MySQL nó bị làm sao mà mỗi lần khởi động máy lại phải chạy \bin\mysqld.exe thì nó mới chạy :(
1. Cứ mỗi giây bạn gửi yêu cầu đến máy chủ xem có nội dung mới không, nếu có thì chèn nội dung đó là nội dung hiện tại. Tham khảo AJAX
Mấy cái query đơn giản ấy thì ảnh hưởng gì đến máy chủ chứ hả. Có thể cache vào file, vì nội dung trả về của 10K query đó đều như nhau.
2. Để khai báo phạm vi của biến là toàn cục. Tham khảo tài liệu PHP
3. Tôi cũng nghĩ thế :tongue:
Bạn dùng hàm error_trigger với USER_ERROR gì đó, đồng thời thay error handle (hàm xử lí lỗi) bằng hàm của bạn. Tham khảo PHP manual, tôi lâu ngày quên rồi.
4. Không có chi
5. Đương nhiên. Có thể thay thế bằng preg_replace với modifier là "i" hoặc dùng hàm str_ireplace trong PHP5.
6. IIS chạy như service, bạn vào IIS manager bật tắt nó rất dễ dàng. Tương tự (phải cài Apache như service, chỉ áp dụng cho Win 2K/XP).
Còn mysqld, bạn vào Admin tools rồi vào phần service, chỉnh cho nó auto start là được.

NDThuan
26-08-2005, 14:56
Lại một lần nữa cảm ơn các sư huynh :D


Cứ vài giây thì refressh một lần cho nên các message được cập nhật tự động !
Á á... cái này thì ai chả biết (dùng JavaScript setTimeout để load messages thì nó đẹp hơn :D) nhưng mà làm sao để cái server nó lưu các messages của tất cả những người gửi đến ấy. Chắc ko phải nó lưu vào database đâu nhỉ :(


7. Làm sao để lấy đường dẫn vật lý đến 1 file hay thư mục nào đó? (Trong asp thì nó có cái Server.MapPath)

:):):)