2013-04-05 2 views
0

이렇게 기본 양식 제출 및 처리, 베어 본 (bare bones)입니다. 양식 스크립트, 프로세서 스크립트 및보기 페이지의 세 가지 스크립트가 있습니다. 여기에 미리 각 출신 :PHP를 사용하여 양식 데이터 처리

형태 :

 <form action="processor.php" method="post"> 
     <h4>Question # 1</h4> 
     <p>What grade are you in?</p> 
     <label class="checkbox"><input type="checkbox" name="grade" value="1"> Freshmen</label> 
     <label class="checkbox"><input type="checkbox" name="grade" value="2"> Sophomore</label> 
     <label class="checkbox"><input type="checkbox" name="grade" value="3"> Junior</label> 
     <label class="checkbox"><input type="checkbox" name="grade" value="4"> Senior</label> 
     <div class="button"> 
     <button class="btn btn-primary" input type="submit" name="submit" href="processor.php">Submit</button> 
     </div> 
     </form> 

프로세서 스크립트 :보기 페이지

<?php 

header("Location: viewpage.html"); 

$grade = $_POST['grade']; 

function Grades() { 
if ($grade =="1") { 
    echo "You're a freshmen"; 
} elseif ($grade == "2") { 
    echo "You're a sophomore"; 
} elseif ($grade == "3") { 
    echo "You're a junior."; 
} elseif ($grade == "4") { 
    echo "You're a senior."; 
} else { 
    echo "Something is wrong."; 
} 

} 

?> 

: 기본적으로

 <h4>Question # 1</h4> 
     <p><?php Grades(); 
     ?> 
     </p> 

, 내가를 얻으려고 사용자가 양식을 작성하고 처리하고 입력을 내뱉습니다. 예를 들어, 그들이 신입생이라고 말하는 양식에서 제출을 클릭하면 "신입생입니다"라고 말하는보기 페이지로 이동합니다. 코딩을한지 얼마되지 않았습니다. 해결책을 찾을 수없는 아주 간단한 문제입니다. 어떤 도움이라도 대단히 감사하겠습니다. 고맙습니다.

마찬가지로보기 페이지가 표시되면 아무 것도 표시되지 않습니다.

+1

그리고 문제는 ...? 처리기가 기본적으로 다른 페이지로 리디렉션하여 처리를 중단하는 것 외에는? 그리고 변수 범위 지정 문제 ... 그리고 일부 불분명 한 "이 스크립트는 어떻게 서로 관련이 있습니까?"문제가 있습니다. –

+0

원래 게시물 이후에 편집했습니다. 백 엔드에서 처리 할 수 ​​있도록 프로세서 페이지를 만들었고 PHP와 HTML을 분리하여 보관할 수 있습니다. 더 효율적인 방법이 있습니까? 내가 가진 문제는 뷰 페이지 스크립트에서 함수가 아무 것도 울리지 않을 때 발생합니다. – buttonitup

+0

이 스크립트들이 어떻게 서로 관련되어 있는지 명확히 할 수 있습니까? 어떻게 내가 서로를 서로 연결 시켰는가? – buttonitup

답변

1

그것은 그렇게 보일 것이다 : 당신이 당신의 viewpage.html의 이름을 변경해야

<?php 

function Grades() { 
$grade = $_POST['grade']; 
if ($grade =="1") { 
    echo "You're a freshmen"; 
} elseif ($grade == "2") { 
    echo "You're a sophomore"; 
} elseif ($grade == "3") { 
    echo "You're a junior."; 
} elseif ($grade == "4") { 
    echo "You're a senior."; 
} else { 
    echo "Something is wrong."; 
} 

} 

include('viewpage.php'); 

?> 

참고 첫 번째 문제는 당신이 당신의 프로세서 스크립트에서 할 첫 번째 것은이 때문이다

+0

고마워, 그랬어. 녹슨 것 같아. 도와 주셔서 감사합니다. – buttonitup

0

다른 기능을 사용하여 다양한 입력에 맞게 리디렉션 할 수 있습니다. 이렇게하려면 별도의 페이지를 만들고 리디렉션 ('페이지 이름')을 사용해야합니다. 내 문제가 해결 될 수도 있다고 생각합니다.

1

방금 ​​수신 한 변수를 보내지 않고 게시물을 받고 다른 페이지로 즉시 리디렉션되는 것처럼 보입니다. 따라서 grade 필드를 GET 매개 변수로 보내야합니다. 그리고 뷰 파일 내에서 메소드/변수를 정의해야합니다.

