|
|
|
| (я в циклах не в зуб ногой, прошу подробнее.)
Столкнулся вот с чем:
написал Большой скрипт расчёта средней стоимости квадратного метра Квартир города.
Всё прекрасно считает и выводит в браузер финальную таблицу со всеми вычислениями. Скрипт на ВХОДЕ принимает от пользователя (через выбор Селектов(выподающих списков)) данные:
1. select1 =Центральный (1), Ворошиловский (2), Кировский (3), Советский (4) и т.д.
2. select2 =1-комнатная квартира (1), 2-комн.квартира (2), 3-комн.квартира (3) и т.д.
3. select3 =Улучшенная планировка (1), Хрущёвская планировка (2), Брежневская пл-ка (3) и т.д.
КАК можно заметить Скрипт получает ТРИ переменных (я передаю входные данные в переменные) Пример:
$raion = 1;
$komn = 1;
$planir = 1;
После того как скрипт получил данные он делает запрос к базе и извлекает СПИСОК квартир которые удовлетворяют критерию выборки ( в данном случае Центральный, 1-комн.ква, улучшенка).
Дальше скрипт выполняет целую цепочку вычислений с занесением промещуточных результатов базу Данных. ПО своему завершению Скрипт Удаляет все ПРОмещуточные данные из базы Данных (дабы незахломлять!) И выводит скрасивую таблицу в Браузер. в таблицы отображаюься готовые цыфры(Резюмирующая Таблица).
ВНИМАНИЕ ВОПРОС:
как мне осуществить ПЕРЕБОР всех возможных значений, тоесть на выходе в перменные поочерёдно "засовывать" цифры.
Пример:
ПРОХОД № 1 с выводом результата в Браузер:
$raion = 1;
$komn = 1;
$planir = 1;
ПРОХОД № 2с выводом результата в Браузер:
$raion = 1;
$komn = 1;
$planir = 2;
ПРОХОД № 3 с выводом результата в Браузер:
$raion = 1;
$komn = 1;
$planir = 3;
ПРОХОД № 4 с выводом результата в Браузер:
$raion = 1;
$komn = 1;
$planir = 4;
И ТАК ДАЛЕЕ по каждой перменной. ПРОШУ ПОМОЩИ.
Всё на что хватило ума так это засунуть все возможные значения Селектов в Массивы (ТРИ массива)
$A1 = array ("1",'1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1'); // РАЙОН
$A2 = array ("1","2","3",'4','1','2','3','4','1','2','3','4','1','2','3','4','1','2','3','4'); // КОМНАТНОСТЬ
$A3 = array ("1","1","1",'1','2','2','2','2','3','3','3','3','4','4','4','4','5','5','5','5'); // ПЛАНИРОВКА
foreach ($A1 as $q=>$raion){ echo "район=$raion<br>":
foreach ($A2 as $q2=>$komn ){ echo "комнаты=$komn <br>";
foreach ($A3 as $q3=>$planir) { echo "планировка=$planir <br>";
|
Обращу внимание Специалистов что мне нужно чтобы в Браузере выводились сразу ВСЕ Резюмирующие таблицы.
Заранее благодарю воинов Клавиатуры, да прославяться в веках Ваши славные беспроводные мышки. =) | |
|
|
|
|
автор: мим (17.11.2008 в 13:59) |
|
|
для: bill
(17.11.2008 в 12:23)
| | . | |
|
|
|
|
|
|
|
для: мим
(17.11.2008 в 13:59)
| | Господа, Помогите Пожалусто начинающему. задачка для меня интересная, но решить её как нужно неполучаеться. Получаеться только Переберать по Одному параметру.
Приведу пример того над чем сейчас думаю.
$A1 = array ("1",'1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1'); // РАЙОН
$A2 = array ("1","2","3",'4','1','2','3','4','1','2','3','4','1','2','3','4','1','2','3','4'); // КОМНАТНОСТЬ
$A3 = array ("1","1","1",'1','2','2','2','2','3','3','3','3','4','4','4','4','5','5','5','5'); // ПЛАНИРОВКА
foreach ($A1 as $q=>$raix )
{$id_type=$raix ;echo "район=$raix <br>";
foreach ($A2 as $q2=>$komx )
{$komn=$komx; echo "комнаты=$komx <br>";
foreach ($A3 as $q3=>$planx )
{ $id_tip=$planx; echo "планировка=$planx <br>";
ТЕЛО выполняемого скрипта и вывод таблиц в браузер.
}}};
|
Но цикл проходит нетак как мне бы хотелось.
Помогите. HELP. SOS. | |
|
|
|
|
|
|
|
для: bill
(17.11.2008 в 14:13)
| | Первый проход, если судить по вашим таблицам, это действительно 1,1,1, а вот второй тоже будет - 1,1,1. Откуда возьмется 1,1,2? | |
|
|
|
|
|
|
|
для: sim5
(17.11.2008 в 14:47)
| | Спасибо.
Я в циклах совсем-совсем не силён!
мне нужно чтобы первый проход был: 111
второй: 112
третий: 113
четвёртый: 114
пятый: 121
шестой: 122
седьмой: 123
и т.д.
Чтото в этом духе.. Главное чтобы они перебирались и прикаждом проходе ВЫПОЛНЯЛСЯ остальной КОД скрипта. | |
|
|
|
|
|
|
|
для: bill
(17.11.2008 в 14:53)
| | То что вам нужно уже все читали, вы скажите от куда на втором проходе берется 2? Если это элемент массива $A3, то вторым элементом его является элемент со значением 1. Так из какого массива нужно взять эту 2? Это должне быть второй элемент массива $A2 или пятый $A3? | |
|
|
|
|
|
|
|
для: sim5
(17.11.2008 в 14:58)
| | Уважаемый SIM5. Я благодарен ВАМ за Вопрос.
Он навёл меня на мысль что я всё делаю неправильно с массивами. =)
Сейчас всё поправил и Перебор начал работать так как мне нужно.
Проверте меня пожалусто, вдруг гдето неопривально?!
$A1 = array ('1','2','3','4','5','6','7','8'); // РАЙОН перебор всех Районов города
$A2 = array ('1','2','3','4'); // КОМНАТНОСТЬ перебор
$A3 = array ('1','2','3','4','5'); // ПЛАНИРОВКА перебор
foreach ($A1 as $q=>$raix )
{$id_type=$raix ;echo "район=$raix <br>";
foreach ($A2 as $q2=>$komx )
{$komn=$komx; echo "комнаты=$komx <br>";
foreach ($A3 as $q3=>$planx )
{ $id_tip=$planx; echo "планировка=$planx <br>";
|
В Итоге получаем что Скрипт ПЕРЕбрал все возможные варианты. А таковых получилось около 200 (двух сот)
Всем спасибо. | |
|
|
|
|
|
|
|
для: bill
(17.11.2008 в 15:15)
| | Зачем лишнее, хватит и:
foreach ($A1 as $raix) {
$id_type=$raix ;
echo "район=$raix <br>";
foreach ($A2 as $komx) {
$komn=$komx;
echo "комнаты=$komx <br>";
foreach ($A3 as $planx) {
$id_tip=$planx;
echo "планировка=$planx <br>";
}
}
}
|
А проверять, ну коли как надо выводит, значит все ОК. Какая тут проверка может быть. | |
|
|
|
|
|
|
|
для: sim5
(17.11.2008 в 15:30)
| | ЕщЁ вопрос:
После того как скрипт прошёл все возможные ВАРИАНТЫ (111,112,113,114,121,122 и т.д.)
Нужно после КАЖДОГО прохода записывать полученное значение в БАЗУ данных (саму запись я понимаю как делать). НЕПОНИЯТНО как нужно устроить саму БАЗУ(таблицу) в каторую записывать полученные Значения каждого прохода (средниую цену 1 кв.метра)
У Меня вызывает сложность: КАК организовать структуру таблицы, если необходимо чтобы было учтено ТРИ значения в каждой ячейки.
Пример:
центральны - 1
1-комна.квартира = 1
улучшенка =1
у этих трёх "параметров" будет только ОДИН результат = 70 руб/кв.м
И этот результат нужно записать в базу.
Потом следующий ПРОХОД.... 112... результат = 69 руб/кв.м
и т.д.
Непонимаю как организовать Архитектуру таблицы.. =( | |
|
|
|
|
|
|
|
для: bill
(17.11.2008 в 16:34)
| | Для меня это все темный лес, что и кто там у вас считает. Но, если за каждой цифрой массива стоит базовая цена, то совсем не обязательно держать все эти проходы в таблице, держать только цену для каждого номера записи, и можно получить по указанным номерам вычесленное значение стоимости. Мне так кажется, если это не "заоблачные" вычисления, то это можно устроить прямо в MySQL запросе. И совсем не обязательно выводить все эти варианты на страницу, хватит трех списков связанных, в которых выбрать нужное и получить цену. Хотя, бог его значет, чего вы там делаете... и я не прав. | |
|
|
|
|
|
|
|
для: bill
(17.11.2008 в 16:34)
| | появилась мысль:
что если создать таблицу
CREATE TABLE `mal_all` (
`data` date default NULL,
`ID` int(11) default NULL,
`price` varchar(255) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
|
И создать ("собрать") ID. Ну или чтото в этом духе, я на скорую руку придумал вот что:
$ID = ($raix.$komx.$planx) ;
echo "выводим-$ID";
|
таким образом мы получаем ИНДЕКС по каторому можем идентифицировать каждую из записываемых в базу Средних цен.
111 = 80тыс.руб
112 = 82 тыс.руб
и т.д.
Вот как бы ВСЁ.. =) ВСё на что мне хвотила серого вещества.
Какие будут мысли у Грандов-программирования?
Спасибо всем!. | |
|
|
|
|
|
|
|
для: bill
(17.11.2008 в 16:52)
| | Таблица с тремя полями - raix, komx, planx. Каждая запись (номер) содержит цену. При запросе получаем (расчитываем) цену из значений полей соответствующих номеров записи. | |
|
|
|
|