2013-06-17 4 views
0

form.php 파일에 이와 같은 검색 양식이 있습니다. 위대한 작품, 내가 직면하고있는 문제는 내가 클래스/메소드 (함수)를 사용한다는 것입니다. 예를 들어 로고와 마누바를 호출하는 메소드가 있습니다. 위처럼리디렉션하지 않고 페이지 새로 고침

 //$this->output is just a method that echos, that's all it does 

     function header() 
     { 
      $this->output('<DIV CLASS="header">'); 
      $this->logo(); 
      include('form.php'); 
      $this->links(); 
      $this->header_clear(); 
      $this->output('</DIV>'); 
     }   

는 형태로 완벽하게 보여줍니다,하지만 난 범주를 선택할 때 그것은 form.php 나 소요되며,이 모든 유적.

나는 페이지가 상쾌하지, 문제는 내가 카테고리 값을 가져올 수 없습니다 자바 스크립트없이 여기

 onChange="javascript:this.form.action='form.php'; 
     this.form.submit() 

알고, 그래서 $ _POST [ '고양이'(form.php는 형태이다) ] 비었다.

다른 페이지로 이동하지 않고 페이지를 새로 고치는 더 좋은 방법은 무엇입니까?

나는이 모든 것이 혼란 스럽다는 것을 안다. 당신이 형성 가고 싶어하지 않는 경우, 그냥 다른 곳으로 갈 수 있도록

 <form enctype="multipart/form-data" name="form" id="form" action="form.php"  
     method="get"> 
    <SELECT name="cat" onChange="javascript:this.form.action='form.php'; 
     this.form.submit()"> 
    <option value="" >Categories</option> 

    <?php 

    $z = "0" ; 

    //Select categories form database 

    $category =db_select_categories($z); 
    if(is_array($category)) 
    { 
    foreach($category as $rowc) 
    { 
    $id_cat = htmlentities($rowc['id_cat'], ENT_QUOTES); 
    $cat_name = htmlentities($rowc['cat_name'], ENT_QUOTES, 'utf-8'); 
    $cat_name = stripslashes($cat_name); 
    echo "<option style=\"background-color:#FFCC99\" disabled>".$cat_name." 
      </option>"; 

    $categories = db_select_categories($id_cat); 
    if(is_array($categories)) 
    { 
    foreach($categories as $row) 
     { 
    $id = htmlentities($row['id_cat'], ENT_QUOTES); 
    $name = htmlentities($row['cat_name'], ENT_QUOTES, 'utf-8'); 
    $name = stripslashes($name);   
    if ($cat == $id) 
    { 
    echo "<option value='".$id."'selected> ".$name."</option>"; 
    } 
    else 
    { 
    echo "<option value=".$id."> ".$name."</option>"; 
    } 
    } 
    } 
    } 
    } 
    echo "</SELECT>"; 

    ?> 


    <div> 
    <?php 
    if(!empty($cat))  
    { 
    //Outputs a populated select option depending on category 
    display_search_options($cat); 
    } 
    ?> 
    </div> 
+1

당신의 탭 이동을 수정하십시오. –

+0

비동기 양식 제출을 수행하려면 AJAX를 사용해야합니다. 그런 다음 해당 호출의 응답을 처리합니다. 이것은 전체 페이지를 새로 고치지 않는 유일한 방법입니다. – evasilchenko

+0

나는 AJAX를 사용하도록 제안 받았지만 이전에는 AJAX를 사용하지 않았다. 나를 가리킬 수있는 링크가 있습니까? –

답변

0

...

onChange="javascript:this.form.action='index.php'; 
     this.form.submit() 
+0

그것에 대해 생각했지만 동일한 헤더를 가진 파일이 더 적습니다. 그럼, 작동하지 않습니다 –

+0

변수를 사용하여 현재 위치를 알 수 있습니다 ... 어쩌면 $ _SERVER [ 'REQUEST_URI'] – Salketer

관련 문제