2012-03-29 61 views
0

私はこれをどうやって行うことができるのか本当に混乱しています。 1つが選択されたときに2の値を取得する必要があります。例えば、以下では、id = monthlyを$ 550ドルで持つtdを選択するとします。私はその価格に対応する年齢と超過を得る必要があります。私はこれが理にかなってほしい。 $ 550を選択する例では、年齢(18-24)と超過($ 1000)の値を取得するためにjqueryが必要です。私はこれらの2つの値をとり、下記のようにmysqlに挿入します。とにかく私はjqueryかphpでこれを行うことができますか?私はアイデアを公開しています。それを見る時間をとってくれてありがとう! (上記の例を使用して)jqueryと同じ行のテーブル要素を取得する

<table> 
    <tr> 
    <td width="67"></td> 
    <td width="102" id="excess">$1000</td> 
    <td width="102" id="excess">$2000</td> 
    </tr> 
    <tr> 
    <td width="67" id="age">18-24</td> 
    <td width="102" id="monthly">$550</td> 
    <td width="102" id="monthly">$650</td> 
    </tr> 
    <tr> 
    <td width="67" id="age">25-29</td> 
    <td width="102" id="monthly">$750</td> 
    <td width="102" id="monthly">$850</td> 
    </tr> 
    </table> 

MYSQL:

$query = mysql_query("UPDATE table SET Monthly = '$550' WHERE Age = '18-24' AND Excess = '$1000'")or die(mysql_error()); 
+1

。同じ 'id'、' id'値(名前が示唆しているように)を持つ複数の要素を持つことはできません**一意にする必要があります**。要素を分類しようとするなら、 'class'を使います。 –

答えて

2

あなたのHTMLは無効です。 idと同じ要素を複数持つことはできません。idの値(名前が示すように)は一意でなければなりません。要素を分類する場合は、classを使用します。この回答の残りの部分は、idの値がclassの名前に変更されていることを前提としています。

あなたが理解している場合は、monthlyクラスのセルのクリックを処理し、その列の最初のセルのテキストをその列の最初のセルと共に取得します。これは、簡単にjQueryを使って行われます(live example | source):

$("td.monthly").click(function() { 
    var $this = $(this), 
     firstCellInRow = $this.closest('tr').find('td').first(), 
     firstCellInColumn = $this.closest('table').find('tr').first().find('td').eq($this.index()); 
    console.log("First cell in row: " + firstCellInRow.text()); 
    console.log("First cell in column: " + firstCellInColumn.text()); 
}); 

私たちは、その後 findfirstを経由して、その最初のセルを見つけ、 closest経由して行を見つけることによって、行の最初のセルを見つけます。

我々は次に介して同じインデックスでクリックセルのindexを取得し、最初の行のセルを見つけ、次いでfindfirstを介して最初の行を取得し、closestを介してテーブルを見つけることによって、列の最初のセルを見つけます。 eq。私はこれが動作すると思います

+0

あなたはidsについて正しいです...私は金髪の瞬間を持っていました。これは完璧に動作します..時間をとって助けてくれてありがとう! – liveandream

0
$('.monthly').bind('click', function() 
{ 
    lstrMonth = $(this).html(); 
    lstrAge = $(this).parent().find('td:first').html(); 
    lnIndex = $(this).parent().index($(this)); 
    lstrExcess = $(this).parent('table').find('tr:first td:nth-child('+ (lnIndex + 1) +')'); 

    // do ajax call to a php script which execute the query 
    $.post('ajax/update.php', 
    { 
     age: lstrAge, 
     excess: lstrExcess, 
     month: lstrMonth 
    }, 
    function(data) // success 
    { 
     // do whatever you want 
    }); 
}); 

のように、PHPは、外観を簡素化します:あなたのHTMLが無効である

<?php 
    $query = mysql_query("UPDATE table SET Monthly = '".$_POST['month']."' WHERE Age = '".$_POST['age']."' AND Excess = '".$_POST['excess']."'")or die(mysql_error()); 
?> 
関連する問題