0

配列のチェックボックスに問題があります。ゴールスコアラーやカード (緑または赤) などのその他の情報を追跡するために、サッカー ゲーム (屋内) で実行されるスクリプトに取り組んでいます。

アウェイ チーム テーブルのコードは次のとおりです。問題はチェックボックスにあります。チェックを外すと、値は送信されません。チェックされていない場合は値として「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
    }
    ?>

配列の作成はうまく機能し、テーブルは適切に作成されます。チェックボックスである赤いカードを除いて、スコア、ゴールスコアラー、タイム ペナルティ (グリーン カード) の更新はうまく機能します。DBを更新するためのコードの下

$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

4

3 に答える 3

1

チェックボックスは未チェックのデータを送信しないため、次の 2 つのオプションがあります。

  1. チェックボックス フィールドの存在をテストします。存在しない場合は、値を 0 と見なします。
  2. 同一の変数名と「0」の値を持つ非表示のフォーム変数を用意します。これはポストで送信されます。チェックボックス (フォームの後半に表示される) がチェックされている場合、値 0 が 30 で上書きされます。
于 2013-01-23T16:48:21.263 に答える
0

POSTを取得する場所に1を掛けるだけです

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

したがって、チェックボックスがチェックされていない場合は 0 になります。

別の解決策は、 $_POST が設定されているかどうかを確認することです。

if(!isset($_POST['checkbox'])){
$checkbox=0;
}else{
$checkbox=$_POST['checkbox'];
}
于 2013-01-23T16:50:32.530 に答える
0

チェックボックスをドロップダウン選択に変更して修正しました。最適ではありませんが、実行可能です。助けてくれてありがとう!

于 2013-01-24T18:18:52.690 に答える