2013-07-23 4 views
0

мне нужна помощь с обновлением выбранного элемента из списка заселенной с помощью PHP и обновляется с JQuery, вот что у меня есть:Обновление записей таблиц с JQuery и MySQL с помощью PHP

мой update.php передний конец

<?php include_once('db.php'); ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Update Collected</title> 
<link rel="stylesheet" href="css/style.css" type="text/css" media="print, projection, screen" /> 
<link rel="stylesheet" href="css/bootstrap.css" type="text/css" media="screen" /> 
<link rel="stylesheet" href="css/bootstrap-responsive.css" type="text/css" media="screen" /> 
</head> 

    <body> 
    <?php 
    $sql="SELECT * FROM qrnumber"; 
    $result=mysql_query($sql); 


    ?> 
<div class="container-fluid main"> 

     <div class="row-fluid "> 
     <div class="span12"> 
     <span class="success"></span> 
    <table cellpadding="0" cellspacing="0" id="tablesorter-demo" class="tablesorter table table-striped"> 
    <thead> 
    <tr> 
    <th>id</th><th>Name</th><th>Points</th><th>Collected</th><th>Action</th> 
    </tr> 
</thead> 
    <?php while($row = mysql_fetch_array($result)) : ?> 
    <tr id="<?php echo $row['id']; ?>"> 
<td><?php echo $row['id']; ?></td> 
<td><?php echo $row['name']; ?></td> 
<td><?php echo $row['points']; ?></td> 
<td><?php echo $row['total']; ?></td> 
<!-- and so on --> 
<td> 

    <input id="total" class="required" type="text" name="total"> 
    <button class="update_btn" rel="<?php echo $row['id']; ?>">update</button> 

</td> 
</tr> 
    <?php endwhile; ?> 
<?php 
    // close connection 
    mysql_close(); 
    ?> 
    </table> 
    </div> 
    </div> 
    </div> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
    <script type="text/javascript" src="js/jquery.tablesorter.js"></script> 
    <script> 
    $(document).ready(function(){  

    $(function() {   
    $("#tablesorter-demo").tablesorter({sortList:[[0,0],[2,1]], widgets: ['zebra']}); 
    $("#options").tablesorter({sortList: [[0,0]], headers: { 
      3:{sorter: false}, 4:{sorter: false}}}); 
    ); 
$('.update_btn').click(function(){ 
    $('.success').text("loading..."); 
    var id = $(this).attr('rel'); 
    var total = $('#total').val(); 
    $.post('call.php', {Id:id, Total:total}, function(data) { 
     alert(data); 
    }); 
}); 

    }); 
</script> 

</body> 
</html> 

Это мой файл process.php

<?php 
include_once('db.php'); 
var_dump($_POST); 
if (isset($_POST['collected'])){ 
$collected = mysql_real_escape_string(htmlentities($_POST['collected'])); 
} 
$id = $_POST['id'][0]; 
    $total = $_POST['total']; 
    echo $id. $total; 
    mysql_query("UPDATE qrnumber SET total='$total' 
    WHERE id='$id'"); 

    ?> 

вопрос заключается в том, что, когда я отправляю номер в поле ввода, он делает подключение к моему файлу обработки PHP, но не обновляет тыс e, он подключается к db и передает значения из файла update.php для обработки файла (call.php). Затем он устанавливает все записи в «0», может кто-то поможет, пожалуйста.

Спасибо,

JV

+0

где вы используете $ собранные в запросе в process.php? – Maximus2012

ответ

1

Ваш $ _POST неправильно в PHP. PHP создает только массив значений в $ _POST/$ _ GET, если имя поля, отправленное клиентом, заканчивается [] символами. например

будет производить следующий $ _POST массива:

$_POST = array(
    'not_an_array' => 'bar' 
    'is_an_array' => array (
     0 => 'baz' 
     1 => 'qux' 
    ) 
); 

С Id and Всего you're submitting in the ajax call don't have [] `в названиях, они просто быть простых одиночных значений в PHP, например,

$id = $_POST['Id']; 
$total = $_POST['Total']; 

И кивают, что вы по-прежнему уязвимы для атак SQL инъекций, так как вы пытаетесь использовать $id непосредственно в запросе, не избежать, что либо. ANY внешние данные, входящие в строку запроса, являются векторами атаки. Вы не можете избежать только НЕКОТОРЫХ значений и считаете, что вы в безопасности.

+0

Спасибо за ваш ответ. Я знаю, что он отправляет мне массив, который со мной подходит, пока я могу вернуть результаты из массива и сделать запрос на обновление таблицы db. – Jvil

+0

Я создал скрипт js, что у меня в настоящее время отлично работает для первой записи, но когда я пытаюсь выполнить вторую запись или следующую, она не работает. Вот что у меня есть: [jsfiddle] (http://jsfiddle.net/javivilchis/SrUEe/1/) – Jvil

Смежные вопросы