2017-02-09 11 views
0

2つの異なる入力値を個別に変更/更新する必要があります。問題はそれらが別々に更新されない同じ値である$_GETであり、両方とも入力更新クエリが実行する値を取得します(同じ要求値のためです)。私の質問は、どのようにクエリを同じ値を取得しないように個別に更新することができます。 $_REQUESTを変更する必要がありますか、if()とする必要がありますか? PSは、私のコードサンプルは、すべて一緒にして、少しオフになっているが、実際のP​​HPのfailesにPHPのクエリにいくつかの異なる値を個別に更新するにはどうしたらいいですか?

<td class="stock" id="'.$r["product_id"].'">'.STRIPSLASHES($r["product_in_stock"]).'</td> 
<td class="test" id="'.$r["product_id"].'"><font size=+2><b>'.$r["product_s_desc"].'</b></font></td> 


    <script> 
var x; 
var h = 0; // blur fires multiple times, use h to count and fire once 
var url = 'up.php'; 

$(".test").on('click', function(d) { 
    d.stopPropagation(); 
    var x = $(d.target); 
    x.html('<input id="edit" style="width: 40px;" value="'+x.text()+'">'); 
    var this_id = x.context.id; 

    $("#edit").on('blur', function(d) { 
     if (h < 1) { 
      h = h+1; 
      d.stopPropagation(); 

      $(d.target.parentElement).text(d.target.value); 

      $.get(url, {id: this_id, value: d.target.value}) 
       .done(function(d){ if(d == undefined || d != 1) { alert('Something went wrong, check your data and results. '+d);}}) 

      $("#edit").off('blur'); 
     } 

     return false; 
    }); 
    h = 0; 
}); 
</script> 

<script> 
var x; 
var h = 0; // blur fires multiple times, use h to count and fire once 
var url = 'up.php'; 

$(".stock").on('click', function(d) { 
    d.stopPropagation(); 
    var x = $(d.target); 
    x.html('<input id="edit2" style="width: 40px;" value="'+x.text()+'">'); 
    var this_id = x.context.id; 

    $("#edit2").on('blur', function(d) { 
     if (h < 1) { 
      h = h+1; 
      d.stopPropagation(); 

      $(d.target.parentElement).text(d.target.value); 

      $.get(url, {id: this_id, value: d.target.value}) 
       .done(function(d){ if(d == undefined || d != 1) { alert('Something went wrong, check your data and results. '+d);}}) 
       .fail(function(d){ alert('error');}); 
      $("#edit2").off('blur'); 
     } 

     return false; 
    }); 
    h = 0; 
}); 
</script> 


require_once('db.php'); 


    $q2= 'UPDATE prestashop.ps_stock_available SET quantity = %d WHERE id_product = %d'; 
    $q= 'UPDATE prestashop.ps_product SET location = '%s' WHERE id_product = %d'; 



    $sql = sprintf($q, $_REQUEST['value'], $_REQUEST['id']); 
    $sql2 = sprintf($q2, $_REQUEST['value'], $_REQUEST['id']); 

    $rs=$ib->exec($sql); 
    $rs=$ib->exec($sql2); 
    if (PEAR::isError($rs)) throw new Exception ("DB Request: ". $rs->getMessage()); 

    die("1"); // exit and return 1 on success 

} catch (Exception $e) { 
    print $e->getMessage(); 
} 
+0

ブラウザでjavascriptデバッガを使用する方法を学んだら、あなた自身の質問に答えることができます – RiggsFolly

+0

ここでは 'STRIPSLASHES'とは何ですか?すぐに疑わしいことがあります。 – tadman

+1

**警告**:これは、クエリ内で任意のユーザーデータが使用されるため、重大な[SQLインジェクションのバグ](http://bobby-tables.com/)があります。可能な限り**準備文**を使用してください。これらは[mysqli](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[PDO](http://php.net/manual/)で行うのはかなり簡単です。 en/pdo.prepared-statements.php)ここでユーザが提供するデータは '? 'または':name'のインジケータで指定され、後で 'bind_param'や' execute'を使ってデータを入力します。 ** '$ _REQUEST'データを直接クエリに入れないでください。 – tadman

答えて

0

私は、これは危険な方法であるか分からないが、私はそれを切り抜いた要求値とIF(空)

を使用して作業しました
関連する問題