10/10/2018, 09:31

Tại sao Form Submit mà ko thực thi lệnh

Mình đang làm một trang Administrator.(thực tập tốt nghiệp). Cũng mới học PHP.
Mình có vấn đề sau, nhờ mọi người giải quyết giúp.
Mình làm form sửa dữ liệu, nhưng khi ấn nút Cập nhật. Rõ ràng form đã submit nhưng nó không thực hiện lệnh Update. Form thêm dữ liệu thì lại được. Mọi người xem dùm lỗi ở chỗ nào. Không thấy nó thông báo lỗi mới đau. Chỉ thấy trở lại y nguyên trang cập nhật.Pó tay
Đây là funtion editCat của mình trong file process.php.
PHP Code:
$act = (isset($_GET***91;'act'***93;) && $_GET***91;'act'***93;) ? $_GET***91;'act'***93; : ';
    
    switch(
$act){
        case 
'add':
            
addCat();
            break;
        case 
'edit':
            
editCat();
            break;
        case 
'delete':
            
deleteCat();
            break;
        default:
            
header('Location: index.php');
    }

function 
editCat(){
        
$cat_id = (int)$_GET***91;'sId'***93;;
        
$cat_name $_POST***91;'txtName'***93;;
        
$cat_name_ascii $_POST***91;'txtNameAscii'***93;;
        
$cat_type $_POST***91;'txtNameType'***93;;
        
        
$q "UPDATE m_cat
            SET cat_name = '"
.$cat_name."', cat_name_ascii = '".$cat_name_ascii."',cat_type=".$cat_type.
            WHERE cat_id = "
.$cat_id;
        
$rs dbQuery($q) or die ('Không thể cập nhật thông tin Category này.' mysql_error());
        
header ('Location: index.php');
    } 
Đây là form Edit:
PHP Code:
<?php
    
if(isset($_GET***91;'sId'***93;) && $_GET***91;'sId'***93; > 0){
        
$sId $_GET***91;'sId'***93;;
    }
    else{
        
header ('Location: index.php');
    }
    
    
$q "SELECT cat_name,cat_name_ascii,cat_type
        FROM m_cat
        WHERE cat_id = 
$sId";
    
$rs dbQuery($q);
    
$r dbFetchAssoc($rs);
    
extract($r);
?>
<table width="100%" border="0" cellpadding="2" cellspacing="1">
    <form name="process.php?act=edit&sId=<?php echo $sId;?>" method="post" name="frmCat" id="frmCat" onsubmit="return checkFrmCat();">
        <tr>
            <td>Tên Category:</td>
            <td><input type="text" name="txtName" size="40" value="<?php echo $cat_name;?>" class="textbox"></td>
        </tr>
        <tr>
            <td>Tên Category - Ascii:</td>
            <td><input type="text" name="txtNameAscii" size="40" value="<?php echo $cat_name_ascii;?>" class="textbox"></td>
        </tr>
        <tr>
            <td>Type:</td>
            <td><input type="text" name="txtNameType" size="40" value="<?php echo $cat_type;?>" class="textbox"></td>
        </tr>
        <tr>
            <td colspan="2">&nbsp;</td>
        </tr>
        <tr>
            <td colspan="2" align="center">
            <input type="submit" name="submit" value="Cập Nhật" class="button">
        </tr>
    </form>
</table>
Hiện trạng trang khi ấn nút Submit. Các function khác hoạt động bình thường như: Thêm, Xóa. Chỉ có sửa là có vấn đề.
ngoc_viet08 viết 11:40 ngày 10/10/2018
cách thức trình bày của bác em thấy rối rắm quá :
$cat_id = (int)$_GET['sId'];
(int) đặt đó nghĩa là gì ?
"UPDATE m_cat
SET cat_name = '".$cat_name."', cat_name_ascii = '".$cat_name_ascii."',cat_type=".$cat_type."
WHERE cat_id = ".$cat_id;
nó có thể viết lại như thế này :
"UPDATE m_cat
SET cat_name = '$cat_name', cat_name_ascii = '$cat_name_ascii',cat_type='$cat_type'
WHERE cat_id = '$cat_id'"
$q = "UPDATE m_cat
SET cat_name = '".$cat_name."', cat_name_ascii = '".$cat_name_ascii."',cat_type=".$cat_type."
WHERE cat_id = ".$cat_id;
$rs = dbQuery($q) or die ('Không thể cập nhật thông tin Category này.' . mysql_error());
header ('Location: index.php');
thường ta viết
$rs = dbQuery("UPDATE m_cat
SET cat_name = '$cat_name', cat_name_ascii = '$cat_name_ascii',cat_type='$cat_type'
WHERE cat_id = '$cat_id'");
if (!$rs)
{
...error...
}
ủa mà cái này you làm function mà ? function chỉ hoạt động khi nó được dùng thôi chứ .bỏ function đi .
kylobytes viết 11:40 ngày 10/10/2018
Được gửi bởi ngoc_viet08
ủa mà cái này you làm function mà ? function chỉ hoạt động khi nó được dùng thôi chứ .bỏ function đi .
Ẹc.Ông không thấy ở trên tui dùng switch à:
Dùng
PHP Code:
$cat_id = (int)$_GET***91;'sId'***93;; 
cho biến $_GET['sId']; chắc chắn là số nguyên.Sợ là chuỗi

nó có thể viết lại như thế này :
PHP Code:
"UPDATE m_cat
SET cat_name = '
$cat_name', cat_name_ascii = '$cat_name_ascii',cat_type='$cat_type
WHERE cat_id = '
$cat_id'" 
cat_id là int mà ông cho là chuỗi. Pó tay.
Code:
WHERE cat_id = '$cat_id'"
thường ta viết
PHP Code:
$rs dbQuery("UPDATE m_cat
SET cat_name = '
$cat_name', cat_name_ascii = '$cat_name_ascii',cat_type='$cat_type
WHERE cat_id = '
$cat_id'");
if (!
$rs)
{
...
error...

So với cách viết của ông cái nào ngắn hơn, cái nào trông dễ nhìn hơn.
Ai có cao kiến khác không
ngoc_viet08 viết 11:40 ngày 10/10/2018
<form name="process.php?act=edit&sId=<?php echo $sId;?>" method="post" name="frmCat" id="frmCat" onsubmit="return checkFrmCat();">
hình như lỗi ở đây nè . tối qua buồn ngủ nên nhìn ko rõ
kylobytes viết 11:42 ngày 10/10/2018
Oh Thank. Đúng là bất cẩn. Đáng lẽ phải acction chứ. Thật là cám ơn. Mất 2 đêm mà ko tìm ra. Pó tay. Lỗi thật đơn giản nhưng khó tìm
zmt264 viết 11:43 ngày 10/10/2018
Được gửi bởi kylobytes
Oh Thank. Đúng là bất cẩn. Đáng lẽ phải acction chứ. Thật là cám ơn. Mất 2 đêm mà ko tìm ra. Pó tay. Lỗi thật đơn giản nhưng khó tìm
giống kiểu danh tướng chết vì trượt chân nhỉ?

thực ra lỗi đó cũng có thể nói là tại bất cẩn, làm việc không theo chuẩn nó quen rồi.
kylobytes viết 11:37 ngày 10/10/2018
Đó là lỗi bất cẩn tại sao lại cho là ko theo chuẩn. Nếu ko theo chuẩn thì Form thêm của tui cũng bị lỗi vậy chứ. Tóm lại là lỗi bất cẩn
bachcotsau viết 11:43 ngày 10/10/2018
Nhưng mà mình thấy chỗ này cũng có chút vấn đề đó

Code:
        $q = "UPDATE m_cat
            SET cat_name = '".$cat_name."', cat_name_ascii = '".$cat_name_ascii."',cat_type=".$cat_type." 
            WHERE cat_id = ".$cat_id;
WHERE cat_id = ".$cat_id; phải thay = WHERE cat_id = ".$cat_id."";
zmt264 viết 11:32 ngày 10/10/2018
Được gửi bởi kylobytes
Đó là lỗi bất cẩn tại sao lại cho là ko theo chuẩn. Nếu ko theo chuẩn thì Form thêm của tui cũng bị lỗi vậy chứ. Tóm lại là lỗi bất cẩn
Vì người có tinh thần theo chuẩn web (ví dụ tui) thì trong tay họ luôn có có đầy đủ tool chống lại việc phi chuẩn, ví dụ HTML Validator, và luôn soi mói xem có sai xHTML, CSS không, nên không bao giờ viết sai kiểu như bạn cả.

đọc thêm:
http://ddth.com/showthread.php?t=119870

Nói bất cẩn chung chung thì không bao giờ rút ra kinh nghiệm được đâu

p/s: lỗi của bạn được đánh giá là basic, kiểu như lỗi thiếu dấu chấm phẩy trong lập trình vậy, thậm chí nặng hơn, những lỗi đó đều có tool để chống sai cả. Khi bị sai, thì việc đầu tiên là duyệt lại xem có sai chuẩn không, ví dụ chuẩn viết code. Cho nên tốt nhất là luôn đúng chuẩn trước đã.
kylobytes viết 11:44 ngày 10/10/2018
Được gửi bởi bachcotsau
Nhưng mà mình thấy chỗ này cũng có chút vấn đề đó

Code:
        $q = "UPDATE m_cat
            SET cat_name = '".$cat_name."', cat_name_ascii = '".$cat_name_ascii."',cat_type=".$cat_type." 
            WHERE cat_id = ".$cat_id;
WHERE cat_id = ".$cat_id; phải thay = WHERE cat_id = ".$cat_id."";
Theo bạn
PHP Code:
WHERE cat_id ".$cat_id
khác
PHP Code:
WHERE cat_id ".$cat_id.""; 
ở chỗ nào.
Nếu thêm
Code:
""
thì vẫn thế. Không thay đổi gì cả
Bài liên quan
0