Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Массив - Цикл
 
 автор: bill   (17.11.2008 в 12:23)   письмо автору
 
 

(я в циклах не в зуб ногой, прошу подробнее.)

Столкнулся вот с чем:

написал Большой скрипт расчёта средней стоимости квадратного метра Квартир города.
Всё прекрасно считает и выводит в браузер финальную таблицу со всеми вычислениями. Скрипт на ВХОДЕ принимает от пользователя (через выбор Селектов(выподающих списков)) данные:
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)
 

.

  Ответить  
 
 автор: bill   (17.11.2008 в 14:13)   письмо автору
 
   для: мим   (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.

  Ответить  
 
 автор: sim5   (17.11.2008 в 14:47)   письмо автору
 
   для: bill   (17.11.2008 в 14:13)
 

Первый проход, если судить по вашим таблицам, это действительно 1,1,1, а вот второй тоже будет - 1,1,1. Откуда возьмется 1,1,2?

  Ответить  
 
 автор: bill   (17.11.2008 в 14:53)   письмо автору
 
   для: sim5   (17.11.2008 в 14:47)
 

Спасибо.
Я в циклах совсем-совсем не силён!

мне нужно чтобы первый проход был: 111
второй: 112
третий: 113
четвёртый: 114
пятый: 121
шестой: 122
седьмой: 123
и т.д.

Чтото в этом духе.. Главное чтобы они перебирались и прикаждом проходе ВЫПОЛНЯЛСЯ остальной КОД скрипта.

  Ответить  
 
 автор: sim5   (17.11.2008 в 14:58)   письмо автору
 
   для: bill   (17.11.2008 в 14:53)
 

То что вам нужно уже все читали, вы скажите от куда на втором проходе берется 2? Если это элемент массива $A3, то вторым элементом его является элемент со значением 1. Так из какого массива нужно взять эту 2? Это должне быть второй элемент массива $A2 или пятый $A3?

  Ответить  
 
 автор: bill   (17.11.2008 в 15:15)   письмо автору
 
   для: 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 (двух сот)
Всем спасибо.

  Ответить  
 
 автор: sim5   (17.11.2008 в 15:30)   письмо автору
 
   для: 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>";
    }
  }
}

А проверять, ну коли как надо выводит, значит все ОК. Какая тут проверка может быть.

  Ответить  
 
 автор: bill   (17.11.2008 в 16:34)   письмо автору
 
   для: sim5   (17.11.2008 в 15:30)
 

ЕщЁ вопрос:

После того как скрипт прошёл все возможные ВАРИАНТЫ (111,112,113,114,121,122 и т.д.)
Нужно после КАЖДОГО прохода записывать полученное значение в БАЗУ данных (саму запись я понимаю как делать). НЕПОНИЯТНО как нужно устроить саму БАЗУ(таблицу) в каторую записывать полученные Значения каждого прохода (средниую цену 1 кв.метра)

У Меня вызывает сложность: КАК организовать структуру таблицы, если необходимо чтобы было учтено ТРИ значения в каждой ячейки.
Пример:
центральны - 1
1-комна.квартира = 1
улучшенка =1

у этих трёх "параметров" будет только ОДИН результат = 70 руб/кв.м
И этот результат нужно записать в базу.

Потом следующий ПРОХОД.... 112... результат = 69 руб/кв.м
и т.д.

Непонимаю как организовать Архитектуру таблицы.. =(

  Ответить  
 
 автор: sim5   (17.11.2008 в 16:42)   письмо автору
 
   для: bill   (17.11.2008 в 16:34)
 

Для меня это все темный лес, что и кто там у вас считает. Но, если за каждой цифрой массива стоит базовая цена, то совсем не обязательно держать все эти проходы в таблице, держать только цену для каждого номера записи, и можно получить по указанным номерам вычесленное значение стоимости. Мне так кажется, если это не "заоблачные" вычисления, то это можно устроить прямо в MySQL запросе. И совсем не обязательно выводить все эти варианты на страницу, хватит трех списков связанных, в которых выбрать нужное и получить цену. Хотя, бог его значет, чего вы там делаете... и я не прав.

  Ответить  
 
 автор: bill   (17.11.2008 в 16:52)   письмо автору
 
   для: 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 тыс.руб
и т.д.

Вот как бы ВСЁ.. =) ВСё на что мне хвотила серого вещества.
Какие будут мысли у Грандов-программирования?
Спасибо всем!.

  Ответить  
 
 автор: sim5   (17.11.2008 в 19:12)   письмо автору
 
   для: bill   (17.11.2008 в 16:52)
 

Таблица с тремя полями - raix, komx, planx. Каждая запись (номер) содержит цену. При запросе получаем (расчитываем) цену из значений полей соответствующих номеров записи.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования