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

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

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

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

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

 <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 (автомобиль или make) в 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; 

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

    Вы можете создать собственный атрибут в тегах <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.

    [EDIT] Я просто изменил его, чтобы, надеюсь, работать с помощью селектора $(this) для ссылки на каждый конкретный <li> .

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

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

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

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