2011-02-03 7 views
0

구현하려고 시도 : "연도"필드에 입력 한 값이 숫자 (NAN) 자바 스크립트 함수가 아닌 경우 - 작동하지 않습니다. 구문에 오류가 있습니까?입력 한 값의 비교

감사합니다.

<?php 

    echo "<h1>Testing your Trivia</h1>"; 
    $ages['Casablanca'] = "1943"; 
    $ages['Around The World in 80 Days'] = "1956"; 
    $ages['Patton'] = "1970"; 
    $ages['Annie Hall'] = "1977"; 
    $ages['Chariots of Fire'] = "1981"; 
    $ages['Dances With Wolves'] = "1990"; 
    $ages['Crash'] = "2005"; 
    $ages['The Departed'] = "2006"; 

    $rand_keys = array_rand($ages, 1); 

?> 
<script language="JavaScript" type="text/javascript"> 

function validate (form) 
{ 
    var valid = "1234567890"; 
    if (form.year.value == "" || isNaN(valid)) { 
    alert("Please enter a year."); 
    return false; 
    } 
    return true; 
} 
</script> 

<form method='post' name="inputyear" onsubmit="return validate(this);"> 
Give the year below won academy award<br> 
<Strong>Movie:</strong> <input type='text' name='movie' value='<?= $rand_keys ?>'  readonly='readonly' /><br> 
<Strong>Year it Won the Oscar:</Strong> <input type='text' name='year' size="30" /><br/> 
<input type='submit' name='submit' /> 
</form> 

<?php 

    echo '<pre>'; 
    foreach($ages as $movie => $year){ 
     print_r("Year: $year, Title: $movie <br />"); 
    } 
    echo '</pre>'; 

    if($_POST['submit']) { 
     $movie = $_POST['movie']; 
     $year = $_POST['year']; 
     $realyear = $ages[$movie]; 

     echo "<h2>Answer for: $movie</h2>"; 
     if(array_key_exists($movie, $ages)) { 
      echo "Your answer: $year<br/>"; 
     } 
     echo "Correct Answer: $realyear<br/>"; 
     if ($realyear == $year) { 
      echo "<strong style='color:green;'>WELL DONE</strong><br/>"; 
     } else { 
     // wrong 
      echo "<strong style='color:red;'>Incorrect.</strong><br/>"; 
     } 
    }  

?> 
+0

사용자에게 몇 가지 영화 이름을 표시하고 그 영화가 몇 년 동안 수여 되었으면 좋겠다고 생각 했습니까? – Chvanikoff

답변

0

위 코드에서 페이지가로드 될 때마다 모든 영화와 연도가 포함 된 결과물로 끝납니다. 이것이 퀴즈라고 생각되기 때문에, 나는 그것이 바람직한 결과가 아닐 것이라고 생각합니다. 내가 좋아하는 뭔가를 시도 제안 : 존재하는 경우 페이지가로드 출력을 제공하고, 다시 질문을 할 수있을 때

<?php 
    echo "<h1>Testing your Trivia</h1>"; 
    $ages['Casablanca'] = "1943"; 
    $ages['Around The World in 80 Days'] = "1956"; 
    $ages['Patton'] = "1970"; 
    $ages['Annie Hall'] = "1977"; 
    $ages['Chariots of Fire'] = "1981"; 
    $ages['Dances With Wolves'] = "1990"; 
    $ages['Crash'] = "2005"; 
    $ages['The Departed'] = "2006"; 

    if(isset($_GET['year'])){ 
     if($ages[$_GET['movieName']]==$_GET['year']){ 
      echo "Correct! {$_GET['movieName']} was made in {$_GET['year']}"; 
     }else{ 
      echo "Sorry! Your answer of {$_GET['year']} is wrong.<br/>"; 
      echo $_GET['movieName'] . " was made in {$ages[$_GET['movieName']]}"; 
      } 
    } 

    $rand_keys = array_rand($ages, 1); 

    echo "Give the year below won academy award<br>"; 
    echo "<Strong>Movie: </strong>$rand_keys <input type='hidden' name='movieName' value='$rand_keys'/><br>"; 
    echo "<Strong>Year it Won the Oscar: </Strong> <form method='get'><input type='text' name='year' /></form><input type='submit' /> "; 

이러한 방법을, 결과는, 확인 얻고있다.

