2016-07-01 5 views
1

간단한 블로깅 플랫폼을 만들려고 노력하고 있습니다. 이제는 내 페이지에 그 목록에있는 기사 목록이 있습니다. 내 SQL 데이터베이스 및 거기에 기사가 공개 또는 isnt 경우 열 상태입니다. 문제는이 모든 체크 박스를 쓸 수있는 부울로 쓰기가 어렵다는 것입니다 (체크 된 입력 1이면 else 0).PHP는 체크 박스를 통해 데이터베이스의 여러 값을 변경합니다. 부울

<input type="checkbox" name="public[<?php echo $postID ?>]"> 

그런 다음이 PHP를 사용할 수 있습니다 각각이 같은 이름의 ID를 가질 수 있도록 내가 잘못 생각하는 부분은, 배열 형식을 사용하여

<?php 
if (isset($_POST['submit'])) { 
    try { 
     $stmt = $db->prepare('SELECT postID FROM blog_posts') ; 
     $idArray = $stmt->fetch(); 

     for($i = $idArray; $i > 0; $i--){ 
      if(document.getElementById($i).checked){ 
       $public = 1; 
      } else { 
       $public = 0; 
      } 

      try { 
       $stmt = $db->prepare('UPDATE blog_posts SET public = :public WHERE postID = '$i) ; 
       $stmt->execute(array(
        ':public' => $public 
        )); 
      } 
     } 
    } 
?>The entire code can be found here on [Hastebin][1] Thanks in advance 
+1

'document.getElementById ($ i)'무엇을 의미합니까? 그건 자바 스크립트 코드가 아니라 php !! – FirstOne

+0

양식을 사용하는 경우 숨겨진 입력에 true 또는 false 값을 추가하는 javascript 스크립트를 사용해야합니다. – Jojo01

+0

문을 준비한 다음 실행하지 않고 가져 오는 것이 좋습니다. for 루프는 준비된 명령문을 성공적으로 수행 한 경우 배열이 될'-'을 시도합니다. PHP if 조건에 JavaScript 코드가 있습니다. catch 블록이없는 중첩 try 블록이 있습니다. 그것들은 제가 보는 주요 문제들입니다. –

답변

0

의 이름을 지정 public 체크 박스입니다 당신이 당신의 양식을하지 않는 경우, 그래서 SELECT은, 모든 블로그 게시물을 보내고 있습니다

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

    // You can use query here instead of prepare if you want all the blog posts 
    $stmt = $db->query('SELECT postID FROM blog_posts'); 

    // fetch the postID from each row in the query result 
    while ($id = $stmt->fetchColumn()) { 

     // set public based on the submitted value from your form 
     $public = empty($_POST['public'][$id]) ? 0 : 1; 

     // do the update 
     $stmt = $db->prepare('UPDATE blog_posts SET public = ? WHERE postID = ?') ; 
     $stmt->execute(array($public, $id); 
    } 
} 

참고 : 코드는 업데이트해야 할 일 모든 블로그 게시물을 포함 시키면이 코드는 양식에없는 모든 사용자를 public=0으로 설정합니다. 양식의 모든 블로그 게시물을 표시하지 않는 경우 양식에 인 행만 포함되도록 SELECT 문에 WHERE 절을 추가해야합니다.

+0

도움을 주셔서 감사합니다, 지금은 (일종의) 남은 문제는 배열 인덱스 1과 다른 확인란을 편집 할 수 없기 때문에 while 루프는 모든 체크 상자를 반복하지 않는다고 생각합니다. http : //hastebin.com/xideferowe.xml 전체 페이지 코드와 완전히로드 된 페이지 http://hastebin.com/obobituhot.dos 예. 모든 체크 박스와 기사가 양식에 있습니다. 마지막 부분을 알아낼 수 있기를 바랍니다. –