Php 有关复选框和数据库的帮助

Php 有关复选框和数据库的帮助,php,Php,求求你我需要帮助我是个乞丐 我有一张带复选框的表格。每一个都有一个值,当复选框被选中时,它的值被添加到总和中。。。我想保存签入数据库的复选框 <script type="text/javascript"> function checkTotal() { document.listForm.total.value = ''; var sum = 0; for (i=0;i<document.listForm.choice.l

求求你我需要帮助我是个乞丐

我有一张带复选框的表格。每一个都有一个值,当复选框被选中时,它的值被添加到总和中。。。我想保存签入数据库的复选框

<script type="text/javascript">
    function checkTotal() {
        document.listForm.total.value = '';
        var sum = 0;
        for (i=0;i<document.listForm.choice.length;i++) {
          if (document.listForm.choice[i].checked) {
            sum = sum + parseFloat(document.listForm.choice[i].value);
          }
        }
        document.listForm.total.value = sum;
    }
</script>

<form name="listForm" method="post" action="insert_options.php" >
<TABLE cellPadding=3 width=600 border=0>
        <TBODY>

        <TR>
          <TH align=left width="87%" bgColor=#b0b3b4><SPAN 
            class=whiteText>Item</SPAN></TH>
          <TH align=right width="13%" bgColor=#b0b3b4><SPAN 
            class=whiteText>Select</SPAN></TH></TR>
        <TR>
          <TD  bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>General</B></SPAN></TD></TR>
        <TR>
          <TD  bgcolor="#c4c8ca"><SPAN class=normalText >TEAK SIDE DECKS (2889)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="2889" type="checkbox" onchange="checkTotal()" /></TD></TR>
        <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>LEAD DEEP KEEL (1825)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="1825" type="checkbox" onchange="checkTotal()"></TD></TR>

        <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>FULLY BATTENED MAINSAIL (558)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="558"  type="checkbox"  onchange="checkTotal()"></TD></TR>

        <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>HIGH TECH SAILS FOR CONVENTIONAL RIG (1979)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="1979" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>IN MAST REEFING WITH HIGH TECH SAILS (2539)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="2539" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>SPlNNAKER GEAR (POLE LINES DECK FITTINGS) (820)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="820" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>SPINNAKER POLE VERTICAL STOWAGE SYSTEM (214)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="214" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>GAS ROD KICKER (208)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="208" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>SIDE RAIL OPENINGS (BOTH SIDES) (392)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="392" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>SPRING CLEATS MIDSHIPS -ALUMIMIUM (148)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="148" type="checkbox" onchange="checkTotal()"></TD></TR>


          <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>ELECTRIC ANCHOR WINDLASS (1189)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="1189" type="checkbox" onchange="checkTotal()"> </TD></TR>



          <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>ANCHOR CHAIN GALVANISED (50m) (202)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="202" type="checkbox" onchange="checkTotal()"> </TD></TR>



          <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>ANCHOR CHAIN GALVANISED (50m) (1141)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="1141" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TR>
          <TD  bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>NAVIGATION & ELECTRONICS</B></SPAN></TD></TR>
        <TR>
          <TD  bgcolor="#c4c8ca"><SPAN class=normalText >WIND VANE (STAINLESS STEEL)(41)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="41" type="checkbox" onchange="checkTotal()" /></TD></TR>
        <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>RAYMARINE ST6O LOG & DEPTH (SEPARATE UNITS)(226)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="226" type="checkbox" onchange="checkTotal()"></TD></TR>

      <TR>
          <TD  bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>ENGINES & ELECTRICS</B></SPAN></TD></TR>
        <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>SHORE SUPPLY (220V) WITH 3 OUTLETS (EXCLUDJNG SHORE CABLE) (327)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="327"  type="checkbox"  onchange="checkTotal()"></TD></TR>

        <TR>
          <TD bgColor=#c4c8ca><SPAN class=normalText>3rd BATTERY(14OA/H)(196)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="196" type="checkbox" onchange="checkTotal()"></TD></TR>

         <TD bgColor=#c4c8ca><SPAN class=normalText>24 AMP BATTERY CHARGER (475)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="475" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TD bgColor=#c4c8ca><SPAN class=normalText>2 BLADED FOLDING PROPELLER (UPGRADE)(299)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="299" type="checkbox" onchange="checkTotal()"></TD></TR>


         <TR>
          <TD  bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>BELOW DECKS/DOMESTIC</B></SPAN></TD></TR>

          <TD bgColor=#c4c8ca><SPAN class=normalText>WARM WATER (FROM ENGINE & 220V)(749)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="749" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TD bgColor=#c4c8ca><SPAN class=normalText>SHOWER IN AFT HEADS WITH PUMPOUT(446)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="446" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TD bgColor=#c4c8ca><SPAN class=normalText>DECK SUCTION DISPOSAL FOR HOLDINGTANK(166)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="166" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TD bgColor=#c4c8ca><SPAN class=normalText>REFRIGERATED COOLBOX (12V)(666)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="666" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TD bgColor=#c4c8ca><SPAN class=normalText>LFS SAFETY PACKAGE (COCKPIT HARNESS POINTS STAINLESS STEEL JACKSTAYS)(208)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="208" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TD bgColor=#c4c8ca><SPAN class=normalText>UPHOLSTERY UPGRADE IN SALOON (SUEDETYPE)(701)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="701" type="checkbox" onchange="checkTotal()"></TD></TR>

          <TR>
          <TD  bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>NAVIGATION ELECTRONICS & ELECTRICS</B></SPAN></TD></TR>

          <TD bgColor=#c4c8ca><SPAN class=normalText>VHF RADIO AERIAL CABLED TO NAVIGATION AREA(178)</SPAN></TD>
          <TD align=right bgColor=#c4c8ca><input  name="choice" value="178" type="checkbox" onchange="checkTotal()"></TD></TR>
</table>

函数checkTotal(){
document.listForm.total.value='';
var总和=0;

对于(i=0;i首先,所有
字段都具有相同的
名称
属性。这会导致发送多个同名值(如果选中多个复选框),其中PHP仅将最后一个值用于其
$\u POST
集合

要解决此问题,请为它们命名为“
choice[]
”,而不是“
choice
”。这会向PHP发出信号,表明存在多个可能的值,并且它们都可以作为数组使用。换句话说,您将能够执行以下操作:

$choices = $_POST['choice'];
foreach ( $choices as $key => $value )
    echo "$key  => $value";
这将输出如下内容

0 => 32
1 => 12
2 => 48
换句话说,您将获得一个带有选中复选框值的数组。之后,您可以对它们执行任何操作。例如,
infrade()
themes以获取逗号分隔的列表

但有一件事需要提醒您,那就是“SQL注入”这是没有经验的程序员的一个常见错误。这种想法是恶意用户也可以很容易地将其他值发送到那里,而不仅仅是您在HTML中指定的值。伪造HTTP请求不需要太多技巧。用户可能会发出任何内容,因此您应该始终检查所有内容您从用户处获得的输入。不要信任您进行的任何JavaScript验证。只要它来自用户端,就不能信任。永远不要

如果你想知道这可能是一件坏事——考虑一下,如果你的数组中的某个值突然不再是“代码> 43”/代码>会发生什么,而是“<强> >代码>”;删除数据库;-< /代码> < /强>”< /P> 因为您是盲目地执行如下查询

INSERT INTO options VALUES('$opt');
这将变成

INSERT INTO options VALUES(''); DROP DATABASE; --);

再见,再见你的数据库。因此,始终确保用户输入是你期望的,并且不可能出现类似的情况。哦,是的-
addslashes()
不是一个好方法,因为仍然有解决方法。参数化查询是最好的方法,但是如果你不能使用它,那么至少使用
mysql\u real\u escape\u string()
用于MySQL,或您的DBMS提供的任何其他内容。

首先,您的所有
字段都具有相同的
名称
属性。这会导致发送多个同名值(如果选中多个复选框),其中PHP仅将最后一个值用于其
$\u POST
集合

要解决此问题,请为它们命名为“
choice[]
”,而不是“
choice
”。这会向PHP发出信号,表明存在多个可能的值,并且它们都可以作为数组使用。换句话说,您将能够执行以下操作:

$choices = $_POST['choice'];
foreach ( $choices as $key => $value )
    echo "$key  => $value";
这将输出如下内容

0 => 32
1 => 12
2 => 48
换句话说,您将获得一个带有选中复选框值的数组。之后,您可以对它们执行任何操作。例如,
infrade()
themes以获取逗号分隔的列表

但有一件事需要提醒您,那就是“SQL注入”这是没有经验的程序员的一个常见错误。这种想法是恶意用户也可以很容易地将其他值发送到那里,而不仅仅是您在HTML中指定的值。伪造HTTP请求不需要太多技巧。用户可能会发出任何内容,因此您应该始终检查所有内容您从用户处获得的输入。不要信任您进行的任何JavaScript验证。只要它来自用户端,就不能信任。永远不要

如果你想知道这可能是一件坏事——考虑一下,如果你的数组中的某个值突然不再是“代码> 43”/代码>会发生什么,而是“<强> >代码>”;删除数据库;-< /代码> < /强>”< /P> 因为您是盲目地执行如下查询

INSERT INTO options VALUES('$opt');
这将变成

INSERT INTO options VALUES(''); DROP DATABASE; --);

再见,再见你的数据库。因此,始终确保用户输入是你期望的,并且不可能出现类似的情况。哦,是的-
addslashes()
不是一个好方法,因为仍然有解决方法。参数化查询是最好的方法,但是如果你不能使用它,那么至少使用
mysql\u real\u escape\u string()
适用于MySQL,或您的DBMS提供的任何其他功能。

请简化您的代码,删除所有不必要的内容查看我的答案请简化您的代码,删除所有不必要的内容查看我的答案查看我的答案查看我的答案男士真棒的答案。您应该为此获得更多的加分:)男士真棒的答案。您应该为此获得更多的加分:)