0
print "<Font face=\"calibri, Arial\"><table id=\"rnatable\" border=2px width=100%>";
print "<th></th>";
print "<th>a</th>";
print "<th>b</th>";
print "<th>c</th>";
print "<th>d</th>";
print "<th>e</th>";
print "<th>f</th>";
print "<th>g</th>";



while($array = mysql_fetch_array($sql_query))
{
$id=$array['a'];
print "<tr id=\"newtr\">";
print "<td><input id=\"check\" type=\"checkbox\" name=\"keyword[]\" value=\"$id\" ></td>";
print "<td>".$array['a']."</td>";
print "<td>".$array['b']."</td>";
print "<td>".$array['c']."</td>";
print "<td>".$array['d']."</td>";
print "<td>".$array['e']."</td>";
print "<td>".$array['f']."</td>";

print "<td>
<a href=\"http://localhost/rnasearch/retrieve.php?a=$id\">bla</a>
</td></tr></font>";

}

print "</table>";
}

これは、データベースからデータを取得するために作成したphp searchengineスクリプトの一部です。ご覧のとおり、gの最後の列には、クリックするとユーザーをそのエントリの追加情報を取得する2番目のphpスクリプトに移動するリンクが含まれています。ただし、これは単一のエントリに対してのみ行われるため、ユーザーが任意の数のチェックボックスをチェックして情報を取得できるように、チェックボックスを導入しました。

今これを行うために私は作成しました

    <div id="floatMenu"> 
<ul class="menu1"> 
<center><li><form name="senddata" method="POST" action="http://localhost/retrieve.php" style="display:inline;"><input id="fasta" type="text" class="multitext"><input name="Fasta" type="Submit" value="Retrieve Fasta"></form>

これはcssフローティングメニューです....これまでのところとても良いです....すべてがうまくいきました....この後、私はこれを行うためにjavascriptを書かなければならず、過去4日間フォーラムを検索して立ち往生しています!!

これは私がやりたかったことをやろうとしていたところから見つけたjavascriptです

    window.onload = function () { 
var cb = document.getElementById('check');
var fasta = document.getElementById('fasta');
cb.onclick = function () {fasta.value = cb.value + ","; 
};};

このスクリプトは、テーブルの最初のチェックボックスの値のみを送信し、他のチェックボックスは検出されません。最初のチェックボックスが選択されていないことに注意してください。テーブルにある最初のチェックボックスが選択されています。

テーブルにn個のチェックボックスがある場合でも、ユーザーがn個の情報を取得できるようにするには、どうすればこの問題を解決できますか。

4

1 に答える 1

0

IDは、1つのHTMLドキュメントで一意であることが意図されています。したがって、それらを使用して、同じIDを持つそれらの多くを取得することはできません。PHPとJSを次のように変更する必要がある場合があります。

$i=0;
while($array = mysql_fetch_array($sql_query))

{
$id=$array['a'];
print "<tr id=\"newtr\">";
print "<td><input id=\"check_$i\" type=\"checkbox\" name=\"keyword[]\" value=\"$id\" ></td>";
print "<td>".$array['a']."</td>";
print "<td>".$array['b']."</td>";
print "<td>".$array['c']."</td>";
print "<td>".$array['d']."</td>";
print "<td>".$array['e']."</td>";
print "<td>".$array['f']."</td>";

print "<td>
<a href=\"http://localhost/rnasearch/retrieve.php?a=$id\">bla</a>
</td></tr>";
$i++;
}

print "</table>";
}

    window.onload = function () { 
    var cb = document.getElementsByTagName('input');
    var fasta = document.getElementById('fasta');
    for (i=0;i<cb.length;++i)
    {
      if ( cb[i].type === 'checkbox' && cb[i].name === 'keyword[]')
          cb[i].onclick = function (e) {
            var str = e.target.value + ","
            if(e.target.checked)
                fasta.value += str;
            else
            {
                var ind = fasta.value.indexOf(str);
                fasta.value = fasta.value.substr(0, ind) + fasta.value.substr(ind+str.length,fasta.value.length);
            }
    }
};};

ここでjsFiddleを見つけることができます:http://jsfiddle.net/ZfmNw/1/

于 2012-05-12T08:28:36.960 に答える