0

ID によって割り当てられたチェックボックスの値を同時に取得する方法を知りたいです。

これが私の簡単なコードです:

<table class="data" cellpadding="0" cellspacing="0">
<?php
$select=mysql_query("select * from products_list ORDER BY id ASC");
while($row=mysql_fetch_array($select)){

$class = ' class="new_arrival" ';

echo "<tr>
<td>".$row['id']."</td>
<input type='hidden' name='product_id' value='".$row['id']."' />
<input type='checkbox' name='product_new' checked='checked' onclick='document.product_listing.submit();' /></td></tr>";
?>
</table>

if (isset($_POST['product_new'])) {

$id = $_POST['product_id'];

echo ("<script language='JavaScript'>
    window.alert('".$id."')
    </script>");
}

ID について取得し続ける結果は、データベースの最新のレコードですが、チェックボックスの値は正常に機能します。

私はこれを試しました:

<input type='checkbox' name='product_new[".$row['id']."]' checked='checked' onclick='document.product_listing.submit();' />

foreach($_POST['product_category'] as $id => $value)

foreachループを使用すると、何とか機能しましたが、チェックされているかどうかにかかわらず、これらのチェックボックスをループします。

皆さんが理解してくれることを願っています、これで2日間立ち往生しています。私の目的は、チェックボックスをオンまたはオフにすることです。これにより、mysql show result によって割り当てられた ID に従ってデータベースが更新されます。

どんな助けでも大歓迎です。ありがとう!!

4

3 に答える 3

1

チェックボックスで何をしようとしているのか正確にはわかりませんが、やりたいことを何でもするのに役立つことがいくつかあります。

  1. チェックされていない場合、HTML フォームはチェックボックスの値を送信しません。

  2. クリックされたチェックボックスがチェックされているかどうかを取得したい場合は、各onclickに次のようなIDの値を渡すことでそれを行うことができます

<input type='checkbox' name='product_new[".$row['id']."]' checked='checked' onclick='setValueAndSubmit(<?=$row[id]?>)' />

チェックボックスのchecked属性をチェックし、それに応じて処理する関数をjsに記述します

また

送信時にすべてのチェックボックスの値を確認する場合は、チェックボックス グループを反復処理するだけで、チェックされているチェックボックスのチェックボックス名のみが表示され、チェックされていないチェックボックスは送信されません。

編集: 各チェックボックスの後に onclick を削除して送信ボタンを配置するだけで、フォームが送信されると、チェックされたチェックボックスの名前と値が取得されるので、それらを設定し、他のすべての設定を解除します。

于 2012-07-27T10:30:06.957 に答える
0

問題を正しく理解していれば...

これは、product_idという名前の入力が複数あるために発生しているため、名前で参照すると1つが取得されますが、必要なものは取得されません。

したがって、修正は、ループの外側のフォームに単一のフィールドproduct_idを追加し、チェックボックスのonClickでその値を変更することです。

onclickの例:

<input type='checkbox' name='product_new' checked='checked' onclick='document.product_listing['product_id'] = ".$row['id'].";document.product_listing.submit();' /></td></tr>";`

そのようなものが機能するはずです。

于 2012-07-27T10:32:47.900 に答える
0

value=チェックボックスの属性にIDを入れるだけです。

HTML を生成するには:

<table class="data" cellpadding="0" cellspacing="0">
<?php

  $query = "
    SELECT *
    FROM products_list
    ORDER BY id ASC
  ";
  $result = mysql_query($query);

  // What if the query fails? Handle error here!

  while ($row = mysql_fetch_ssoc($result)) {

    // ...

    echo "
    <tr>
      <td>".htmlspecialchars($row['id'])."</td>
      <td><!-- I'm guessing this open td tag was missing and should be added -->
        <input type='checkbox' name='product_new[]' checked='checked' value='".htmlspecialchars($row['id'])."' />
        <!-- You don't want the onclick for the checkbox to submit the form, or you will only ever get one result -->
      </td>
    </tr>";

    // ...

  }

?>
</table>

フォームが送信されると、次のようになります。

if (isset($_POST['product_new'])) {
  foreach ($_POST['product_new'] as $id) {
    // Do stuff with $id here
  }
}
于 2012-07-27T10:39:23.480 に答える