2011-07-26 1 views
1

jQuery 1.6.1을 사용하고 있습니다.divbox를 표시/숨기고 데이터베이스에 저장할 체크 박스 값을 전달합니다.

<div>Sidebar (on/off): <input id="sidebar" name="Sidebar" type="checkbox" value="value1"/></div> 

<?php if ($row_rsPage['fullcontent']==1) 
{ ?> 
     <div id="site_layout_full"> 
     <?php 
     $oFCKeditor = new FCKeditor('FCKeditor1'); 
     $oFCKeditor -> BasePath = 'fckeditor/'; 
     $oFCKeditor -> Height = '455'; 
     $oFCKeditor -> Value = $row_rsPage['pg_cont']; 
     $oFCKeditor -> Create(); 
     ?> 
     </div> 
    <?php } else { ?> 
     <div id="site_layout_content"> 
     <?php 
     $oFCKeditor = new FCKeditor('FCKeditor1'); 
     $oFCKeditor -> BasePath = 'fckeditor/'; 
     $oFCKeditor -> Height = '455'; 
     $oFCKeditor -> Value = $row_rsPage['pg_cont']; 
     $oFCKeditor -> Create(); 
     ?> 
     </div> 
     <div id="site_layout_sidebar"> 
     <?php 
     $oFCKeditor2 = new FCKeditor('FCKeditor2'); 
     $oFCKeditor2 -> BasePath = 'fckeditor/'; 
     $oFCKeditor2 -> Config['CustomConfigurationsPath'] = '../sidefckconfig.js' ; 
     $oFCKeditor2 -> ToolbarSet = 'Short'; 
     $oFCKeditor2 -> Height = '455'; 
     $oFCKeditor2 -> Value = $row_rsPage['pg_sidecont']; 
     $oFCKeditor2 -> Create(); 
     ?> 
     </div> 

$row_rsPage['fullcontent']==1 단지 1 개 사업부 (site_layout_full)를 표시하고 그렇지 않은 경우는 2 명 div의 (site_layout_contentsite_layout_sidebar)를 보여줍니다이 주요 코드입니다.

이제 내가하고 싶은 것은 페이지를 제출하고 값을 데이터베이스에 저장하지 않고 토글하는 것입니다.

그래서 상태를 전환하려면 사이드 바를 사용하고 있지만이 값을 MySQL로 가져 오는 방법은 무엇입니까?

처음에는 양식을 제출 한 다음 데이터베이스에 저장하는 AJAX 없이도 작동합니다. 그러나 레이아웃을 변경하기 위해 전체 페이지를 제출할 필요가 없도록 대화식으로 사용하기를 원합니다.

나는이 전환 사용하고 (하지만 작동하지 않습니다) :

if (document.getElementById('sidebar').checked) { 

     // display fullcontent 
     document.getElementById('site_layout_sidebar').style.display = 'none'; 
     document.getElementById('site_layout_content').style.display = 'none'; 
     document.getElementById('site_layout_full').style.display = 'block'; 

    } 

    else { 

     // display site_content, site_sidebar 
     document.getElementById('site_layout_full').style.display = 'none'; 
     document.getElementById('site_layout_content').style.display = 'block'; 
     document.getElementById('site_layout_sidebar').style.display = 'block'; 

    } 

을 그리고 어떻게 $row_rsPage['fullcontent']로이 값 (체크 박스의 상태)를 저장합니까?

  • 체크 박스 체크 : $fullcontent0
  • 확인란의 선택을 취소 : $fullcontent1
  • 입니다

사람이이 문제를 해결하는 데 도움이 수 있습니까?

변경했습니다 : 자바 스크립트 주위에 $ (document) .ready (function() {}가 추가되었습니다. 이벤트가 발생하지만 데이터베이스의 모든 항목에 전체 콘텐츠 집합이 있으므로 div 태그 site_layout_full이 숨겨집니다. ? 그래서 0

에 나는

그래서 나는이 작업을 수행 할 수 실제로 div 태그를 숨기고있어 다시 표시 할 수 없습니다

을 나는 자바 스크립트로 데이터베이스를 확인하고 전환해야하지만 방법은 다음과 같습니다.

document.getElementById('site_layout_full').style.display = 'none'; 
document.getElementById('site_layout_content').style.display = 'block'; 
document.getElementById('site_layout_sidebar').style.display = 'block'; 

if ($row_rsPage['fullcontent']==1)을 제거 하시겠습니까?

내가 가진 정리해에 :

  • 이 (안 PHP로하지만, 자바 스크립트와 함께) (자바 스크립트)
  • 동적 쇼
  • 가 숨기기에게 div 태그를 표시하는 값을 사용 fullcontent에 대한 데이터베이스를 확인/태그를 숨기고 사용자가 완료되면 데이터베이스에 값을 제출합니다 (PHP 사용)

어떻게하면 좋을까요?

+0

StackOverflow에 오신 것을 환영합니다! – bgw

답변

1

다음은 부분적인 대답입니다.이 뭔가 잘못하지만 난 아직 발견되지 않은 :/

자바 스크립트를 아약스 코드 :

$(document).ready(function() { 
    $pageid = document.getElementById('pg_id').value; 
    $.post("senddata.php",{ id: $pageid },function (ContentFull) { 
     alert("DATA = " + ContentFull); 
     if (ContentFull==0) // 1 = Fullcontent - 0 = sidebar 
     { 
      $('input[name=Sidebar]').attr('checked', true); 
     } else { 
      $('input[name=Sidebar]').attr('checked', false); 
     } 
    }); 


    $('#sidebar').change(function(){ 
     $('#site_layout_sidebar').toggle(); 
     $('#site_layout_content').toggle(); 
     $('#site_layout_full').toggle(); 
    }); 

if (document.getElementById('sidebar').checked) { 
      // display fullcontent 
      document.getElementById('site_layout_full').style.display = 'none'; 
      document.getElementById('site_layout_content').style.display = 'block'; 
      document.getElementById('site_layout_sidebar').style.display = 'block'; 
     } 
     else { 
      // display site_content, site_sidebar 
      document.getElementById('site_layout_full').style.display = 'block'; 
      document.getElementById('site_layout_content').style.display = 'none'; 
      document.getElementById('site_layout_sidebar').style.display = 'none'; 
      } 
     }); 

이는 senddata.php입니다 : 이제

$pid = $_POST['id']; 

    mysql_select_db($database_conndb, $conndb); 
    $query_Recordset1 = "SELECT tbl_pages.pg_id, tbl_pages.fullcontent FROM tbl_pages WHERE tbl_pages.pg_id='$pid'"; 
$Recordset1 = mysql_query($query_Recordset1, $conndb) or die(mysql_error()); 
$row_Recordset1 = mysql_fetch_assoc($Recordset1); 
$totalRows_Recordset1 = mysql_num_rows($Recordset1); 

$ContentFull = $row_Recordset1['fullcontent']; 

echo($ContentFull); 

mysql_free_result($Recordset1); 

나는 정확한 데이터를 얻을 수 다시 요청하지만 나는 어딘가에 결함이 있다고 생각합니다 .... 경고 데이터가 나에게도 항상 전체 컨텐츠 레이아웃을 가져 오는 것 같습니다.

wro 나는 무엇을하고 있습니까? ng ...

관련 문제