2017-03-20 1 views
-2

나는 PHP에 익숙하지 않다. 이것은 나의 첫 번째 글이며, 코딩에 대한 나의 사과와 코딩의 불편 함을 지적한다. 정확하게 코드를 게시하는 방법을 잘 모르겠습니다. 하지만 제 질문은 상당히 간단하다고 생각합니다.제출시 유효성 검사가 실패한 후 PHP에서 빈 html 양식을 다시 표시하는 방법. 헤더 리디렉션을 사용하지 않고?

내가 PHP는 OOP를 배우고 내가 다른 다양한 멤버 함수 단순히 에코 html 태그 및 디스플레이 객체 클래스에서 생성 displayContactForm()method='POST'를 사용하여 객체 함수에서 호출 PHP에서 HTML 양식을 다시 표시하는 것을 시도하고있다

html 형식의 간단한`contact.php 페이지.

사용자가 제출 한 조회와 검증에 실패한 후 빈 값으로 양식을 다시 표시하면 양식이 본질적으로 삭제되고 사용자가 정보를 다시 입력해야합니다. 하나의 if/else 문을 써서 $_POST이 설정되어 있는지 확인하고 필드가 !empty인지 확인합니다. (else) "cleansed form (or) clear form again somehow"? 아래 코드에 내 코드를 게시했습니다. if-else 문은 31-38 줄입니다. 헤더 재배치를 사용할 수 없습니다. 이 프로젝트에서 사용하기로되어있는 else 문에 대한 제안 된 줄은 $ this-> displayContactForm ($ this-> form)입니다. 폼을 다시 표시합니다. 그러나 그것은 페이지에있는 원래 양식 아래에 양식을 복제하고 두 양식으로 끝나나요? 나는 혼란 스럽다 ... 어떤 도움을 주셔서 감사합니다.

<?php 
require('./PageLib.php'); 
require('./ContactFormLib.php'); 

//created a class called ContactPage that extends class Page 
class ContactPage extends Page{ 
    public $form; 
    public function __construct($arg=NULL) { 
     $this->form = new ContactForm(); 
    } 

    //OVERRIDDEN Page::displayPage() 
    public function displayPage(){ 
     echo "<html>\n<head>\n"; 
     //HEAD///////////////// 

     $this->displayTitle(); 
     $this->displayStyles(); 
     echo "</head>\n<body>\n"; 

     //HEADER/////////////// 

     $this->displayHeader(); 
     $this->displayNav($this->navLinks); 

     //CONTENT////////////// 

     $this->displayContactForm($this->form); 
     echo $this->content; 
     $this->displayFooter(); 

     if(isset($_POST['name'], $_POST['phone'], $_POST['email']) && !empty($_POST['name']) && !empty($_POST['phone']) &&  !empty($_POST['email'])){ 
      echo " Checked form values. Now echoing content to page."; 
     } 
     else { 
      $this->displayContactForm($this->form);   
     }  
     echo "\n</body>\n</html>\n"; 

     public function displayContactForm($f) { 
      $f->displayForm(); 
     } 

    } 
    $contactpage = new ContactPage(); 
    $contactpage->pageTitle = "Contact Page"; 
    $contactpage->headerTitle = "Contact - OOP php Page Builder"; 
    $contactpage->content="<h3>Contact Page Content</h3>\n"; 
    $contactpage->displayPage(); 
?> 

답변

0

PHP로는 불가능합니다. 이 작업을 수행하려면 PHP와 함께 Ajax를 사용해야한다. PHP는 내용을 "다시 표시"하기 위해 페이지를 새로 고쳐야합니다.

관련 문제