2012-07-16 2 views
0

제출할 때마다 폴링 선택을 업데이트하고 싶습니다. 하지만 작동하지 않는 것 같습니다. 누구나 숨겨진 필드로 상태를 유지하는 것에 대해 조언 해 줄 수 있습니까? 및 설문 결과 테이블을 표시하려면 현재 페이지의 모든 내용을 지우는 방법은 무엇입니까?PHP : 숨겨진 파일로 상태를 유지하는 것에 대해 혼란 스럽습니다.

<?php 

if ($_POST['choice']==0) 
    $a_count = $_POST['a_count']+1; 
if ($_POST['choice']==1) 
    $b_count = $_POST['b_count']+1; 
if ($_POST['choice']==2) 
    $c_count = $_POST['c_count']+1; 
if ($_POST['choice']==3) 
    $d_count = $_POST['d_count']+1; 
?> 
<html> 
<head> 
</head> 
<body> 
    <form action="index.php" method="POST"> 
    <table align="center"> 
     <tr><td>Please select</td></tr> 
     <tr><td><input type="radio" name="choice" value="0">aaaa</td></tr> 
     <input type="hidden" name="a_count" value="<?php print $a_count ?>"> 
     <tr><td><input type="radio" name="choice" value="1">bbbb</td></tr> 
     <input type="hidden" name="b_count" value="<?php print $b_count ?>"> 
     <tr><td><input type="radio" name="choice" value="2">cccc</td></tr> 
     <input type="hidden" name="c_count" value="<?php print $c_count ?>"> 
     <tr><td><input type="radio" name="choice" value="3">dddd</td></tr> 
     <input type="hidden" name="d_count" value="<?php print $d_count ?>"> 
     <tr><td><input type="submit" value="submit"></td></tr> 
    </table> 
    <table align="center" border="1" cellspacing="0"> 
     <tr align="center"><th>Member Name</th><th>Vote</th></tr> 
     <tr><td>aaaa</td><td><?php echo"$a_count";?></td></tr> 
     <tr><td>bbbb</td><td><?php echo"$b_count";?></td></tr> 
     <tr><td>cccc</td><td><?php echo"$c_count";?></td></tr> 
     <tr><td>dddd</td><td><?php echo"$d_count";?></td></tr> 
    </table> 
    </form> 
</body> 
</html> 
+1

투표 결과를 데이터베이스에 저장해야합니다. PHP 변수는 모든 서버 요청 후에 지워집니다. – smilledge

+1

해결책이 아니라면 실제로 무엇을 요구하고 있습니까? 상태를 유지하는 데는 여러 가지 방법이 있습니다. – ametren

답변

0

그들의 활성 세션 동안 사용자의 선택/상태를 유지해야처럼 당신이 (만큼 그들은 해당 페이지를 떠나지 않는 한) 외모를 제출 코드는 -하지만 즉시 그것을두고으로 잃었다. 또한 "투표"는 다른 사용자와 공유 할 수 없습니다.

사용자의 상태를 유지하려면 PHP 세션을 사용하거나 결과를 파일/데이터베이스에 저장하십시오.

다른 사용자와 사용자의 투표를 공유하려면 파일 또는 데이터베이스 사용을 탐색하십시오.

양식없이 결과 테이블을 표시하려면 사용자가 "투표를 한 후에"두 가지 중 하나를 수행 할 수 있습니다. 양식 주위에 if 문을 넣어서 이미 답변이 선택되었는지 확인할 수 있습니다. 그렇다면 양식을 표시하지 마십시오. 다른 방법은 결과표를 양식이없는 별도의 페이지 (별도의 페이지에 POST 양식을 갖거나 양식이있는 페이지를 별도의 페이지로 리디렉션)로 만드는 것입니다.

+0

답변을 주신 Newfurnitury. 제가 제출할 때마다 투표 점수를 업데이트하려했지만, 제가 3 번을 3 번 선택했을 때. 점수는 3을 표시하고, 또 다른 선택을 제출 한 선택 3에 대한 점수는 사라졌습니다. 이 문제를 해결하는 방법을 설명해 주시겠습니까? – strc

+0

그렇게하기 쉽습니다. PHP에서는 POST 값을 기반으로'$ a_count','$ b_count' 등의 변수를 미리 정의한 다음 증가시켜야합니다. 예를 들어'$ a_count = $ _POST [ 'a_count'] + (($ _POST [ 'choice'] == 0)? 1 : 0)'. 이것은'$ a_count'를 현재 값으로 설정하고, "choice"가 A라면 1 씩 증가시킵니다. 각 count 변수에도이 작업을 수행 할 수 있습니다. – newfurniturey

0

왜 값을 저장하기 위해 데이터베이스를 사용하지 않습니까 ?? 그리고 폼을 제출할 때 렌더링되지 않도록 입력에 사용하는 테이블을 if 조건에 넣을 수 있습니다. 희망이 도움이!

관련 문제