Не работает функция header() в цикле.

Asples

Новичок
Доброго всем времени суток, имеется кусочек кода, который определяет какой чекбокс был выбран из таблицы, получает его значение value, вытаскивает из него индекс записи в БД и порядковый номер в таблице. устанавливает куку и переходит по ссылке. Если выбрано несколько чекбоксов то получаем ИД последнего элемента, переход по ссылке проходит только после того как переберет все элементы, решил эту проблему вставив break(1); после чего переход осуществляется как только попался первый элемент
PHP:
for($i = 0; $i++<50;)
		{
		$num = 'Number'.$i;
		if(isset($_POST["$num"]))
			{
			$flag   = 'OK';
			$pos1 = strrpos($_POST["$num"],'X');
        		$NumPos = substr($_POST["$num"], 0, $pos1);
        		$pos1++;
        		$NumID = substr($_POST["$num"], $pos1, -1); 
    			setcookie('mesage',$NumID); 
    			header('Location: http://localhost/test/edit.php'); 
    			break(1); //если нет этой строки то имеем последний выбранный чекбокс.
    		        }
                }
Почему не срабатывает команда header() после первого же выполнения условия.

Интересует правильность данного подхода, и реализация в целом? И возможно ли где-нибудь прочитать что-то вроде сборника "плохих советов" т.е. чего лучше не делать.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Сделай нормальный чекбокс.
Чтобы он был массивом
Не Number1 ........... NumberN
А Number[$id]

Это избавит тебя от "плясок" со всей этой билибердой.
for($i = 0; $i++<50;)
{
$num = 'Number'.$i;
if(isset($_POST["$num"]))
Почему не срабатывает команда header() после первого же выполнения условия.
Как думаешь, почему в каждом букваре, после редиректа ставят exit или die?


т.е. чего лучше не делать.
ну вообщем, так, как ты делаешь, лучше не делать.


Я прочитал 15 раз твои пост но так и не понял что ты делаешь.
Итак.
Внимание, вопрос.
Что ты делаешь?
Суть задачи в 2-х предложениях.
 

Asples

Новичок
Как думаешь, почему в каждом букваре, после редиректа ставят exit или die?
Моя ошибка, не знал, думал что сразу выйдет из цикла как встретится такая функция, нужно буквари почитать, а не по справочникам поиском функций

Внимание, вопрос.
Что ты делаешь?
Суть задачи в 2-х предложениях.
В краце, нужно изменить запись в БД, отмеченную чекбоксом в таблице.

Создаю таблицу с данным полученным из БД постранично
PHP:
$j =  ($num * $page) //порядковый номер  записи, где $num количество записей, $page номер страници 
$j = $j - $num // чтобы нумерация была корректной, и первый элемент на первой странице не был под номером 11
$i = 0;
while ($row = mysql_fetch_array($result))
	{
		$i++;  //порядковый номер строки на странице
		$j++;  //порядковый номер в бд
		echo '<tr>';
		echo '<td><b>'.$j.'</b></td><td><input name="Number'.$i.'" type="checkbox" value="'.$j.'X'.$row['id'].'Y"></td>'; 
// значение выбранного чекбокса отправляется методом POST вызыватся страница с кодом приведенным в первом посте
        	echo '</tr>';
	}
В коде приведенном в первом посте я получаю из порядковый номер в БД и соответствующий ему индекс в таблице, вытаскивая из сообщения на которое ссылается переменная $_POST['NumberN'], так как я еще использую этот код для того чтобы удалить несколько записей из базы, имя чекбоксов не должны совпадать.
В 2х предложениях опять не получилось

А вообще меня изначально интересовало почему не происходит выход из цикла))) и то где почитать о том как делать нельзя
 

HEm

Сетевой бобер
если выбрано 50 чекбоксов, ты сделаешь 50 редиректов?
 

HEm

Сетевой бобер
насчет передачи кучи похожих параметров есть более простое решение - <input name="arr[$i]">
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
В краце, нужно изменить запись в БД, отмеченную чекбоксом в таблице.
Именуешь свой чекбокс как-то вот так.
name="Number[]" value="$row['id']" или Number[$row['id']]
На выходе у тебя получится массив значений Number.
Потом прогоняешь цикл по этому массиву, и делаешь то, что нужно.
 

Asples

Новичок
Спасибо всем огромное, получилось, Сразу стало гораздо меньше кода, и более понятно.
 
Сверху