2017-11-02 11 views
1

私は2つの列を持つ1つのテーブルを持っています。 Col Numberとcol Letterと呼ぶことにします。このようなとして表示されます:特定のテーブルセルの値をテキストボックスに設定する(jQuery/PHP)

1 | A 
2 | B 
3 | C 
4 | D 

私は1 SELECT2は、すべての数字のループを持つドロップダウンボックスがある - それは、その数と相関表示され、私は手紙を持っているしたいテキストボックスを。

HTML/PHP照会現在のテーブル

<label for="number">NUMBER</label> 
<select onChange="setLetter(this)" style="text-transform: uppercase;" class="form-control select2" style="width: 100%;" name="number" id="number"> 
    <option selected="selected" disabled="disabled">-Select-</option> 

    <?php 
    if ($result->num_rows > 0) { 
     // output data of each row 
     while($row = $result->fetch_assoc()) { 
      echo "<option name='".$row["Number"]."' value='".$row["Number"]."'>"; 
      echo $row["number"]; 
      echo "</option>"; 
     } 
    } else { 
     echo "0 results"; 
    } 
    $conn->close(); 
    ?> 
</select> 
</div> 
SELECT2ボックスの値を照会することで

JavaScriptの試み私はその相関表内のセルに文字のテキストボックスを移入するにはどうすればよい

function setLetter(sel) 
{ 
    var col = sel.value; 
    <?php 
    $number = "SELECT ['Letter'] FROM `msftrail` WHERE ['Number']= '".$col."'"; 
    ?> 
    var php_var = "<?php echo $number; ?>"; 
    $("#letter").val(php_var); 
} 

正しい番号で?

答えて

1

ここで最も簡単には、配列、およびserializing it as JSONにすべてのこれらの行を置くことであろう。その後、クライアントにロードすることができます。

HTML + PHP:

$msftrail = array(); 
while($row = $result->fetch_assoc()) { 
    echo "<option name='".$row["Number"]."' value='".$row["Number"]."'>"; 
    echo $row["number"]; 
    echo "</option>"; 
    $msftrail[$row['Number']] = $row['Letter']; // Store the mapping from Number to Letter in this array 
} 

のJavaScript + PHP:

var msftrail = <?php echo json_encode($msftrail); /* Send the array to the client as JSON */ ?>; 
function setLetter(sel) 
{ 
    var col = sel.value; 
    var php_var = msftrail[col]; // Look up the letter for that number in the array 
    $("#letter").val(php_var); 
} 
+1

壮大なアプローチ。それは美しく動作し、きれいに実行されます。本当にありがとう! – BR89

0

すべての文字を含む配列を作成し、対応する文字をインデックスで呼び出すことができます。このよう

$foo = array(
      '1' => 'A', 
      '2' => 'B', 
      '3' => 'C' 
); 

は、次に、あなただけのインデックスを使用して配列を呼び出すことによって、あなたのキャラクターを得ることができます。このよう

echo $foo['1']; 
0

function setLetter(sel){ 
 
\t var tableValue=sel.value 
 
\t 
 
\t $('.item tr').each(function() { 
 
    var td1 = $(this).find("td").eq(0).html(); 
 
\t var td2 = $(this).find("td").eq(1).html(); 
 
\t if(tableValue==td1){ 
 
    
 
\t $('#out').text(td2); 
 
\t } 
 
}); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<table class="item"> 
 
\t <tr> 
 
\t \t <td>1</td> 
 
\t \t 
 
\t \t <td>A</td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td>2</td> 
 
\t \t <td>B</td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td>3</td> 
 
\t \t <td>C</td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td>4</td> 
 
\t \t <td>D</td> 
 
\t </tr> 
 

 
</table> 
 
<form> 
 
\t <select onChange="setLetter(this)"> 
 
\t \t <option>1</option> 
 
\t \t <option>2</option> 
 
\t \t <option>3</option> 
 
\t \t <option>4</option> 
 
\t </select> 
 
\t <br> 
 
\t <textarea id="out"></textarea> 
 
</form>

関連する問題