Преобразовать строку чисел через запятую в отдельные int или как сохранить состояние checkbox'ов?

Я создаю страницу новостей. На ней имеется две кнопки и 4 checkbox. Первая кнопка выбирает все checkbox, а вторая активирует форму. Новости выводятся по странично ( 3 на странице ). При переходе на другие страницы, выбранные checkbox исчезают и что бы запомнить их состояние, я решил использовать _SESSION . В переменную у меня помещается значение выбранные checkbox'ов пример ( _SESSION = 1,2,3,4 ), но мне теперь нужно присвоить эти числа в массив. При выводе свое состояние сохраняет только номер первого checkbox. Если присвоить переменной "руками" числа через запятую, то все работает. Как преобразовать сроки в формате int или подскажите другой способ.
Вот пример кода: сессия подключается в другом файле и js тоже (вывел выше).
<script language="JavaScript">
function CheckAll(source)
{
	checkboxes = document.getElementsByClassName('checkbox');
for(var i=0, n=checkboxes.length;i<n;i++) {
    checkboxes[i].checked = true;
  }
}
</script>
<?php
	
	$aDoor = $_POST['checkbox__1']; // Присваиваю данные в переменную
	
    $N = count($aDoor);
    for($i=0; $i < $N; $i++)
    {
		if ($i > 0) {echo(",".$aDoor[$i]); $array13 = (",".$aDoor[$i]);} else {$array13 = ($aDoor[$i]."");
		echo $aDoor[$i]."";}
		$array15 = $array15 . $array13;
    }
	echo "</br>";
	echo $array15; // Номера выбранных категорий через запятую
  
	$Number_per_page = 1;// Новостей на странице

  if ($array15 == NULL) {$array15 = array($_SESSION['array15']); echo "sdas".$_SESSION['array15'];} // Проверяем на выбор элементов 
  if ($_POST['checkbox__1'] == NULL) {
	  $_POST['checkbox__1'] = $array15;}
	  
	if ($array15 == NULL) 
		{ 
	
		if (isset($_GET['page'])) // Если в адрессной строке есть переменная page
			$page=($_GET['page']-1); // то уменьшаем на 1
		else $page=0;
  
			$start_per_page=abs($page*$Number_per_page); // получаем начало LIMIT (первое число)
			$SQL_news_count="SELECT count(*) FROM `news`"; // считаем сколько строк в таблице `news`
			$res=mysql_query($SQL_news_count); 
			$row1=mysql_fetch_row($res); // Получаем строку с числовым индексом
			$total_rows=$row1[0]; // Получаем число
		echo $total_rows;
	
			$number_pages=ceil($total_rows/$Number_per_page); // Округляем дробь в большую сторону
	
				$query = mysql_query(
					"SELECT
					`news`.`id` AS `news_id`,
					`news`.`name` AS `news_name`,
					`news`.`description` AS `news_description`,
					`news`.`date` AS `news_date`,
					`news`.`type_id` AS `news_type_id`,
					`news`.`file_url` AS `news_file`,
					`news_type`.`name` AS `news_type_name`,
					`news_type`.`color` AS `type_color`
					FROM `news`
					JOIN  `news_type` ON  `news_type`.`id` =  `news`.`type_id` 
					LIMIT $start_per_page,$Number_per_page
				");
			$row = mysql_fetch_array($query); // Получаем записи из таблицы в заданном промежутке
		}
	
	else {
		
		if (isset($_GET['page'])) // Если в адрессной строке есть переменная page
			$page=($_GET['page']-1); // то уменьшаем на 1
		else $page=0;
  
			$start_per_page=abs($page*$Number_per_page); // получаем начало LIMIT (первое число)
			$q="SELECT count(*) FROM `news` WHERE 
			`news`.`type_id` IN (".$array15.")"; // считаем сколько строк в таблице `news` при заданном условии
			$res=mysql_query($q);
			$row1=mysql_fetch_row($res);// Получаем строку с числовым индексом
			$total_rows=$row1[0]; // Получаем число
		echo $total_rows;
	
	$number_pages=ceil($total_rows/$Number_per_page); // Округляем дробь в большую сторону
	
		$query = mysql_query(
			"SELECT
			`news`.`id` AS `news_id`,
			`news`.`name` AS `news_name`,
			`news`.`description` AS `news_description`,
			`news`.`date` AS `news_date`,
			`news`.`type_id` AS `news_type_id`,
			`news`.`file_url` AS `news_file`,
			`news_type`.`name` AS `news_type_name`,
			`news_type`.`color` AS `type_color`
			FROM `news`
			JOIN  `news_type` ON  `news_type`.`id` =  `news`.`type_id` 
			WHERE 
			`news`.`type_id` IN (".$array15.")
			LIMIT $start_per_page,$Number_per_page
		");
	$row = mysql_fetch_array($query); // Получаем записи из таблицы в заданном промежутке с условием
		}

	
		
	    function checked( $value ) // функция установки флажков
    {
		$checkboxes = $_POST['checkbox__1']; // Массив выделенных чекбоксов
		if ($value > 1 and $value < 6) // Если выбранно флажков больше 1 и менше 6 , то
		{       
			if( in_array( $value, (array)$checkboxes ) ) // Проверяем массив, если он имеется, то
			{ 
				return "checked"; // выставляем checked
				
			}
			else
			{
				return false;
			}
        } 		
	}  
	
	$_SESSION['array15'] = $array15;

	?>
<div class="news_table">
	<div class="news_categories_block">
	<form action="news.php" method="POST" name="search">
		<div class="news_categories_block_table_left"><input class="news_categories_block_table_button_style" type="button" name="Check_All" value="Check All" onClick="CheckAll(this)"></div>
		<div class="news_categories_block_table_button"><button class="news_categories_block_table_button_style" type="submit" >Обновить список</button></div>
		<div class="news_categories_block_1">
		<div class="news_categories_block_table_left"><div class="news_categories_block_table_center_color" style="background:#2196F3;"></div><div class="checkbox_pos"><input <?=checked(2)?> type="checkbox" class="checkbox" name="checkbox__1[]" value="2" id="check"></div>Реализованные проекты</div>
		<div class="news_categories_block_table_center"><div class="news_categories_block_table_center_color" style="background:#009688;"></div><div class="checkbox_pos"><input <?=checked(3)?> type="checkbox" class="checkbox" name="checkbox__1[]" value="3" id="check"></div>Публикации</div>
		<div class="news_categories_block_table_center"><div class="news_categories_block_table_center_color" style="background:#CDDC39;"></div><div class="checkbox_pos"><input <?=checked(4)?> type="checkbox" class="checkbox" name="checkbox__1[]" value="4" id="check"></div>Конференции</div>
		<div class="news_categories_block_table_right"><div class="news_categories_block_table_center_color" style="background:#9C27B0;"></div><div class="checkbox_pos"><input <?=checked(5)?> type="checkbox" class="checkbox" name="checkbox__1[]" value="5" id="check"></div>Выставки</div>
		</div>
		</form>
	</div>
	<div class="news_text_block">
	<?php
	do
	{
		$news_id = $row['news_id'];
		$news_name = $row['news_name'];
		$news_description = $row['news_description'];
		$news_date = $row['news_date'];
		$news_type_id = $row['news_typ e_id'];
		$news_file = $row['news_file'];
		$news_type_name = $row['news_type_name'];
		$type_color = $row['type_color'];
	echo "
	<a href='?id=".$news_id."'>
	<div class='news_text_block_table'>
		<table width='700px'  cols='3' border='0' cellspacing='0'>
<tr>
	<td width='100px'><div class='news_text_block_table_top_date'>".$news_date."</div></td>
	<td><div class='news_text_block_table_top_header'>".$news_name."</div></td>
	<td  width='7px' rowspan='2' bgcolor='".$type_color."'><div style='min-height:200px;'></div></td>
</tr>
<tr>
	<td colspan='2'><div class='news_text_block_table_bottom'>
		".$news_description."
	</div></td>
</tr>
	</table>
		</div>
	</a>";
	}
	while ($row = mysql_fetch_array($query));
	?>
		<div class="news_text_block_table_next"><?php
		
		for($i=1;$i<=$number_pages;$i++) {
  if ($i-1 == $page) {
    echo $i." ";
  } else {
    echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";
  }
}
		
		?></div>
	</div>
</div>
  • Вопрос задан
  • 388 просмотров
Пригласить эксперта
Ответы на вопрос 1
kimono
@kimono
Web developer
Делать вам нечего, чесслово. Используйте метод GET для формы, а не POST. А на странице в зависимости от того, есть параметр в строке атрибутов или нет - ставьте чекбокс чекнутым или нет.
Например:
$url = 'http://mydomain.com/news?page=2&checkbox1=1&checkbox3=1';

HTML:
<input type="checkbox" name="checkbox1" value="1" <?= !empty($_GET['checkbox1']) ? 'checked="checked"' : null ?> />
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы