2011-06-19 10 views
1

jeditableに問題があります。その場でユーザー情報を変更したいのですが、機能しません。それをデバッグ中にOK、エラー、なし成功jeditableプラグインの問題

私のコード(index.phpを)私は間違っ

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script src="js/jquery.jeditable.js"></script> 
<script type="text/javascript" charset="utf-8"> 
$(document).ready(function() { 
    $(".dblclick").editable("change.php", { 
    submitdata : {userid: "<?=$id?>"}, 
    id : 'elementid', 
    name : 'newvalue', 
     indicator : "<img src='styles/images/ui-anim_basic_16x16.gif'>", 
     tooltip : "click to edit", 
     event  : "dblclick", 
     style : "inherit" 
    }); 
    }); 
    </script> 
... 
<div id="fullname" class="dblclick" ><?=$person->fullname?></div> 

change.php

<?php 
require 'db.php'; 
$id=$_POST['userid']; 
$field=$_POST['elementid']; 
$newvalue=$_POST['newvalue']; 
if(isset ($id) && isset($field) && isset($newvalue)) 
{$query = $db->query("UPDATE usr_table SET '$field'='$newvalue' WHERE id = '$id'") or die(mysqli_errno()); 
    } 
?> 

POSTを示していませんか?

答えて

1

引用符ではなく列名の前後にバッククォートを使用する必要があります。しかし、私はこのコードが書かれている方法は極端にであることに注意する必要があります。 GET POST変数をデータベースクエリに直接入れてはいけません。

これは良いです:

<?php 
require 'db.php'; 

function fail($msg) { 
    header('HTTP/1.0 404 Not Found'); 
    die($msg); 
} 

$id = (int)@$_POST['userid']; 
if (!$id) fail('User ID invalid or missing.', 404); 

$field = @$_POST['elementid']; 
$allowed_fields = array('fullname','dob','phone','adress','school','info'); 
if (!in_array($field, $allowed_fields)) fail('Invalid or missing field.', 404); 

$newvalue = $db->real_escape_string(@$_POST['newvalue']); 

$db->query("UPDATE usr_table SET `$field`='$newvalue' WHERE id=$id") or fail($db->error); 

$q = $db->query("SELECT `$field` from usr_table where id=$id") or fail($db->error); 
if ($r = $q->fetch_row()) echo $r[0]; 
else fail('User not found.');