Передача значений checkbox

Zuko91

Новичок
Передача значений checkbox

Есть страница с checkbox`ами. На ней ссылка на другую, совершенно не связанную с этой страницей. Вторая страница должна знать имена всех отмеченных чекбоксов.
Я передал значения этой странице с помощью JS скрипта в массиве. А вот как теперь присвоить эти значения PHP-переменным - ума не приложу.

Что можете подсказать?

Есть какая-либо альтернатива?
 

С.

Продвинутый новичок
Все данные между страницами передаются по протоколу HTTP. Обычно методами GET или POST.
 

Zuko91

Новичок
Слишком много значений для передачи через $_GET.

А через $_POST в новой странице не знаю как.
Обновлять?
 

dimagolov

Новичок
в чем проблема сгенерить для второй страницы скрытую форму со значениями чекбоксов?
 

Zuko91

Новичок
Пробовал. Массив $_POST возвращается пустым.

Вот код второй страницы, с которым эксперементирую.

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   
    <title>Hello!</title>
</head>
<body onload="sortChecks()">  
 <script type="text/javascript">
    //<!--
 
                //далее checkbox элементы обозначаю словом флаги
                window.aChecked = new Array();  //глобальный массив где будем хранить выделенные флаги
                function sortChecks(){
                    var checks = opener.document.getElementsByName("checkbox[]"); //выбираем по имени массив флагов
                    aChecked.length = 0; //уничтожаем массив уже сохраненных флагов
                    var length = checks.length; //проверяем, а вообще в документе присутствуют флаги с данным именем
                    if(checks&&length){    document.write('<input type="text" name="ch" value="БЛАБЛАБЛА"><br>');  
                        for(var i=0;i<length;i++){ 
                            if(checks[i].checked){ //если флаг был выделен заносим его в конец массива
                                   aChecked.push(checks[i]);
                                   
                                   
                            //внимание - в массиве доступна ссылка на сам чекбокс элемент - т.е. через
                            //window.aChecked[нужный индекс].(свойство)(метод) - можно обратиться напрямую
                            //к любому свойству или методу выбранного чекбокса
                            //пример: window.aChecked[i].value - вернет значение,
                            //window.aChecked[i].id - id
                            //window.aChecked[i].checked = false - сбросит установленный флаг
                            }
                        }
                    
                   // showValues(); //закомментировать или удалить - предназначена только для вывода значений с помощью alert
                    }
                
                }
                
                
       /*       function showValues(){
                    var length = aChecked.length;
                    if(length>0){
                    var st = "Были установлены следующие флаги: \n"
                        for(var i=0;i<length;i++){
                            st+=aChecked[i].value+((i!=length-1)?', ':'');
                        }
                    }
                    alert(st);
                }     */     
                
    
    //-->      
    </script>

<?php 
/*$znac=array();
for($i=1;$i<=100000;$i++)
    {
        $znac[$i]="aChecked[i].value";
    }
print_r($znac);  */

echo $_POST['ch'];
?>

</body> 
</html>
 

dimagolov

Новичок
как-то нифига не увидел в данном примере собственно чекбоксов или каких других элементов с именем "checkbox[]". это раз.
два это то, что тебе JavaScript тебе нафиг не нужен вообще, разве что чтобы засабмитить форму при клике на линк.

п.с. код этот вообще не про это. он меняет порядок инпутов, причем криво.
 

Zuko91

Новичок
Это тестовый вариант скрипта.
Какая разница - какие инпуты сейчас стоят?
Мне главное значения PHP передать, а потом уже можно переделать под нужные.
Линков на данной странице нет и не должно быть.
Они только на первой странице, которая, повторюсь - отдельно от вышеописаной.

Что делать-то?
 

Фанат

oncle terrible
Команда форума
сформировать корректный HTML код.
имена отмеченных чекбоксов, если они корректно были заданы в html, ВСЕГДА передаются в РНР.
ничего специально никуда присваивать не надо

если проблемы с яваскриптом - сначала потренироваться на чистом HTML
 

dimagolov

Новичок
у тебя 2 страницы:
1-я с формой, в которой чекбоксы и которая отправляется через post
2-я, которая полученные через post данные выводит в каком-то виде - текст, опять форма или скрытая форма, это уж как тебе надо.

тебе для начала нужно ПРАВИЛЬНО дать имена своим чекбоксам, чтобы они нормально попали в массив $_POST. Если имена совпадут, то будет только одно, последнее значение.
 

Zuko91

Новичок
Загвоздка в том, что чекбоксы не находтся внутри формы и не представляется возможным их туда поместить из-за особенностей CMS.

Для открытия второй страницы используется гиперссылка.
 

dimagolov

Новичок
ну собирай POST запрос и посылай его Ajax-ом, если делать нечего. или мы тебе должны посоветовать как святым духом послать запрос не посылая его?
 

AmdY

Пью пиво
Команда форума
Автор оригинала: Zuko91
Загвоздка в том, что чекбоксы не находтся внутри формы и не представляется возможным их туда поместить из-за особенностей CMS.

Для открытия второй страницы используется гиперссылка.
тогда в форму добавь скрытые поля и обновляй их значения по onchange чекбоксов
 
Сверху