프로세서 :

<?php 

    // If you're going to redirect, you MUST send along the grade 
    header("Location: viewpage.html?grade=" urlencode($_POST['grade')); 

?> 

보기 :

<?php 

    // In your view you only have access to variables in your immediate request. 
    $grade = $_GET['grade']; 

    function Grades ($grade) { 
    if ($grade =="1") { 
     echo "You're a freshmen"; 
    } elseif ($grade == "2") { 
     echo "You're a sophomore"; 
    } elseif ($grade == "3") { 
     echo "You're a junior."; 
    } elseif ($grade == "4") { 
     echo "You're a senior."; 
    } else { 
     echo "Something is wrong."; 
    } 
    } 
?> 

<h4>Question # 1</h4> 
<p><?php Grades($grade); ?></p> 

그리고 당신은 심각하게 데이터를 저장하기 위해 프로세서를 필요로하지 않는 :

<form action="viewpage.html" method="get"> 
    <h4>Question # 1</h4> 
    <p>What grade are you in?</p> 
    <label class="checkbox"><input type="checkbox" name="grade" value="1"> Freshmen</label> 
    <label class="checkbox"><input type="checkbox" name="grade" value="2"> Sophomore</label> 
    <label class="checkbox"><input type="checkbox" name="grade" value="3"> Junior</label> 
    <label class="checkbox"><input type="checkbox" name="grade" value="4"> Senior</label> 
    <div class="button"> 
    <button class="btn btn-primary" type="submit" name="submit">Submit</button> 
    </div> 
    </form> 
+0

이 방법을 시도했지만 여전히보기 페이지에 출력이 없습니다. 내 처리 스크립트의 뷰를 포함한다고 가정 해 보았습니다. 그게 문제가있는 곳이라고 생각하니? 정교하게 제발 주시겠습니까? – buttonitup

+0

@buttonitup 와우, 나는 리다이렉트를 보지 못했다. 그게 네 문제 야! –

0

당신은으로 POST 변수를 전달해야 매개 변수를 함수에 추가하십시오.

2

viewpage.php하기 헤더 리디렉션을 발행합니다. 그 후에 스크립트는 출력을 생성 할 수 있지만 클라이언트는 결코 출력을 볼 수 없습니다. 두 번째는 프로그램 구조가 모두 꺼져 있다는 것입니다. 이상적으로는 세션을 사용하여 프로세서와 뷰 스크립트간에 '등급'값을 저장하거나 하나씩 결합하는 것이 좋습니다.다른 방법

<?php 
$grade = $_POST['grade']; 

function Grades ($input) { 
if ($input =="1") { 
    echo "You're a freshmen"; 
} elseif ($input == "2") { 
    echo "You're a sophomore"; 
} elseif ($input == "3") { 
    echo "You're a junior."; 
} elseif ($input == "4") { 
    echo "You're a senior."; 
} else { 
    echo "Something is wrong."; 
} 

?><html> 
<head></head> 
<body> 
<h4>Question # 1</h4> 
<p><?php Grades($grade);?></p> 
</body> 
</html> 

또는 : 당신은 또한 염두에 두어야 할 필요가

<?php 
session_start(); 
$_SESSION['grade'] = $_POST['grade']; 
header('Location: viewpage.php'); 

<?php 
session_start(); 
$grade = $_SESSION['grade']; 

function Grades ($input) { 
if ($input =="1") { 
    echo "You're a freshmen"; 
} elseif ($input == "2") { 
    echo "You're a sophomore"; 
} elseif ($input == "3") { 
    echo "You're a junior."; 
} elseif ($input == "4") { 
    echo "You're a senior."; 
} else { 
    echo "Something is wrong."; 
} 

?><html> 
<head></head> 
<body> 
<h4>Question # 1</h4> 
<p><?php Grades($grade);?></p> 
</body> 
</html> 

다른에 당신이하지 않는 include() 하나의 스크립트는 각 스크립트는 다른 사람에게 완전히 잊기 때문이다 . 그들은 세션 변수를 제외하고는 어떤 변수 나 함수가 정의되었는지 알지 못합니다.

+0

OR : 코드는 어디에 있습니까? – buttonitup

+0

귀하는이 코드 또는 코드를 말하였습니다. – buttonitup

+0

@buttonitup 첫 번째 블록은 '프로세서'와 '보기'스크립트를 단일 스크립트로 대체합니다. 'Or :'아래의 다른 두 블록은 '프로세서'와 '보기'스크립트를 각각 대체합니다. – Sammitch

관련 문제