2012-03-17 2 views
1

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.

Répondre

1

Vous pouvez créer un attribut personnalisé dans vos balises <li> contenant le numéro d'identification. Ensuite, dans votre jQuery, vous venez de saisir cette valeur. Clause de non-responsabilité: Je n'ai pas testé cela et je ne suis pas sûr à 100% sur la syntaxe de jQuery.

[EDIT] Je viens de changer autour de nous l'espérons travail à l'aide du sélecteur $(this) pour référencer chaque <li> spécifique.

+0

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

+0

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. –

+0

Ai-je besoin de changer quelque chose dans ma requête de mise à jour quand j'utilise $ (this) .attr ("carid") dans submitdata? – newbiewebb

0

Votre code PHP qui est en train d'écrire sur l'id

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

ne fonctionnera que sur le serveur, et seulement une fois fonctionner, de sorte que tous n'utilisera soumet qu'une valeur.

cillose a une solution à votre problème.

+0

Toby - J'ai essayé la réponse de Cillosis. Mais quand je fais écho à la requête, sa lecture comme UPDATE inplace SET car = 'panamera' WHERE id = 0. Id est lu comme 0. Ai-je besoin de changer quelque chose dans ma requête de mise à jour quand j'utilise $ (this) .attr ("carid") dans submitdata? – newbiewebb