Передав значение флажка, чтобы показать / скрыть div и сохранить в базе данных - PullRequest
1 голос
/ 27 июля 2011

Я использую jQuery 1.6.1. Это основной код:

<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 деления (site_layout_content и site_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']?

  • Флажок отмечен: $fullcontent is 0
  • Флажок снят: $fullcontent is 1

Кто-нибудь может помочь решить эту проблему?

Я изменил это: Добавлен $ (document) .ready (function () {} вокруг javascript. Который запускает событие, но я скрываю тег div site_layout_full, потому что для каждой записи в базе данных fullcontent установлено 0

Так что я на самом деле скрываю тег div и больше не могу его показывать.

Я должен проверить базу данных с помощью javascript, а затем переключиться, но как?

Так что я могу сделать это:

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, а с javascript)
  • Используйте это значение, чтобы показать скрытие тегов div (javascript)
  • Динамически отображать / скрывать теги, и когда пользователь завершает работу, я отправляю значение в базу данных (с помощью php)

Как пожалуйста?

1 Ответ

1 голос
/ 30 июля 2011

Вот частичный ответ.Что-то не так, но я еще не нашел:

Javascript / ajax-код:

$(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);

Теперь я получаю верные данные из запроса, но думаю, что где-то есть ошибка .... Мне всегда кажется, что я получаю полный макет содержимого, даже если ДАННЫЕ ПРЕДУПРЕЖДЕНИЯ дают мне 0

Что я делаю неправильно...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...