PDA

View Full Version : Cần giúp đở tách code checkbox



pdkhoa
02-06-2010, 14:41
Mình có làm cái form xóa bằng checkbox. Đây là file hoàn chỉnh của mình, thực hiện xóa rất tốt.


// Kiểm tra Checkall
<script language="javascript">
// JavaScript Document
function docheck(value)
{
var checks = document.getElementsByName('checkbox[]');
var boxLength = checks.length;
if(value == true)
{
for(i = 0;i < boxLength;i++)
checks[i].checked = true;
document.frmList.chkall.checked = true;
}
else
{
for(i = 0;i < boxLength;i++)
checks[i].checked = false;
document.frmList.chkall.checked = false;
}
}
</script>
/////
<?php
define('IN_MEDIA',true);

include('includes/config.php');

include('includes/functions.php');

include('includes/class_template.php');

//declare the SQL statement that will query the database

$sql = "SELECT * FROM [project]";


//execute the SQL query and return records
$result = mssql_query($sql);

$count=mssql_num_rows($result);

?>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="frmList" method="post" action="">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td colspan="4" bgcolor="#FFFFFF"><strong>Delete multiple rows in mysql</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="chkall" type="checkbox" value="" onClick="docheck(document.frmList.chkall.checked); "></td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Ten nguoi dung</strong></td>
</tr>
<?php
while($row = mssql_fetch_array($result))
{
?>
<tr>
<td align="center" bgcolor="#FFFFFF">
<input name="checkbox[]"type="checkbox" id="checkbox[]" value="<? echo $row['id'];?>"></td>
<td bgcolor="#FFFFFF"><? echo $row['id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $row['project_name']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete"type="submit" id="delete" value="Delete"></td>
</tr>
<?
// Check if delete button active, start this

if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM [project] WHERE id='$del_id'";

$result = mssql_query($sql);
}

// if successful redirect to test.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=test.php\">";
}
}
mssql_close($dbhandle);
?>
</table>
</form>
</td>
</tr>
</table>

Vấn đề mà mình gặp phải là, làm thế nào để tách file test.php thành 2 file test.php (file thực thi) và test.html (file chứa form). Ngay chổ này <input name="checkbox[]"type="checkbox" id="checkbox[]" value="<? echo $row['id'];?>"> phần value="? echo $row['id'];?>" cần phải thay như thế nào khi chuyển qua file html để nhận giá trị của csdl về.

Thanks all

dinhanhency
02-06-2010, 15:39
Chưa hiểu ý bạn. Như code trên là trả về html từ csdl rồi.

pdkhoa
02-06-2010, 16:15
Chưa hiểu ý bạn. Như code trên là trả về html từ csdl rồi.

Ý mình là tách code ra 1 file .php và form ra 1 file .html

Và trong file html làm sao để chổ
<input name="checkbox[]"type="checkbox" id="checkbox[]" value="<? echo $row['id'];?>"> phần value="? echo $row['id'];?>" cần phải thay như thế nào khi chuyển qua file html để nhận giá trị của csdl về.
Vì khi tách ra mình nhấn nút xóa thì nó không làm gì cả

thuyduongcd
02-06-2010, 16:21
html thì không thể tương tác với CSDL được.

pdkhoa
02-06-2010, 16:42
html thì không thể tương tác với CSDL được.

Là như thế này, đánh dấu vào các checkbox cần xóa,khi nhấn nút Xóa từ trang test.html thì sẽ chuyển qua trang test.php để xử lý. Ý mình muốn hỏi là chổ phần <input type="checkbox" name="check[]" values=""> thì cái values="" cần điền giá trị gì để nhận id từ csdl để mà xóa á.

Mình giải thích không được rõ lắm, các bạn cố giúp dùm tí >.<

ngoc_viet08
02-06-2010, 22:09
tách 1 trang chỉ có code php và 1 trang html á ? cách thức làm template engine mới á ?
yếu căn bản rồi . html thì ko nhận giá trị từ csdl được . khỏi tách đi . vững rồi tách .

thuyduongcd
02-06-2010, 22:53
html thì không thể tương tác với CSDL được. Do đó không thể nhận id từ csdl để mà xóa
Tuy nhiên có 1 cách này, không biết có đáp ứng yêu cầu của bạn không.
Giả sử có 2 file test.php và test.html

test.html


<!-- html code -->
....
[checkbox]
....


file test.php


//connectDB
$sql="SELECT * FROM table";
$result=mysql_query*$sql);
$checkbox_content="";
while ($row=mysql_fetch_array($result))
{
$checkbox_content.='<input name="checkbox[]"type="checkbox" id="checkbox[]" value="'.$row['id'].'">'.$row['project_name'].'<br />';
}

$strHTML=file_get_content("test.html");
$strHTML=str_replace("[checkbox]",$checkbox_content,$strHTML);

echo $strHTML;


Như vậy, khi bạn gọi file test.php, nó sẽ đọc nội dung file test.html và thay thế phần [checkbox] bằng phần nội dung truy vấn từ CSDL

ngoc_viet08
02-06-2010, 23:36
ặc , rắc rối vậy :D . có lẽ bạn ấy chỉ thử tách biệt code php và html ra thôi đó mờ :D

lenggiauit
03-06-2010, 01:08
..........................

pdkhoa
03-06-2010, 09:15
hì, thanks các bạn.
Đã làm phiền nhiều, ý mình ở đây chỉ là tách code ra cho dễ nhìn thôi.

Topic này close đc rồi.

1 lần nữa thanks all, dịp khác lại hỏi tiếp :D

ngoc_viet08
03-06-2010, 20:48
tách riêng biệt thế thì ko làm ăn dc gì đâu :D . nếu thế thì đã ko có thằng smarty

thuyduongcd
03-06-2010, 22:20
tách riêng biệt thế thì ko làm ăn dc gì đâu :D . nếu thế thì đã ko có thằng smarty

Đó cũng là một cách được sử dụng trong ứng dụng đa giao diện. Phần layout tách riêng với phần code