D'accord. Je suis nouveau à jEditable. Laissez-moi vous expliquer le problème que j'ai avec jEditable.jEditable prend un seul ID
Je cette table simple dans ma base de données -
id car make
1 panamera porsche
2 italia ferraris
3 avantador lamborghini
4 slk mercedes
Et je vais l'écho de cette table dans une boucle while et au-dessous est le code -
<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>
Dans le code ci-dessus, Je passe newvalue
(édité par l'utilisateur) et elementid
(voiture ou marque) dans le script jeditable. Et j'ai aussi besoin d'un identifiant supplémentaire qui aide à identifier l'identifiant de base de données correct à mettre à jour. Donc, j'essaie de passer l'ID de base de données dans submitdata : {userid: "<?php echo $row2['id']; ?>"}
. Je ne suis pas sûr si cette méthode est correcte.
Et ci-dessous est la requête de mise à jour dans le fichier « 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;
Donc, la question est ici, ce submitdata : {userid: "<?php echo $row2['id']; ?>"}
passe seulement 1er id. Cela signifie qu'il ne passe qu'un seul identifiant. Donc, même si vous éditez italia
ou avantador
qui appartient respectivement aux identifiants 2 et 3, il met à jour 1er ID. Lorsque je fais écho à la requête, quelle que soit la voiture que vous éditez, elle est toujours UPDATE inplace SETcar='volante' WHERE id=1
. Quand j'écris directement 2 ou 3 ou 4 dans les submitdata, il se met à jour correctement. Son passage à un seul identifiant. Quelqu'un m'a suggéré d'utiliser comme id="car-'.$row['id'].'"
et ensuite l'exploser et ensuite utiliser foo et d'autres choses. J'ai essayé de l'utiliser mais je n'ai pas travaillé pour moi. Vous cherchez une solution pour cela.
cillose- J'ai essayé votre réponse. Mais quand je fais écho à la requête, sa lecture comme UPDATE inplace SET 'car' = 'panamera' WHERE id = 0. Id lit comme 0. – newbiewebb
Oui, je ne l'ai pas testé. Cela a probablement à voir avec $ (this) .attr ("carid") '. Je ne suis pas sûr que ce soit le bon sélecteur pour obtenir la valeur. Il devrait être similaire cependant. –
Ai-je besoin de changer quelque chose dans ma requête de mise à jour quand j'utilise $ (this) .attr ("carid") dans submitdata? – newbiewebb