PHP와 CodeIgniter에서 다중 단계/페이지 양식을 작성하려고합니다. 귀하가 저를 도울 수 있는지 궁금합니다.PHP와 CodeIgniter의 다중 단계/페이지 양식
뒤로 버튼을 사용하여 이전 단계로 돌아 왔을 때 다시 삽입하지 않고 업데이트하는 CI의 다중 단계 양식은 어떻게 만들 수 있습니까? 뒤로 버튼 POST 양식을 다시 보내지 않은 양식을 어떻게 가질 수 있습니까?
편집 :
덕분에 가능하면 JS없이!
PHP와 CodeIgniter에서 다중 단계/페이지 양식을 작성하려고합니다. 귀하가 저를 도울 수 있는지 궁금합니다.PHP와 CodeIgniter의 다중 단계/페이지 양식
뒤로 버튼을 사용하여 이전 단계로 돌아 왔을 때 다시 삽입하지 않고 업데이트하는 CI의 다중 단계 양식은 어떻게 만들 수 있습니까? 뒤로 버튼 POST 양식을 다시 보내지 않은 양식을 어떻게 가질 수 있습니까?
편집 :
덕분에 가능하면 JS없이!
마법사의 모든 단계에서 사용하는 고유 한 ID를 만듭니다. 양식을 처음 저장할 때 해당 ID를 데이터베이스에 저장하십시오. input type="hidden"
을 사용하여이 ID를 다음 단계로 전달합니다.
단계를 저장할 때 먼저 ID를 일치시키고 데이터베이스에서 발견되면 삽입 대신 업데이트를 수행하십시오.
는 앞서 이와 유사하지만 uri 세그먼트를 사용하여 진행했습니다. 덕분에 – RS7
ID를 데이터베이스에 추가 할 필요가 없습니다. 세션에 추가하기 만하면됩니다 (설정에 따라 DB에 자동으로 추가 될 수 있습니다). 예 : '$ this-> session-> set_userdata ('wizard_id', rand()); ' –
하는 사용자에게 게시물 재발송에 대해 경고하고 자바 스크립트에서 다른 단계가 아닌 여러 개의 적절한 페이지를 원한다면 URL에 GET 매개 변수로 답을 넣을 수 있습니다. 첫 번째 양식 제출 후 form2가 표시됩니다. PHP? URL에 .. 당신은 폼 2에 숨겨진 변수로 그 해답을 추가 할 수 있습니다.
매우 우아한 해결책은 아닙니다. javascript를 사용하는 것이 좋습니다. 양식 제출을위한 사용자 지정 처리기를 추가하고 ajax를 통해 양식 내용을 제출 한 다음 ajax 완료시 다음 양식을로드하십시오.
또한 다른 사람이 응답 한 것처럼 서버 측에서는 데이터베이스의 제출 데이터를 가져 오거나 업데이트하는 고유 한 ID가 필요합니다.
나는 모든 단계가 완료 될 때까지 데이터베이스 업데이트를 기다리는 접근 방식을 좋아합니다. 중간 단계의 모든 데이터를 세션에 저장할 수 있습니다. 한 세션에서 사용중인 모델 객체를 저장할 수도 있고 모든 단계를 완료 한 후에 데이터베이스 삽입 작업을 수행 할 수 있습니다.
다음은 다른 질문에서 내 대답입니다. 데이터를 잃을 기회없이 전방/후방 능력을 제공하고 페이지 간을 즉시 이동하며 코드 작성이 쉽고 세션이 필요 없으며 프레임 워크와 무관합니다 (어떤 상황에서도 사용할 수 있음) :
제품을 개발했습니다 심리학에 근거한 테스트에 250 개의 질문을하는 심리학 시장. 완전히 압도적이지 않은 테스트를하기 위해, 순차적 ID가 추가 된 div 태그 (예 : div1, div2, div3)를 통해 루프에서 출력하는 동안 양식을 25 개의 질문 세그먼트로 구분합니다. 각 div는 다음과 같이 표시되도록 설정됩니다. 첫 번째 만 빼고.
나는 그 (DIV 1의 경우, 돌아 가기 버튼이 반대를 수행 $(#div2).show()
등 할 것 예.
중요한 부분이 형성하는 일 현재 사업부입니다 + 전환 버튼을 사용자에게 제공 모든 div를 다루고 있습니다. 제출 버튼을 사용하여 끝에있는 앞으로/뒤로 단추를 바꿔주는 것만으로도 가능합니다.
Voila! 예, 기술이 뛰어납니다. 앞으로 또는 뒤로 이동하십시오.
따라서 잘린 예 :
,451,515,<form>
<div id="div1">
First 25 Questions
<input type="button">shows next div</input>
</div>
<div id="div2" style="display:none">
Second 25 Questions
<input type="submit">Submit Form</input>
</div>
</form>
나는이 논리를 좋아한다. 어떻게 작동하는지 몇 가지 데모를 제공해 주시겠습니까 ?? –
나는 양식의 각 필드에 대한 변수로 내 마법사의 데이터를 저장할 수있는 모델을 가지고 :
class Class_signup_data extends CI_Model {
const table_name="signups_in_progress";
public $market_segment; // there is a field named 'market_segment' in the wizard view
... ...
나는 전체를 처리하는 하나의 컨트롤러가 과정의 SESSION_ID에 대한 매개 변수와 우리가있는 프로세스의 단계로이 컨트롤러에서
class Signup extends CI_Controller {
public function in_progress($session_id=NULL,$stage=1) {
$this->index($session_id,$stage);
}
public function index($session_id=NULL,$stage=1) {
if ($session_id===NULL) $session_id=$this->session->userdata('session_id');
...
...
나는 우리가 어느 단계에 대한 스위치가 있습니다 - 그것은 리터 먼저 '이전'버튼 ooks :
switch ($stage) {
case 2:
if ($this->input->post('prev')) { // if they click Previuous, the validations DON'T need to be met:
$signup_data->save_to_db(array_merge(array('ip'=>$_SERVER['REMOTE_ADDR'],'session_id'=>$session_id,'signup_stage' => '1',
'signup_complete' =>'0'),$this->input->post()),$this->db,$session_id);
$this->load->helper('url');
redirect("/signup/in_progress/".$session_id."/1");
그리고 나중에 내가 클릭 않았거나 단지 호출되는 경우 형태와 '다음'과정을 표시하는 CI의 검증을 사용하는 스위치에/가입/IN_PROGRESS/각 뷰 (예를 들어 'signupStage2.php') 나는 이전 및 다음 버튼이 하단에서
$this->form_validation->set_rules("your rules");
if ($this->form_validation->run() == FALSE) {
$this->load->view('signupStage2',array('signup_data'=>$signup_data));
} else {
$signup_data->save(array_merge(array('ip'=>$_SERVER['REMOTE_ADDR'],'session_id'=>$session_id,'signup_stage' => '3',
'signup_complete' =>'0'),$this->input->post()),$this->db,$session_id);
$this->load->helper('url');
redirect("/signup/in_progress/".$session_id."/3");
};
: 세션/2
<span class="align-left"><p><input type="submit" name="prev" class="big-button"
value="<- Prev" /><input type="submit" name="next" class="big-button"
value="Next ->" /></p></span>
그때 제출 단계를 통해 갈 JS을 사용
모든 것을 한 번에 ... – prodigitalson
@prodigitalson 죄송합니다, 내 질문에 이것을 언급하는 것을 잊어 버렸지 만 JS 무료로 제공하고 싶습니다. 감사합니다 – RS7