2011-08-09 4 views
0

경고 :이 질문은 조금 길어질 수도 있습니다. 미리 사과드립니다.데이터베이스에 입력 체크 박스 사용하기 - 2 부

그래서 내 마지막 질문에 여기에 본 : "어떻게 여러 사용자에게 체크 박스와 공격대 출석 및 데이터베이스 루프를 관리합니까"하고 나는 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'"); 
} 

각 사용자가 총들이 참석 공습의 양을 기반으로 할 수 있어야하기 때문에 나는 하나의 '총'을 사용하지 수 이유. 현재 페이지는 다음과 같이 표시됩니다 :

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

을 내가 (CURDATE()로) 날짜를 입력하고 점검 할 수있는 체크 박스를 선택했다는 사실에도 불구하고.

여기에 위의 내용을 표시하는 쿼리의 전체 코드입니다 : 그 누구도 날이를 디버그하는 데 도움 수 있다면 PHP/MySQL은 내가 가장 좋아하는 적이로

$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> 

, 내가 가장 감사 할 것 (긴 경고) 언어.

감사합니다.

편집 1 : 게시 된 코드가 약 30 % 단축되었습니다.

+0

끔찍한 코드. 코드를 올바르게 형식화하고 질문에 필수적인 부분으로 잘라냅니다. 고마워. 2 톤. – Shef

+0

@Shef 실제로는 들여 쓰기가 적절합니다. 아마도 if/else를 부끄럽게 생각할 것입니다. 또한 데이터베이스 세부 정보를 제공하고 싶지 않았기 때문에 약간의 이상한 점을 잘라내거나 붙여 넣었습니다. 나를 비난 할 수 있습니까? 또한 질문에서 제외 할 수있는 내용이 너무 많습니다. – HunderingThooves

+0

업데이트 루프가 게시 한 루프와 다릅니다. mysql_query ("UPDATE 참석 집합 rTotal = (rTotal + 1) WHERE UserName = '$ member'");는 foreach 루프 외부에 있어야합니다. – Kyle

답변

1

지난 몇 시간 동안이 작업을 마친 후 HunderThooves와 나는 결국 해결책을 얻었습니다. 하하.

+0

장난이 아니며,이 사람과 4 시간을 같이 보내고, 한 가지 질문만으로도이 답변에 대한 크레딧을 제공해야합니다. – HunderingThooves

+0

안녕 카일, 너 메일 좀 확인해 줄래? 뭔가 망쳐 놨니?! – HunderingThooves

+0

메일을 확인할 수 있습니까? 죄송합니다. 지난 번에 링크하지 않았습니다. – HunderingThooves

2
디스플레이 코드의 두 번째 줄에

: 당신이 숫자로 $total을 기다리고있어 보인다

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

하지만 실제로 자원이다 (즉이 결과 집합에 리소스를 반환, mysql_query가하는 일입니다).

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

그건 정말 좋은 지적입니다 ... 솔직히 생각조차하지 않았습니다. 영형 그거. 이것은 꽤 많은 디버깅을 할 것입니다! – HunderingThooves

관련 문제