обработка post масиива

reddevel

Новичок
обработка post масиива

имеется цикл выдающий кучу одинаковых полей для ввода
PHP:
<?
			$res=select("* from work order by w_wna");
			while($row=mysql_fetch_assoc($res))
			{
		?>
			<tr>
		    <td><? print $row[w_wna]?></td>
		    <td><? print $row[w_wed]?></td>
		    <td><input type="text" name="rd[]" value="0"><input type="hidden" name="ch[]" value="<? print $row[w_wid]?>"></td>
		    </tr>

		<?
			}
?>
и обработка формы
PHP]while(list($cc,$vv)=each($_POST[ch]))
{
$cx[]=$vv;

}
while(list($key,$val)= each($_POST[rd]))
{
if($val!=0)
for($ccc=0;$ccc<=count($cx);$ccc++)
{
if($key==$cx[$ccc])
{[/PHP]



это все работает:
есть цикл вывода с тойже кучей и чекбоксом

PHP:
print "<table width='100%'><tr><td width='5%'></td><td align='left'>".$w_row[w_na]."<td/><td align='left'>rur/".$w_row[w_wed]."</td><td align='left'><input type='hidden' name='wwn[]' value='$w_row[w_wid]'><input type='hidden' name='wn[]' value='$w_row[w_id]'><input type='hidden' name='co[]' value='$val'><input name='ch_n[]' type='checkbox' value=''></td></table>"
и его обработка которая не работает


PHP:
while(list($cc,$vv)=each($_POST[wwn]))
			{$cx[]=$vv;}
			while(list($zz,$nn)=each($_POST[wn]))
			{$zx[]=$nn;}
			while(list($ss,$bb)=each($_POST[co]))
			{$vx[]=$bb;}
			
			while(list($key,$val)= each($_POST[ch_n]))
			{
				for($ccc=0;$ccc<=count($zx);$ccc++)
							{	
												
								if($key==$zx[$ccc] & $key==$cx[$ccc] & $key==$vx[$ccc])
								print $zx[$ccc]." - ".$cx[$ccc]." - ".$vx[$ccc]."<br>"; 
								
							}
				
				
				}
			}
вопрос где я баран?
 

dimagolov

Новичок
PHP:
while(list($cc,$vv)=each($_POST[wwn]))
            {$cx[]=$vv;}
            while(list($zz,$nn)=each($_POST[wn]))
            {$zx[]=$nn;}
            while(list($ss,$bb)=each($_POST[co]))
            {$vx[]=$bb;}
а в чем тайный смысл таких телодвижений? чем массивы $cx, $zx и $vx лучше $_POST[wwn], $_POST[wn] и $_POST[co]?

это я к тому что убрав бессмысленный код ты сможешь разобраться в том, где накосячил
 

reddevel

Новичок
тайного смысла нет просто нужно получить значение от хиденов по выбранному чеку и
если я правильно вас понял то должно выглядеть примерно так
PHP:
	for($key=0;$key<=count($_POST[ch_n]);$key++)
			{
				if($_POST[ch_n][$key]=true)
				{
					print $_POST[wwn][$key];
				}
			}
но это кроме подвисания не к чему не приведет, а если использовать для проверки 100 чеков выбранных в произвольном порядке, такого вида конструкцию
PHP:
while(list($cx,$bx)=each($_POST[rd]))
		{
			$zx[]=$bx; //<input type="hidden" name="rd[]" value="<?print $row[u_id]?>">
		}
		while(list($key,$val)= each($_POST[ch]))
			{

				if($val==true)

					print "ok -".$zx[$key]."<br>";
			
							}
				
	}
то предположим при выборе 2-3 чеков мы увидим ок-0,ок-1,ок-2 ..... и т.д. т.е. мы не получаем значение хиденов от значения выбранного чека, а видим нумерацию кол-ва элементов в массиве от 0 до n-элементов массива.
 

dimagolov

Новичок
reddevel,
1. прочитай что такое операторы в пхп, в частности присваивания и сравнения.
2. сделай var_dump($_POST) чтобы узнать как браузер передает (вернее не передает) не выбранные чеки
3. http://phpfaq.ru/debug - отлаживай свой код.
 

Beavis

Banned
напиши вначале скрипта
PHP:
ini_set('display_errors', 'on');
error_reporting(E_ALL);
 

reddevel

Новичок
Beavis,
ничего не кажет
dimagolov,
приму к сведению все выше написанное, то что не выбранные чеки не передаются и так знал, вар_дамп делал и видел задолго до совета (одна из первых решений, до постов при подобных ситуациях ), тогда получается что в моем случае нужно использовать не чекбокс а селект с вопросом да/нет и пользователь должен пройтись по 100 или более селектам выбрав то что ему необходимо, но ведь это не правильно. хорошо не соблаговолят ли гуру веб проектов и т.д. подсказать "чайнику" как правильно реализовать следующее: ПОСТ массив состоящий из 1000 элементов: хиден полЯ(кол-во, вид, что-то, что-то,)) и чекбоксов для проверки того что пользователь выбрал именно N-ую строку содержащую хиден полЕ(кол-во, вид, что-то, что-то,))
 

dimagolov

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

reddevel

Новичок
Автор оригинала: dimagolov
старый прикол. назначай в форме индексы именам чекбоксов, чтобы при обработки можно было понять что именно выбрал пользователь.
СПАСИБО
 

dimagolov

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

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