проверка значений массива (Срочно!)

Stranger_rus

Новичок
проверка значений массива (Срочно!)

Доброго времени суток !
Никак не могу понять почему мой скрипт зацикливается,
причем зацикливается не сразу а спустя 6 проходов
(при одних и тех же тестовых данных, если обрабатывать
другие данные то зацикливание происходит в другой момент)

Задача:
подсчет сколько раз какую позицию заказывали
(данные приходится выбирать из 2ух таблиц)
Причем косяк именно в массиве т.к. если отключить этот шаг то все ок.

Дома тестирую на PHP5, но на работе должно работать на PHP4.
вот текст
PHP:
if ($type=='1'){	//Ключ выбора действия
	echo "<table>\n\r<tr>\n\r<th>Код Товара</th>\n\r<th>Количество</th>\n\r<th>Наименование</th>\n\r</tr>"."\n\r";
	$ar_1=array("");
	$i=1;
	while ($i<$number) {  // $number - количество рядов при предыдущем запросе в базу
	if (in_array("$ar_code[$i]",$ar_1)==false) { // массив $ar_code - содержит код товара                            ВОТ ЗДЕСЬ ОШИБКА !!!
		$query3="SELECT `count`, `producer` FROM `orders_items`  WHERE `code`=$ar_code[$i]";
		$result3 = mysql_query($query3);
		$number3 = MYSQL_NUMROWS($result3);	
		$iz=0;
		$SthisItC=0;           //общее количество купленных единиц продукции
		while ($iz<$number3) {
			$Scount3 = mysql_result($result3,$iz,"count");	 // Количество в данном заказе
			$Sprod3 = mysql_result($result3,$iz,"producer"); // Наименование
			$SthisItC+=$Scount3;
			$iz++;
		}
		array_push($ar_1,$ar_code[$i])
		echo "<tr>\n\r<td>".$ar_code[$i]."</td>\n\r<td>".$SthisItC."</td>\n\r<td>".$Sprod3."</td>\n\r</tr>\n\r";
		$i++;
	} 

};
echo "</table>";
};
};
 

Фанат

oncle terrible
Команда форума
Stranger_rus
предыдущий оратор хотел дать более точную ссылку - http://phpfaq.ru/debug#debug

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

Stranger_rus

Новичок
дык я дебаг юзал есть пару notice но не более !
И ошибку я уже локализовал...
вот только понять не могу как её исправить или реализовать по другому.
 

Фанат

oncle terrible
Команда форума
то есть, ты хочешь, чтобы тебе подсказали, как испраить ошибку, которую ты локализовал?
 

Stranger_rus

Новичок
да именно т.к. я не понимаю в чем там ошибка я лишь знаю что она там
 

Фанат

oncle terrible
Команда форума
представление о локализации ошибки =)

-~{}~ 24.08.06 01:09:

скажи, ты не пробовал отлаживать своё скрипт?
 

Crazy

Developer
Stranger_rus, нам все нравится. Проблемы исключительно у тебя. Будешь выделываться дальше или таки прислушаешься к совету?
 

Stranger_rus

Новичок
представление о локализации ошибки =)
Ок, а можно узнать ваше представление о том что такое "локализация ошибки"

Stranger_rus, нам все нравится. Проблемы исключительно у тебя. Будешь выделываться дальше или таки прислушаешься к совету?
Проигнорирую в виду некорректности обращения...
 

Crazy

Developer
Автор оригинала: Stranger_rus
Ок, а можно узнать ваше представление о том что такое "локализация ошибки"
Локализация ошибки -- это когда говорят: ошибка вот в этой строке.

Начинает доходить?
 

WP

^_^
Фанат
Извини. Правда думаю ему там остальное тоже не повредит.
Stranger_rus
"Ошибка" в программе = неожиданная программистом реакция программы.
Локализовать ошибку это значит узнать в чем именно ошибка, т.е. какой участок исходного кода неправильно (неожиданно) воздействует на переменные, либо же хранит в себе неожиданную логику. Таким образом, чтобы узнать что у тебя не работает, с помощью var_dump() посмотри значения переменных и там где увидишь отличия от предпологаемых - исправь код. Пора смотреть на программу как программист, а не как пользователь, который может лишь в некоторых случаях констатировать факт ошибки.
 

Stranger_rus

Новичок
ладно будем с Вами обащтся так...
а открыть глаза и использовать их по назначению не дано ?
Видимо нет...ну ладно это не для всех согласен...
if (in_array("$ar_code[$i]",$ar_1)==false) { // массив $ar_code - содержит код товара ВОТ ЗДЕСЬ ОШИБКА
 

Crazy

Developer
Замечательно. Всего за 20 минут я смог научить тебя пользоваться глазами.

Если еще раз будет нужна такая помощь -- обращайся.
 

Stranger_rus

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

-~{}~ 24.08.06 01:29:

2Crazy извини ты идиот ? это цитата из моего первого поста...
 

WP

^_^
> а открыть глаза и использовать их по назначению не дано ?
Судя по твоим постам - нет.
if (in_array("$ar_code[$i]",$ar_1)==false) { // массив $ar_code - содержит код товара ВОТ ЗДЕСЬ ОШИБКА
Можно было с уверенностью сказать что в этом ошибка если бы там был Parse error, в остальных случаях - нужно рассматривать главным образом в контексте используемых переменных, в данном случае это $ar_code, $i, и $ar_1, выводи их - var_dump(array('ar_code' => $ar_code, 'i' => $i, 'ar_1' => $ar_1)); А также учитывая задумку программиста, откуда ж мы знаем что ты хочешь сделать.

-~{}~ 24.08.06 01:34:

Ты не поступил проще, ты проще потупил. Уверен что имея весь код в состоянии пригодном к запуску я бы нашел ошибку не больше чем за минуту. Элементарно выведя все переменные, вообще все которые участвуют в том куске кода. Ошибка была бы очевидна.
 

Crazy

Developer
Автор оригинала: Stranger_rus
2Crazy извини ты идиот ? это цитата из моего первого поста...
Спасибо, мой наивный друг, в отличие от тебя я:

1. Умею читать
2. Понимаю смысл написанного

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

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

-~{}~ 24.08.06 01:46:

Кстати, поскольку мне лениво ждать, когда же ты догадаешься, даю еще одну подсказку: не нужно использовать цикл while там, где по смыслу нужен for. Это уберегло бы тебя от зацикливания.

Сделало бы это твой алгоритм правильно работающим -- уже совсем другая история. :)
 
Сверху