2016-07-22 1 views
-1

내 시스템에 편집 기능이 있습니다. 아포스트로피로 텍스트를 입력 할 수 있지만 편집 모달을 열려고하면 더 이상 작동하지 않습니다.입력에 아포스트로피 (')가있는 경우 모달을 다시 열 수 없습니다.

자바 스크립트 함수를 사용하여 editModal에 값을 전달했습니다. 일부 매개 변수에는 텍스트가 들어 있습니다. 그래서 나는 변수를 \"\"으로 감쌌다.

여기 내 코드입니다.

행을 출력 중입니다. editModal

<?php 
    $sql = $db->prepare("SELECT * from tbl_street 
         WHERE streetStatus <> 2"); 

      $sql->execute(); 
     while($result = $sql->fetch(PDO::FETCH_ASSOC)) 
     { 
      $id   = $result['streetID']; 
      $streetName = $result['streetName']; 
      $status  = ($result['streetStatus']==1) ? "checked" : ""; 


      echo " 
      <tr> 
      <td>$id</td> 
      <td>$streetName</td> 
      <td> 
      <input type='checkbox' onchange='switchStatus($id,this)' data-toggle='toggle' $status> 
      </td> 
      <td> 
      <div class='btn-group' role='group'> 
       <input type='button' value='Manage' onclick='Xmanage($id,\"$streetName\")' class='btn btn-info'> 
       <input type='button' value='Remove' onclick='Xdelete($id)'     class='btn btn-danger'> 
      </div> 
      </td> 
      </tr> 
      "; 
     } 
     ?> 

를 호출하는 자바 스크립트 기능을 포함하는 다음 편집 및 깨끗한 PHP 출력의 모달

<div class="form-group"> 
<!-- Modal --> 
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <!--HEADER--> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
     <h4 class="modal-title" id="myModalLabel"><h3>Manage Lot</h3></h4> 
     </div> 

     <form action="" method="POST"> 
     <!--BODY--> 
     <div class="modal-body"> 

     <input name="theID"id="theID" type="text" class="form-control" > 
     <div class="row"> 
      <div class="row"> 
      <div class="col-md-5"> 
      <label for="streetName">Street Name</label> 
      <input name="estreetName" id="strtnm"pattern="[a-zA-Z0-9]+[a-zA-Z0-9 ]+" type="text" class="form-control" required placeholder="Street Name"> 
      </div> 
     &nbsp; 
     </div> 
     <!--FOOTER--> 
     <div class="modal-footer"> 
     <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
     <button type="submit" name="editSubmit"class="btn btn-primary">Save</button> 
     </div> 
    </div> 
    </div> 
    </div> 

    <?php 
    try{ 
    if(isset($_POST['editSubmit'])){ 
     $id      = $_POST['theID']; 
     $streetName  = $_POST['estreetName']; 
     $sql = $db->prepare(" 
     UPDATE tbl_street 
     SET `streetName`  = :sName 
     WHERE streetID  = :id 
     "); 

     $sql->execute(array(
     ":sName"   => $streetName, 
     ":id"     => $id 
    )); 
     echo"<meta http-equiv='refresh' content='0'>"; 
    } 
    }catch(Exception $e) 
    { 
    echo $e; 
    } 
    ?> 
+0

HTML을 PHP 문자열로 생성해서는 안됩니다. 일반 HTML을 작성한 다음 PHP에서 필요한 모든 값을 반향 출력하십시오. –

+0

Reworded : 귀하의 질문은 JS에 관한 것입니다. 귀하의 PHP 코드는 부적절합니다 (PHP 개발자가 아닌 사람들에게는 혼란스럽고 읽기가 어렵습니다). 브라우저가받는 HTML의 결과를 게시하십시오. 힌트 : 소스 또는 개발자 도구를 봅니다. – Phrogz

+0

나는 HTML 태그에서 ... data-streetname = \ "".htmlspecialchars ($ streetName). "\"....을 출력하고 JS에서 this.dataset.streetname을 사용한다. – progysm

답변

0

의 코드에 당신이 혼란 될 것입니다 왜냐하면 PHP에서 에코 HTML은하지 않습니다이다 탈출. 가장 좋은 방법은 백엔드가 아닌 개발자 팀과 작업 할 때 읽을 수 있고 도움이되는 HTML에 embed php를 삽입하는 것입니다. 당신이 HTML 코드 사용 따옴표를 에코해야하며 HTML은 큰 따옴표를 유지할 경우

<?php 
$sql = $db->prepare("SELECT * from tbl_street WHERE streetStatus <> 2"); 

$sql->execute(); 
while($result = $sql->fetch(PDO::FETCH_ASSOC)){ 
$id   = $result['streetID']; 
$streetName = $result['streetName']; 
$status  = ($result['streetStatus']==1) ? "checked" : ""; 
?> 

<tr> 
    <td><?= $id ?></td> 
    <td><?= $streetName ?></td> 
    <td> 
     <input type="checkbox" onchange="switchStatus($id,this)" data-toggle="toggle" <?= $status ?>> 
    </td> 
    <td> 
     <div class="btn-group" role="group"> 
      <input type="button" value="Manage" onclick="Xmanage(<?= $id ?>, <?= $streetName ?>)" class="btn btn-info"> 
      <input type="button" value="Remove" onclick="Xdelete(<?= $id ?>)" class="btn btn-danger"> 
     </div> 
    </td> 
</tr> 
"; 
<?php 
} 
?> 

처럼 뭔가.

관련 문제