2011-08-09 9 views
0

警告:この質問は少し長いかもしれませんが、私は事前に申し訳ありません。データベースで入力チェックボックスを使用する - パート2

だから私の最後の質問にここで見:「どのように私は、複数のユーザーがチェックボックス付きのRAID出席し、データベースループを管理しない」と私はshortrunで働いていたソリューションを得たが、中に失敗しました:Using input checkboxes with a database は、私が質問をより長期的な。

ここでループを実行するコードがあります/ユーザーが襲撃者を選択することができます: 確認/>

私はデータベースにこれを追加すると、私は実際にここに示した3つのクエリを、使用します。

foreach($_POST['member'] as $member) 
{ 
    mysql_query("UPDATE attend set rAttend=(rAttend+1) WHERE UserName='$member'"); 
    mysql_query("INSERT INTO attend set rDate =(CURDATE()) WHERE UserName='$member'"); 
    mysql_query("UPDATE attend set rTotal=(rTotal+1) WHERE UserName='$member'"); 
} 

各ユーザーは合計は、彼らが出席した襲撃の量をオフに基づいて持っている必要がありますので、私はシングル「合計」を使用していることができない理由。私は()(CURDATEで)日付を入力してチェックする]チェックボックスを選択したという事実にもかかわらず

http://i.imgur.com/dwxLf.png 

:今のページは次のように表示しています。

ここで上記を表示する問合せのための完全なコードがあります:

$query="SELECT rTotal FROM rAttend WHERE Username=('$v_member')"; 
    $total=mysql_query($query) or die(mysql_error()); 

    $query="SELECT * FROM rAttend WHERE UserName =('$v_member') order by UserName"; 
    $result=mysql_query($query); 
    $num=mysql_num_rows($result); 
?> 
<center><h3><?php echo ($v_member)?>'s attendence record</h3></center> 
<?php 
$i=0; 
$j=0; 
while ($i < $num) { 

$f1=mysql_result($result,$i,"rDate"); 
$f2=mysql_result($result,$i,"UserName"); 
$f3=mysql_result($result,$i,"rAttend"); 
?> 

<tr> 
<td><?php echo $f1; ?></td> 
<td><?php echo '<a href="'.$f2.'.php">'.$f2.'</a>'; ?></td> 
<?php if ($f3 == 1){ 
echo "<td>yes"; $j++; 
}else{ echo "<td>no" ;} ?></td> 
</tr> 

<?php 
$i++; 
} 
?> 
<center>"Raid Attendence: "<?php echo ($j/$total)*100; ?> %</center><br /> 
</table> 

を(長い警告)誰もこれをデバッグする私を助けることができれば、PHP/MySQLは私のお気に入りではなかったとして、私は、最も感謝されます言語。

ありがとうございました。

編集1:投稿コードを約30%短縮しました。お使いのディスプレイのコードの2行目に

+0

恐ろしいコード。コードを適切に書式設定し、質問に不可欠なものに切り捨てます。ありがとう2トン。 – Shef

+0

@Shef実際には正しくインデントされています。おそらくif/elseを恥ずかしがります。また、データベースの詳細を渡したくないので、私はいくつかの奇妙な点でカット/ペーストしました。あなたは私を責めることができますか? また、私は質問から除外できるものはあまりよく分かりません... – HunderingThooves

+0

あなたの更新ループは、私が投稿したものと同じではありません。 'mysql_query(" UPDATE集合はrTotal =(rTotal + 1)WHERE UserName = '$ member' ");はforeachループの外になければなりません。 – Kyle

答えて

1

これを数時間前に作業した後、HunderThoovesと私は最終的に解決策を得ました。ハハ。

+0

冗談はなく、この男と4時間のように過ごしただけで、1つのクエリだけでこの回答のクレジットを与える必要があります。 – HunderingThooves

+0

ねえカイル、あなたのメールをチェックできますか、私は何かをねじ込みましたか? – HunderingThooves

+0

あなたのメールをチェックすることができます、申し訳ありませんが、私はその直前にリンクしていません。 – HunderingThooves

2

$total=mysql_query($query) or die(mysql_error()); 

それが結果セットにリソースを返し、それはmysql_queryが何をするかだ(あなたが数であるように$totalを期待しているようだが、それは実際には、リソースの)。

$total_query = mysql_query($query) or die(mysql_error()); 
$total_row = mysql_fetch_array($total_query); 
$total = $total_row['rTotal']; 
+0

それは本当に良い点です...私は正直言っても考えていませんでした。 oそれ。これはかなりのデバッグを行う予定です! – HunderingThooves

関連する問題