数组中的复选框没有值

时间:2013-01-23 16:44:50

标签: php mysql arrays checkbox

我遇到了数组中复选框的问题。我正在制作一个在足球游戏(室内)上运行的脚本,以跟踪进球者和其他信息,比如牌(绿色或红色)。

这是客队表的代码。问题出在复选框上。未选中时,它们不会发送任何值。我需要他们在未选中时发送'0'作为值,在选中时发送'30'。

   $sql1="SELECT dbo_doelpunten.TeamRelatieNummer, dbo_doelpunten.aantaldoelpunten, dbo_doelpunten.Deelnemer, dbo_doelpunten.aantalstrafminuten, dbo_Deelnemers.Deelnemer, dbo_Deelnemers.MinutenStrafVerwerkt, dbo_Deelnemers.Doelpunten, dbo_Deelnemers.NaamCombi
    FROM dbo_doelpunten
    LEFT JOIN dbo_Deelnemers
    ON dbo_doelpunten.Deelnemer=dbo_Deelnemers.Deelnemer
    WHERE dbo_doelpunten.TeamRelatieNummer='436'
    ORDER BY dbo_doelpunten.Deelnemer
    ";
    // $sql1="SELECT * FROM dbo_doelpunten WHERE TeamRelatienummer='436'";
    $result1=mysql_query($sql1);

    // Count table rows 
    $count=mysql_num_rows($result1);
    $Deelnemer = array();
    ?>
    <td>
    <table id="table" class="table"  width="400"> 
    <thead> 
    <tr> 
        <th data-sort="int">Nr</th>
        <th data-sort="string">Naam</th>      
        <th data-sort="int">Doelpunten</th> 
        <th data-sort="int">Tijdstraf</th> 
        <th data-sort="int">Rood?</th>
    </tr> 
    </thead>
    <tbody>
    <?php
    while($rowuit=mysql_fetch_array($result1)){
    $e=$rowuit['MinutenStrafVerwerkt'];
    if ($e>='10')
      {
      echo "<tr bgcolor='red'>";
      }
    else
      {
      echo "<tr>";
      }
      ?>
    <td width="50" class="tdata"><input name="Deelnemeruit[]" type="hidden" id="Deelnemeruit" size="10" value="<? echo $rowuit['Deelnemer']; ?>" readonly><? echo $rowuit['Deelnemer']; ?></td>
    <td width="250" class="tdata"><input name="NaamCombiuit[]" type="hidden" id="NaamCombiuit" size="20" value="<? echo $rowuit['NaamCombi']; ?>" readonly><? echo $rowuit['NaamCombi']; ?></td>
    <td width="50" class="tdata"><input name="doelpuntuit[]" type="number" min="0" max="100" size="3" id="doelpuntuit" value="<? echo $rowuit['aantaldoelpunten'] ?>"></td>
    <td width="50" class="tdata"><input name="strafuit[]" type="number" min="0" max="100" size="3" id="strafuit" value="<? echo $rowuit['aantalstrafminuten'] ?>"></td>
    <td width="50" class="tdata"><input name="rooduit[]" type="checkbox" value="30" id="rooduit"></td>
    </tr>
    <?php
    }
    ?>

创建数组运行良好,表格创建良好。更新得分,进球者和时间罚分(绿卡)效果很好,但红牌是一个复选框。在更新数据库的代码下面

$Deelnemerthuis = $_POST['Deelnemerthuis']; 
$NaamCombithuis = $_POST['NaamCombithuis'];
$doelpuntthuis = $_POST['doelpuntthuis']; 
$strafthuis = $_POST['strafthuis']; 
$vlaggerthuis = $_POST['vlaggerthuis']; 
$teamthuis = $_POST['teamthuis']; 
$roodthuis = $_POST['roodthuis'];

$Deelnemeruit = $_POST['Deelnemeruit']; 
$NaamCombiuit = $_POST['NaamCombiuit'];
$doelpuntuit = $_POST['doelpuntuit']; 
$strafuit = $_POST['strafuit']; 
$vlaggeruit = $_POST['vlaggeruit']; 
$teamuit = $_POST['teamuit']; 
$rooduit = $_POST['roodtuit'];




// Check if button name "Submit" is active, do this 
if(isset($_POST['Submit'])){

$i=0;
while($i<$count){
$sql3= "UPDATE dbo_doelpunten SET aantaldoelpunten = '" . $doelpuntthuis[$i] . "', aantalstrafminuten = '" . $strafthuis[$i] . "' WHERE wedstrijdid='300' AND  Deelnemer = '" . $Deelnemerthuis[$i] . "'"; 
$result3=mysql_query($sql3);


$sql7= "UPDATE dbo_Deelnemers SET MinutenStrafVerwerkt = MinutenStrafVerwerkt+'" . $roodthuis[$i] . "' WHERE Deelnemer = '" . $Deelnemerthuis[$i] . "'";
$result7=mysql_query($sql7);


$sql4= "UPDATE dbo_doelpunten SET aantaldoelpunten = '" . $doelpuntuit[$i] . "', aantalstrafminuten = '" . $strafuit[$i] . "' WHERE wedstrijdid = '300' AND Deelnemer = '" . $Deelnemeruit[$i] . "' "; 
$result4=mysql_query($sql4);

$sql8= "UPDATE dbo_Deelnemers SET MinutenStrafVerwerkt = MinutenStrafVerwerkt+'" . $rooduit[$i] . "' WHERE Deelnemer = '" . $Deelnemeruit[$i] . "'"; 
$result8=mysql_query($sql8);

$i++;
} 

如何在未选中时将复选框的值设为0,在选中时为30?

我在这里发布了该页面的完整代码: http://pastebin.com/u6xVMmrr

3 个答案:

答案 0 :(得分:1)

复选框不会发送未经检查的数据,因此您有两种选择:

  1. 测试复选框字段是否存在。如果它不存在,则假设值为0.
  2. 隐藏的表单变量具有相同的变量名称和值&#39; 0&#39;,将在发布时发送。如果选中复选框(显示在表单中的后面),它将用30.
  3. 覆盖0值

答案 1 :(得分:0)

只需乘以1即可获得POST

$checkbox=$_POST['checkbox']*1;

如果未选中复选框,您将获得0。

另一个解决方案是检查是否设置了$ _POST:

if(!isset($_POST['checkbox'])){
$checkbox=0;
}else{
$checkbox=$_POST['checkbox'];
}

答案 2 :(得分:0)

我通过将复选框更改为下拉选项来修复它。不是最佳但可行的。 Thanx为帮助人员!