위의 코드에서 'key'값을 얻으려고합니다. 실제로는 존재하지 않습니다 (이 코드 세그먼트에서). $ _GET 및 $ _POST를 사용하면 이전로드의 양식 필드를 참조하고 해당 필드를 해당 이름으로 참조 할 수 있습니다.

마지막으로 영화 이름이 읽기 전용이므로 사용자를 혼란스럽게하는 텍스트 상자를 만드는 대신 숨겨진 양식 요소를 사용하여 이름을 제출하는 방법을 보여주기 위해 변경했습니다.

+0

훌륭합니다, DMC에 감사드립니다. 간단히 'if ($ age [$ _GET ['movieName ']] == $ _GET ['year ']' – Jshee

+0

을 확실히 설명 할 수 있다면. $ _GET [ 'movieName']은 moviename을 폼에서 호출합니다. $ age []에 넣으면 배열에있는 올바른 요소를 검색하기 위해 movieName 값을 여러 연령대로 전달합니다. 그런 다음 사람이 입력 한 연도와 비교하여 배열의 값을 테스트합니다. – dmcnelis

+0

Dmc - 다음과 같은 오류가 발생합니다. 구문 분석 오류 : 구문 오류, 예기치 않은 $ end on line 26 – Jshee

0

질문의 표현을 이해할 수 없지만 코드를 기반으로 몇 가지 오해가있을 수 있습니다.

$_GET은 배열입니다. $_GET가 정의 된 경우 :

$_GET = array('movie_title' => 'Patton', 'year' => '1970'); 

그런 다음 $_GET['movie_title']'Patton'을 의미하고 $_GET['year']'1970'을 의미합니다.

$ _GET의 키는 입력 필드의 이름으로 주어 지므로 영화 제목 입력에 이름을 지정해야합니다. 사용자가 당신이 오스카 수상 해 알고 영화를 선택한 경우 다음

이 질문에 당신이 시험 것 : 그들은 응답 권리를 가지고 있다면

if (array_key_exists($_GET['movie_title'], $ages)) { 
    ... 
} 

보고는 것 테스트 :

if ($ages[$_GET['movie_title']] == $_GET['year']) { 
    ... 
} 

이 부분이 의미가 있기를 바랍니다.

0
<?php 

    echo "<h1>Testing your Trivia</h1>"; 
    $ages['Casablanca'] = "1943"; 
    $ages['Around The World in 80 Days'] = "1956"; 
    $ages['Patton'] = "1970"; 
    $ages['Annie Hall'] = "1977"; 
    $ages['Chariots of Fire'] = "1981"; 
    $ages['Dances With Wolves'] = "1990"; 
    $ages['Crash'] = "2005"; 
    $ages['The Departed'] = "2006"; 

    $rand_keys = array_rand($ages, 1); 

?> 

<form method='post'> 
Give the year below won academy award<br> 
<Strong>Movie:</strong> <input type='text' name='movie' value='<?= $rand_keys ?>'  readonly='readonly' /><br> 
<Strong>Year it Won the Oscar:</Strong> <input type='text' name='year' /><br/> 
<input type='submit' name='submit' /> 
</form> 

<? 

    echo '<pre>'; 
    foreach($ages as $movie => $year){ 
     print_r("Year: $year, Title: $movie <br />"); 
    } 
    echo '</pre>'; 

    if($_POST['submit']) { 
     $movie = $_POST['movie']; 
     $year = $_POST['year']; 
     $realyear = $ages[$movie]; 

     echo "<h2>Answer for: $movie</h2>"; 
     if(array_key_exists($movie, $ages)) { 
      echo "Your answer: $year<br/>"; 
     } 
     echo "Correct Answer: $realyear<br/>"; 
     if ($realyear == $year) { 
      echo "<strong>WELL DONE</strong><br/>"; 
     } else { 
      echo "Incorrect.<br/>"; 
     } 
    }  

?> 
+0

Gutterball - 고마워. :). 이 PHP 물건은 너무 재미 있습니다!Woot – Jshee

+0

"숫자가 아님"및 빈 입력 : "코드" Jshee

+0

@woopie 귀하의 스크립트가 올바르게 실행되지만 이것이 원하는 것으로 생각됩니다. '''

에 대해 테스트했습니다.
' –

관련 문제