Получить значения флажка формы и передать их через нумерацию страниц? - PullRequest
0 голосов
/ 19 мая 2009

Мне нужно получить значения из некоторых выбранных флажков и передать эти значения через нумерацию страниц в php / mysql. Если на другой странице пользователь выбирает другие флажки, мне нужно добавить их значения в выбранный ранее массив.

Мне нужно это на странице сравнения товаров. Короче мне нужно:

  • получить значения флажка
  • хранить их
  • включает значения флажков с других страниц в нумерации страниц
  • и когда пользователь выбирает «сравнить», отправьте этот массив на страницу сравнения.

Кто-нибудь знает, как это сделать? Связанные примеры будут оценены?

Ответы [ 4 ]

0 голосов
/ 17 сентября 2009

Вы можете сделать это с помощью JavaScript, чтобы сохранить выбор флажка в cookie. Вот пример кода, который поможет вам в правильном направлении.

var aa_checkbox;

function init_checkbox(){
  //setup blank cb cookie
  if(!Cookie.read('cb')){
    Cookie.write('cb', JSON.encode({}));
  }

  //setup "associative array" to match what is currently in the cookie
  aa_checkbox = JSON.decode(Cookie.read('cb'));


  //set up each checkbox with class="remember_cb"
  $$('input.remember_cb').each(function(el){

    //mark checked if it is in the cookie
    if(aa_checkbox[el.name]){
      el.checked = 'checked'
    }

    //setup onclick event to put checkbox status in the 
    el.addEvent('click', function(){
      if(el.checked){
        aa_checkbox[el.name] = 1;
      }else{
        delete(aa_checkbox[el.name]);
      }   
    })
  })

  //save aa_checkbox back into cookie upon leaving a page
  window.onbeforeunload = function(){Cookie.write('cb', JSON.encode(aa_checkbox));};

  setup_form();

  return true;
}

function setup_form(){
  //set up form so that it adds the inputs upon submit.
  $$('form.remember_cb_form').each(function(form){
    form.addEvent('submit', function(ev){
      //clean up previously inserted inputs
      var aa_hidden_insert = $$('input.hidden_insert');
      $each(aa_hidden_insert, function(el){ 
        el.parentNode.removeChild(el);
      })

      var el_form = this;

      //insert hidden elements representing the values stored in aa_checkbox
      $each(aa_checkbox, function(i_value, s_name){
        if(i_value){ 
          var el_input = document.createElement('input');
          el_input.type = 'hidden';
          el_input.value = i_value;
          el_input.name = s_name;
          el_input.setAttribute('class', 'hidden_insert');
          el_form.appendChild(el_input);
        }
      });
    });
  });
}

window.addEvent('domready', init_checkbox);

Здесь рабочая демонстрация и более подробное объяснение здесь

0 голосов
/ 19 мая 2009

Ваши ссылки на страницы могут фактически выполнять форму POST, а затем прочитать флажок [] в сценарии ur php и обновить скрытый элемент формы или добавить значение в сеанс, что-нибудь с состоянием. так что ваш якорь может выглядеть примерно так


<a href="#" onclick="document.myform.submit()">next&lt/a>

0 голосов
/ 19 мая 2009

Одним из решений было бы загрузить все страницы одновременно в свои div внутри формы. Когда вы нажимаете на ссылку новой страницы, скрываете все div s, кроме той, которую вам нужно показать. Таким образом, все флажки отправляются в одной форме, что упрощает обработку на стороне сервера. Это, конечно, зависит от того, насколько весит каждая отдельная страница и сколько там страниц.

Другим решением было бы сохранить переменную сеанса, отслеживая, что было нажато. Каждый раз, когда кто-то нажимает, чтобы перейти на другую страницу. POST на сервере список флажков.

0 голосов
/ 19 мая 2009

Существуют различные способы поддержания состояния на разных страницах, включая файлы cookie, переменные сеанса, скрытые входные данные, их передачу в строку запроса, сохранение в базе данных и т. Д. В этом случае я бы, вероятно, использовал переменную сеанса.

Подробнее о сеансе PHP см. Сеансы PHP .

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