jEditable принимает только один идентификатор

Хорошо. Я новичок в jEditable. Позвольте мне объяснить проблему, которую я имею с jEditable.

У меня есть эта простая таблица в моей базе данных -

id  car        make 
1   panamera   porsche  
2   italia     ferraris 
3   avantador  lamborghini  
4   slk        mercedes

И я собираюсь повторить эту таблицу в цикле, а ниже приведен код -

<script type="text/javascript">
<?php
$query2 = "SELECT * FROM inplace LIMIT 0, 6";    
$result2 = mysql_query($query2) or die ('Query couldn\'t be executed');  
$row2 = mysql_fetch_assoc($result2);
?>

$(function() {
$(".items").editable("handler.php", { 
submitdata : {userid: "<?php echo $row2['id']; ?>"},
indicator : "<img src='img/indicator.gif'>",
tooltip   : "Doubleclick to edit...",
event     : "click",
onblur    : "submit",
name : 'newvalue',
id   : 'elementid',

}); 
});
</script>

</head>
<body>

<ul>
<?php  
$query = "SELECT * FROM inplace LIMIT 0, 6";    
$result = mysql_query($query) or die ('Query couldn\'t be executed');  
while ($row = mysql_fetch_assoc($result)) {

echo '<li class="items" id="car">'.$row['car'].'</li>';
echo '<li class="items" id="make">'.$row['make'].'</li>'; 
}

?>
</ul>

В приведенном выше коде я передаю newvalue(отредактировано пользователем) и elementid(автомобиль или сделать) в jeditable сценарии. И мне также нужен еще один идентификатор, который помогает определить правильный идентификатор базы данных для обновления. Поэтому я пытаюсь передать идентификатор базы данных в submitdata : {userid: "<?php echo $row2['id']; ?>"}, Я не уверен, что этот метод правильный.

А ниже находится запрос на обновление в файле "handler.php" -

require("db.php");

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

$id = (int)@$_POST['userid'];

$field = @$_POST['elementid'];

$allowed_fields = array('car','make');
if (!in_array($field, $allowed_fields)) fail('Invalid or missing field.', 404);
$newvalue =  $_POST['newvalue'];
$query = "UPDATE inplace SET `$field`='$newvalue' WHERE id=$id"; 
$result = mysql_query($query);
echo $newvalue;

Таким образом, проблема здесь заключается в следующем submitdata : {userid: "<?php echo $row2['id']; ?>"} проходит только 1-й идентификатор. Это означает, что он передает только один идентификатор. Так что даже если вы редактируете italia или же avantador который принадлежит идентификаторам 2 и 3 соответственно, он обновляет первый идентификатор. Когда я повторяю запрос, какую бы машину вы ни редактировали, она всегда читается как UPDATE inplace SETcar='volante' WHERE id=1, Когда я непосредственно пишу 2 или 3 или 4 в submitdata, он обновляется правильно. Проходит только один идентификатор. Кто-то предложил мне использовать как id="car-'.$row['id'].'" а затем взорвать его, а затем использовать Foo и прочее. Я пытался использовать его, но у меня не получилось. Ищем решение для этого.

2 ответа

Решение

Вы можете сделать собственный атрибут в вашем <li> теги, содержащие идентификационный номер. Затем в вашем jQuery вы просто получаете это значение.

<script type="text/javascript">

$(function() {

   $("li.items").each(function(index) {

      $(this).editable("handler.php", { 
         submitdata : {userid: $(this).attr('carid')},
         indicator : "<img src='img/indicator.gif'>",
         tooltip   : "Doubleclick to edit...",
         event     : "click",
         onblur    : "submit",
         name : 'newvalue',
         id   : 'elementid',
      });

   }); 

});

</script>

</head>
<body>

<ul>

<?php  
  $query = "SELECT * FROM inplace LIMIT 0, 6";    
  $result = mysql_query($query) or die ('Query couldn\'t be executed');  
  while ($row = mysql_fetch_assoc($result)) {
     echo '<li class="items" carid="'.$row['id'].'" id="car">'.$row['car'].'</li>';
     echo '<li class="items" carid="'.$row['id'].'" id="make">'.$row['make'].'</li>'; 
  }
?>

</ul>

Отказ от ответственности: я не проверял это, и я не уверен на 100% в синтаксисе jQuery.

[РЕДАКТИРОВАТЬ] Я просто изменил его, чтобы, надеюсь, работать с использованием $(this) селектор для ссылки на каждый конкретный <li>,

Ваш PHP-код, который записывает идентификатор

submitdata : {userid: "<?php echo $row2['id']; ?>"},

будет запускаться только на сервере и запускаться только один раз, поэтому во всех отправляемых будет использоваться только одно это значение.

У cillosis есть одно решение вашей проблемы.

Другие вопросы по тегам