2017-01-29 8 views
5

저는 PHP와 부트 스트랩 만 사용하여 CRUD 작업을하고 있습니다. 현재 업데이트가 안되기 때문에 $_GET['updateid']을 모달로 보내는 것 같습니다.모달과 PHP를 사용하여 업데이트

이 내 HREF의의 가 작동href을 삭제하지만 갱신 아니다.

<a href="#myModal?updateid=<?php echo $row['sched_id'];?>" data-toggle="modal" 
       class="btn btn-warning" data-target="#myModal">Update</a> 
<a href="home.php?deleteid=<?php echo $row['sched_id'];?>" class="btn btn-danger">Delete</a> 

이 PHP는 href에서 updateid를해야하고 쿼리를 모든 데이터를 받아 실행이 내 기능 업데이트가

if(isset($_GET['updateid'])){ 
    $mupdate_id = $_GET['updateid']; 

    if(isset($_POST['modal-submit'])){ 

    $msubj = $_POST['modalsubject']; 
    $msect = $_POST['modalsection']; 
    $mday = implode("", $_POST['modalday']); 
    $mstrTime = $_POST['modalstarttime']; 
    $mendTime = $_POST['modalendtime']; 

    $auth_user->updateSchedule($msubj,$msect,$mday,$mstrTime,$mendTime,$mupdate_id); 
    $schedRow = $auth_user->readSchedule(); 
    } 
} 

updateStud() 함수에 전달

public function updateSchedule($msubj,$msect,$mday,$mstrTime,$mendTime,$mupdate_id){ 
     $stmt = $this->conn->prepare("UPDATE `schedule` 
      SET `subject_db` = :msubj, 
      `section_db` = :msect, 
      `sched_day` = :mday, 
      `start_time` = :mstrTime, 
      `end_time` = :mendTime 
      WHERE `sched_id` = :mupdate_id "); 

     $stmt->bindparam(":msubj", $msubj); 
     $stmt->bindparam(":msect", $msect); 
     $stmt->bindparam(":mday", $mday); 
     $stmt->bindparam(":mstrTime", $mstrTime); 
     $stmt->bindparam(":mendTime", $mendTime); 
     $stmt->bindparam(":mupdate_id", $mupdate_id); 

     $stmt->execute(); 

     return $stmt; 
    } 
+0

Javascript를 피하는 이유가 있습니까? 불행히도 나는 당신이하려고하는 것이 가능하다고 생각하지 않습니다. 삭제 링크가 서버 요청 인 반면, 모달 링크는 페이지가 실제로 제출되지 않기 때문에 "if (isset ($ _ GET [ 'updateid']) {{"}를 호출하지 않는 클라이언트 요청입니다. – tjfo

+2

나는 그곳에서하려고하는 것이 잘못되었다고 생각합니다. 'updateid' URL'GET' 매개 변수를 모달 앵커 트리거 링크에 설정하려고합니다. 그것이 작동하는 방식이 아닙니다. 'updateid'를'GET' 매개 변수로 전달하려면, 폼 액션 속성의 끝에 추가하십시오. 질문을 편집하고 전체 HTML 코드로 업데이트 할 수 있습니까? –

답변

0

모달을 사용하여 데이터를 업데이트하고 모달 내 응답을 표시하기 만하면을 추가 할 필요가 없습니다.링크를 클릭하십시오. 당신은

"#myModal?updateid=<?php echo $row['sched_id'];?>" 

그것이 도움이 될 것입니다 희망 대신이

"?updateid=<?php echo $row['sched_id'];?>" 

처럼 사용해야합니다.

+1

여전히 작동하지 않습니다. –

+0

삭제와 마찬가지로 업데이트 URL에 home.php를 포함 할 필요가 없습니까? –

+0

이미 시도한 바 있습니다. –

0

페이지 전체에서 다른 활성화 링크가있는 동일한 모달을 사용하는 경우 javascript/jquery를 통해 채워야합니다. boostrap.js 함수를 직접 변경하지 않는 한 모달은 대상 문자열의 매개 변수를 허용하지 않습니다 (공급 업체 js 파일을 사용하는 것은 권장하지 않습니다). 어떤 이유에서든 자신의 스크립트를 페이지에 추가 할 수없는 경우 인라인 onclick 메서드를 사용할 수 있습니다.

JQuery와는 :

<a href="#myModal" data-toggle="modal" class="btn btn-warning" data-target="#myModal" onclick="$('#updateid').val('<?= $row['sched_id'] =?>')">Update</a>

당신은 당신의 형태 다음은 GET 방식으로 양식을 제출 매개 변수를 전달합니다 <input type='hidden' id='updateid' name='updateid'/>에 숨겨진 입력을해야합니다. 당신이 모달 <input type='hidden' name='updateid' value='<?= $row['sched_id']?>'/>

1

에 필드를 에코 할 수 모달의 유일한 링크로 이것을 사용하는 경우

당신은 당신의 모달이 스크립트를 사용해야합니다.

<a data-toggle="modal" data-target="#modal-target" data-id="<?= $idyouwant ?>">Change</a> 

당신은 당신이 당신뿐만 아니라 당신이 원하는대로 스크립트를 구성 할 수 있습니다이 자바 스크립트

$('#modal-target').on('show.bs.modal', function(ev){ 
    var modal = $(this); 
    var link = $(ev.relatedTarget); 
    var id = link.data('id'); 
    modal.find('.modal-body').load('yourserver/?param=' + id); // will load modal body that you want 
} 

처럼 아약스/JQuery와 통해 원하는 HTML로 모달을 채울 수 있습니다.

-1

@tjfo는 (는) 원래 질문에 대한 의견에서 관찰을했으며 정확합니다. 브라우저는 "#Modal? ..."링크 때문에 스크립트를 호출하지 않습니다. 같은 페이지에 새로운 "#"위치를로드하도록 브라우저에 지시하면 브라우저는 서버와 통신하지 않고 페이지의 새 인스턴스를 가져옵니다.

자바 스크립트를 사용하지 않고 서버에 메시지를 보내려면 서버에 고유 한 액세스 포인트를 만들 수 있습니다.그러면 브라우저가 각 호출에서 페이지를 다시로드하게되고, 서버에 요청을 보내 액션을 완료하게됩니다.

비슷한 접근법은 웹 서버 설정을 변경하여 새 URL에 대한 호출이 모두 주 스크립트 (예 : index.php)로 리디렉션되도록하는 것입니다.

스크립트가 $ _POST 참조를 사용하고 브라우저가 새 페이지를로드 할 때 POST 데이터를 보내지 않으므로 위의 방법을 사용하지 않는 것이 좋습니다.

가장 깨끗한 방법은 부트 스트랩 버튼을 사용하여 필요한 ID로 자바 스크립트 기능을 호출하는 것입니다. 자바 스크립트를 사용하여 URL을 만드십시오. POST 데이터에있는 모든 데이터를 패키지화하십시오 (단락 후 주 참조). 자바 스크립트를 사용하여 POST 데이터로 서버를 호출 (AJAX에서 읽음) 한 다음 응답을 적절하게 처리하십시오.

(참고 : 동일한 요청에서 GET 데이터와 POST 데이터를 보내는 것은 의미가 없습니다. 참고 : GET 매개 변수를 사용하여 ID를 보낼 수있는 옵션이 필요하다면 사용할 수 있습니다. 동시에 $ _POST 및 $ _GET 데이터에 모두 액세스하는 $ _REQUEST 변수).

의견 섹션에서이 문제를 해결해 드리겠습니다. 코드를 더 게시하고 더 많은 사람들이 추가 지원을 제공 할 수 있습니다.