2010-12-31 7 views
0

Ich versuche herauszufinden, wie die ID und der Wert eines neuen Schlüsselworts in einer Zeile mit einem Eingabefeld geändert werden können.Beitrags-ID und neuer Schlüsselwortwert

Ich mache im Grunde eine MySQL-Abfrage, um Zeilen von Schlüsselwörtern zu sammeln, dann zeige ich das Schlüsselwort in einem Eingabefeld mit einer Save-Taste daneben. Wenn Sie auf Speichern klicken, möchte ich die ID und den neuen Schlüsselwortwert für diese Zeile posten.

Ich kann nur die erste Reihe zu arbeiten, ein Freund half mir mit der Jquery für ID nur bekommen, aber kann ich ändern, um Schlüsselwort Wert zu bekommen?

MY HTML/PHP

<?php 
$sql = "SELECT * FROM Tags ORDER BY name"; 
$result = mysql_query($sql); 

while ($row = mysql_fetch_array($result)) { 
$id  = $row['id']; 
$keyword = $row['name']; 
?> 

<tr id="<?php echo $id;?>"> 

<td><?php echo $id;?></td> 

<td><?php echo $keyword;?></td> 

<td><input type="text" name="keyword" id="newkeyword" value="<?php echo $keyword;?>"><a class="savenewkeyword" >Save</a></td> 

<td><a id="deleteKeyword">x</a></td> 

</tr> 

<?php } ?> 

MY JAVASCRIPT

$('table td .savenewkeyword').click(function(){ 

var id = $(this).parent().parent().attr('id'); 
var name = $('input#newkeyword').attr('id'); 
data = 'id=' + id + '&name=' + name; 
var parent = $(this).parent().parent(); 

$.ajax( 
{ 
type: "POST", 
url: "update/updatekeyword.php", 
data: data, 
cache: false, 
success: function() 
{ 
parent.fadeOut('slow'); 
parent.fadeIn('slow'); 
} 

}); 
}); 

Also nur rekapitulieren, im Versuch, id und neuen Keyword-Wert für jede Zeile zu schreiben.

Jede Hilfe würde sehr geschätzt werden.

auch guten Rutsch ins neue Jahr für soon ;-)

John

GELÖST - Vielen Dank DSKVR und Cybermate ;-)

<script type="text/javascript" charset="utf-8"> 

$('table td .savenewkeyword').click(function(){ 
var id = $(this).parents('tr').attr('id'); 
var name = $('input#newkeyword', $(this).parent()).attr('value'); 
data = 'id=' + id + '&name=' + name; 
var parent = $(this).parent().parent(); 

$.ajax({ 
     type: "POST", 
     url: "update/updatekeyword.php", 
     data: data, 
     cache: false, 
     success: function() 
     { 
     parent.fadeOut('slow'); 
     parent.fadeIn('slow'); 
     } 

    }); 
}); 


</script> 
+0

Sie haben wahrscheinlich ein XSS-Loch. – SLaks

Antwort

1

zwei Dinge,

  • benötigen Sie den Wert vom input greifen, nicht die ID.

    Schalter var name = $('input#newkeyword').attr('id'); mit var name = $('input#newkeyword').attr('value');

  • Sie .parents('tr') statt .parent().parent(), während sie arbeiten beide verwenden sollten, ist leichter zu verstehen, ohne den HTML-Code aus dem Javascript zu verweisen.

Hoffen, dass dies hilft, schlug Änderungen unten dargestellt vor.


$('table td .savenewkeyword').click(function(){ 
var id = $(this).parents('tr').attr('id'); 
var name = $('input#newkeyword').attr('value'); 
data = 'id=' + id + '&name=' + name; 
var parent = $(this).parent().parent(); 

$.ajax({ 
     type: "POST", 
     url: "update/updatekeyword.php", 
     data: data, 
     cache: false, 
     success: function() 
     { 
     parent.fadeOut('slow'); 
     parent.fadeIn('slow'); 
     } 

    }); 
}); 
+0

Danke dskvr, ich habe versucht Ihren Code, aber es gibt immer noch nur die erste Zeile zurück. Jede andere Zeile gibt auch die erste Zeile zurück. Ich denke, dass es etwas mit dem Elternteil zu tun hat. Wie der Speicherlink wird nur die erste Zeile gepostet? – jonnypixel

+1

Ich habe es dank dir und Cybermate, ich musste deine Linie zu Cybermates ändern und attr ('id') zu attr ('Wert') ändern. Das Ergebnis ist also in meinem ursprünglichen Post veröffentlicht. Danke DSKVR und Cybermate – jonnypixel

+0

Kein Problem! Ich wünschte, ich hätte es gefangen :) – Sandwich

0

versuchen Sie dieses

$.get('url: "update/updatekeyword.php',{ 
    id: id, 
    name: name 
    }, 
    function(data) 
    { 
     parent.fadeOut('slow'); 
     parent.fadeIn('slow'); 
    } 

});//end of get() 

Edit: natürlich Sie es mit $ Schnipsel() // kein Problem verwenden können ...

1

Sie die gleiche ID für alle Eingabefelder Wiederholung verwenden,

<input type="hidden" value="<?php echo $id;?>"> 

neben dem Textfeld # newkeyword

Ändern Sie die Zeile:

var name = $('input#newkeyword').attr('id'); 
to 
var name = $('input#newkeyword', $(this).parent()).attr('id'); 
+0

Ich habe es dank dir und DSKVR, musste ich Ihre Zeile attr ('id') zu attr ('Wert') ändern. So ist das Ergebnis in meiner ersten Post veröffentlicht. Danke Cybermate und DSKVR – jonnypixel

+0

Süße, endlich bekam das Votum Privileg. Danke noch einmal :-) – jonnypixel

Verwandte Themen