2009-05-19 2 views
0

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

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

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

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

+0

пример страницы не в wnglish, но вы можете понять проблему .. – 2009-05-19 16:49:57

ответ

0

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

Для получения дополнительной информации о сессии PHP см. PHP Sessions.

+0

Да я знаю, что. Но я знаю, как получить значения из checkboxwith js или ajax в моем случае. Но проблема в том, как сохранить этот массив, который я могу получить в сеансе var и добавить другие значения из разбивки на страницы. Все сделано на одной странице. – 2009-05-19 16:34:28

+0

А вот ссылка на мой сайт и как ссылки отформатированные: http://www.forinexgroup.com/pretragaPrikaz.php?offerType=1&offerState=2&offerRegion=0&offerDest=61&offerService=3&offerMinCat=8&offerMaxCat=8&offerFromTheSea=0&offerNights= 0 & offerTransport = 1 & offerPrice = 0 & offerNumAdults = 0 & date1 = 28-06-2009 & date2 = 31-07-2009 и ссылка с разбивкой на страницы можно увидеть в нижней части страницы: Перейдите по ссылке и посмотрите .. – 2009-05-19 16:37:16

-1

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

 

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

+0

-1 для использования JavaScript-зависимых методов отправки формы, которые делятся на ссылку вверху страницы, когда совершенно хороший тип ввода = «submit» существует (и может быть в стиле) – Quentin

+0

Это не имеет никакого смысла. Его вполне приемлемо использовать javascript для выполнения подачи формы. Так как кнопка отправки не может быть написана так, чтобы она выглядела как ссылка .. если им не хватает чего-то .. – simon622

+0

Да, но эту кнопку нужно щелкнуть, только когда пользователь выбирает все флажки, которые он хочет показать в сравнении. – 2009-05-19 16:49:05

0

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

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

0

Вы можете сделать это, используя 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); 

Существует в working demo here и более подробное объяснение here

Смежные вопросы