0

複数のチェックボックスを選択してMySQLデータベースに保存できるフォームを作成しています。ただし、ユーザーがjavascriptを使用して選択できるチェックボックスの数を制限したいので、問題が発生しました。

インポート機能は引き続き機能するようです。各チェックボックスは、識別して内包できるように互いに同じ名前である必要がありますが、Javascript関数が機能するには、区別できるようにそれぞれの名前が異なる必要があります。

どんな提案でもありがたいです!

これが私が遊んでいるコードです。

Javascript関数:

<?php $calc = mysql_query($query) or die(mysql_error()); ?>

<SCRIPT LANGUAGE="javascript">

function KeepCount() 
{
var NewCount = 0

<?php while($count_row = mysql_fetch_array($calc)){
echo "

if (document.import1.checkbox".$count_row['id'].".checked)
{NewCount = NewCount + 1}

";
} ?>

if (NewCount == 6)
{
alert('You can select up to 5 competitors. If you wish to import more you will need to add more judges.')
document.import1; return false;
}
} 
</SCRIPT>

形:

<form action="import_process.php" method="post" name="import1" id="import1">
<input name="import" type="submit" id="import" value="Import">

<table>
<tr>
<td>&nbsp;</td>
<td>Name</td>
<td>Gender</td>
</tr>

<?php $counter = 1;
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo "<tr bgcolor=white>";
echo "<td align=\"center\">
<input name=\"checkbox".$row['id']."\" type=\"checkbox\" id=\"checkbox[]\" value=\"".$row['id']."\" onClick=\"return KeepCount()\"></td>";
}
echo "<td>".$row['name']."</td>";
echo "<td>".$row['gender']."</td>";
echo "</tr>";
$counter++;
}
?>
</table>
</form>

import_process.php:

if(isset($_POST['checkbox'])){
$checkbox = $_POST['checkbox'];
$id = "('" . implode( "','", $checkbox ) . "');" ; 
$sql="
INSERT INTO..."
4

1 に答える 1

0

コードを理解するのは少し難しいですが、名前とIDの違いに戸惑うと思います。IDはすべてのチェックボックスで異なっている必要があり、名前は同じである必要があります。

<input id=\"checkbox".$row['id']."\" type=\"checkbox\" name=\"checkbox[]\" value=\"".$row['id']."\" onClick=\"return KeepCount()\"></td>";

また、name-attributeは[]が必要な属性であるため、配列で結果を取得します$_POST['checkbox']

2つ目は、関数KeepCountが常に同じチェックボックスをオンにしているように見えることです(または、実際にはどのように機能するかわかりません)。これ$count_row['id']は、ページの解析中に一度設定されるため、javascript関数は実際には何もカウントできないためです。

したがって、チェックボックスの作成を次のように変更します。

<input id=\"checkbox".$row['id']."\" type=\"checkbox\" name=\"checkbox[]\" value=\"".$row['id']."\" onClick=\"return KeepCount(this)\"></td>";

そしてこのようなJavaScript

var count = 0;    

function KeepCount(it) {
 if (it.checked) {
  count = count + 1;
 } else {
  count = count - 1;
 }
 if (count == 6) {
  alert('You can 
  etc.

それはうまくいくはずです。

ちなみに、value =row['id']もナンセンスのようです。

于 2013-02-07T09:32:15.397 に答える