|
|
|
|
|
для: bill
(07.02.2008 в 22:50)
| | Сразу скажу, СПАСИБО всем тем кто имел терпение выслушать мой ламерский бред и попытался помочь.
Выкладываю скрипт который вывод нужную мне информацию по средним ценам и записывает эти средние цены ОДИН раз в сутки в базу.
$query = "SELECT raion, AVG(price) FROM basa WHERE basa.kom = '3' and basa.price > '0' GROUP BY id_type";
$result = mysql_query($query) or die(mysql_error());
$query2 = "SELECT raion, price FROM informer3 WHERE TO_DAYS(NOW()) - TO_DAYS(data) = 7";
$result2 = mysql_query($query2) or die(mysql_error());
while($ro = mysql_fetch_array($result2) and $row = mysql_fetch_array($result))
{
$rew=(int)$row['AVG(price)']; // средняя цена иза ОБЩЕЙ базы по 3-х комн. квартирам.
$ris=(int)$ro['price']; // берёт цены из базы ИНФОРМЕРА_3
$raznica = $rew - $ris; // сред.Цена - цена ИНФОРМЕРА_3
$proc1 = $rew / 100; //
$itogi = $raznica / $proc1;
$itog = round($itogi, 1);
$raion = $row['raion'];
echo "<table width='270' border='0' class='style96'><tr><td width='10' ></td><td width='50' background='images/nav/hik_z1.gif'>
". $row['raion']. "</td><td width='10'></td><td width='10' align='center' background='images/nav/hik_z1.gif'>
".(int)$row['AVG(price)']." p.</td><td width='10' ></td><td width='50' >".$itog." % </td><td width='20' ></td></tr></table> ";
}
$query4 = "SELECT raion, AVG(price) FROM basa WHERE basa.kom = '3' and basa.price > '0' GROUP BY id_type";
$result4 = mysql_query($query4) or die(mysql_error());
$query5 = "SELECT raion, price FROM informer3 WHERE TO_DAYS(NOW()) - TO_DAYS(data) = 7";
$result5 = mysql_query($query5) or die(mysql_error());
$sql = "SELECT (MAX(data) = curdate() ) as up_to_date FROM informer3";
if(!mysql_result(mysql_query($sql), 0, 'up_to_date'))
while($ro2= mysql_fetch_array($result5) and $row2 = mysql_fetch_array($result4)) {
$ris=(int)$ro2['price'];
$raion = $row2['raion'];
$rew=(int)$row2['AVG(price)'];
mysql_query("INSERT INTO informer3 (raion,price,data)
VALUES ('$raion', '$rew', curdate())"); }
// Осуществляем перезагрузку страницы,
// чтобы сбросить POST-данные
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh'; URL=$_SERVER[PHP_SELF]'>
</HEAD></HTML>";
Надеюсь и я чем то смогу помочь начинающим. (хотябы тем что покажу как Делать НЕнужно!) +)
От ГУРУ жду критики и замечаний по скрипту, ОЧЕНЬ буду за это благодарен.
ВСем большое Респект!. особенно Trianon | |
|
|
|
|
|
|
|
для: Trianon
(07.02.2008 в 21:00)
| | >поставьте проверку условия перед циклом.
А не подскажите как это сделать??
>Хотя это Вас не спасет. Выборка из верхних двух селектов у Вас не синхронна, а случайна.
не понял не про селекторы не про синхронность... Если можно более развёрнуто было бы классно....
>Вы считаете ерунду.
Trianon спасибо за Вашу помощь которая мне сильно помогает в освоении дисциплины.
П.С. я добился нужного результат но чую что способ не оптимален.. Завтра выложу свой скрипт сюда, для критики и замечаний. =) | |
|
|
|
|
|
|
|
для: bill
(07.02.2008 в 15:12)
| | поставьте проверку условия перед циклом.
Хотя это Вас не спасет. Выборка из верхних двух селектов у Вас не синхронна, а случайна.
Вы считаете ерунду. | |
|
|
|
|
|
|
|
для: bill
(07.02.2008 в 14:16)
| | ЛЮДИиии Помогите... чуть чуть осталось скрипт подправить и у меня будет всё готово. САм немогу понять где ошибка. Помощи прошу...
Не оставляйте пожалусто мою просьбу без внимания.
Спасибо. | |
|
|
|
|
|
|
|
для: bill
(07.02.2008 в 11:02)
| | СКРИПТ заносит в базу только ОДНИ строчку. а должен заносить 7 строк.
(массив).
Конкретно заноситься строка ('206, 'Центр', '1800', '2008-02-07');
А мне нужно чтобы заносились ВСЕ районы (7 штук) и соответственно все цены.
Я так предполагаю что у меня какието проблемы в ЦЫКЛЕ.
ГУРУ подскажите на что обратить внимание.
Привожу весь код:
$query = "SELECT raion, AVG(price) FROM basa WHERE basa.kom = '3' GROUP BY id_type";
$result = mysql_query($query) or die(mysql_error());
$query2 = "SELECT raion, price FROM informer3 WHERE TO_DAYS(NOW()) - TO_DAYS(data) = 5";
$result2 = mysql_query($query2) or die(mysql_error());
while($ro = mysql_fetch_array($result2) and $row = mysql_fetch_array($result))
{
$rew=(int)$row['AVG(price)']; // средняя цена иза ОБЩЕЙ базы по 3-х комн. квартирам.
$ris=(int)$ro['price']; // берёт цены из базы ИНФОРМЕРА_3
$raznica = $rew - $ris; // сред.Цена - цена ИНФОРМЕРА_3
$proc1 = $rew / 100; //
$itogi = $raznica / $proc1;
$itog = round($itogi, 1);
$raion = $row['raion'];
echo "<table width='270' border='0' class='style96'><tr><td width='10' ></td><td width='50' background='images/nav/hik_z1.gif'>
". $row['raion']. "</td><td width='10'></td><td width='10' align='center' background='images/nav/hik_z1.gif'>
".(int)$row['AVG(price)']." p.</td><td width='10' ></td><td width='50' >".$itog." % </td><td width='20' ></td></tr></table> ";
$sql = "SELECT (MAX(data) = curdate() ) as up_to_date FROM informer3";
if(!mysql_result(mysql_query($sql), 0, 'up_to_date'))
mysql_query("INSERT INTO informer3 (raion,price,data)
VALUES ('$raion', '$ris', curdate())");
}
П,С, таблица с результатами должна быть видна на Странице ВСЕГДА а в бузу писаться результат РАЙОН + СредниеЦЕНЫ долен ОДИН раз в СУТКИ.
ХЭЛП.. помогите Понять в чём проблема... | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2008 в 21:42)
| | делаю запрос к базе SELECT (MAX(data) = curdate()) as up_to_date FROM informer3
в результате получаю "0" (НОЛЬ).
Дамп базы.
-- Table structure for informer3
-- ----------------------------
CREATE TABLE `informer3` (
`id` int(4) NOT NULL auto_increment,
`raion` varchar(11) character set utf8 default NULL,
`price` varchar(11) default NULL,
`data` date default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `informer3` VALUES ('45', 'Ворош', '1800', '2008-02-02');
INSERT INTO `informer3` VALUES ('46', 'Дзерж', '1850', '2008-02-02');
INSERT INTO `informer3` VALUES ('136', 'Центр', '1490', '2008-02-02');
INSERT INTO `informer3` VALUES ('151', 'Центр', '2713', '2008-02-02');
INSERT INTO `informer3` VALUES ('152', 'Дзерж', '2107', '2008-02-02');
INSERT INTO `informer3` VALUES ('153', 'Ворош', '2332', '2008-02-02');
INSERT INTO `informer3` VALUES ('154', 'КрОкт', '1863', '2008-02-02');
Что делаю не так?
P/S/ Вопрос снимаеться.. Разобрался..
НО возник другой:....... | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2008 в 21:42)
| | спасибо, ответ подробный (то что нужно!).
Сейчас немного времени нужно чтобы всё переварить, и наверняка новые вопросы будут. =) | |
|
|
|
|
|
|
|
для: bill
(03.02.2008 в 18:17)
| | $sql = "SELECT (MAX(data) = curdate()) as up_to_date FROM informer3"
формируем в переменной $sql исходный SQL-код запроса.
Запрос вычисляет max(data) [т.е.максимальное значение поля data ] и сравнивает его со значением curdate() [т.е. функцией, которая возвращает дату текущего дня.] Запрос возвращает логическое значение (0 либо 1) в виде результата из одной строки (номер 0) с одним полем (по имени up_to_date )
if(!mysql_result(mysql_query($sql), 0, 'up_to_date'))
выполняем запрос, и тут же (полагая, что ошибок в запросе нет) берем ячейку из нулевой строки и поля up_to_date. Там будет 1 (если последняя дата - сегодняшняя) либо 0 (если дата не совпадает с сегодняшней) либо null (если строк вообще не было ни одной) либо false (если таки были ошибки в запросе).
Во всех случаях кроме 1 исполняется оператор добавления строки.
mysql_query("INSERT INTO informer3 (raion,price,data) VALUES ($raion, $price, curdate())");
> выполняем запись в базу по полям, в поле raion пишем переменную район $raion, в поле price переменную $price и тд.
здесь всё верно.
>И Ещё вот что странно при print_r () у меня в браузере выдаёт массив [raion] => ТЗР
[AVG(price)] => 1696.7925
>непойму почему, веть у меня Не т такого Поля в базе с именем [AVG(price)] , это параметры моему
>переменной... $rew=(int)$row['AVG(price)']; как онни в массив попали с помощью выше
>приведённого кода ума неприложу...
Здесь нужно смотреть, что вы присваивали переменной $row. | |
|
|
|
|
|
|
|
для: bill
(03.02.2008 в 18:17)
| | >$sql = "SELECT (MAX(data) = curdate()) as up_to_date FROM informer3"; ----// скрипт берёт максимальное значение из поля ДАТА и придаёт ему формат вида 2008.02.03.
2008-02-03
>if(!mysql_result(mysql_query($sql), 0, 'up_to_date')) ----// (самое сложное) если запрос выполнен, тоесть $sql существует тооооо...... ничё непонятно......
Если функция mysql_result ничего не вернула, то...
> mysql_query("INSERT INTO informer3 (raion,price,data) ----// выполняем запись в базу по полям, в поле raion пишем переменную район $raion, в поле price переменную $price и тд.
> VALUES ($raion, $price, curdate())");
Да
>
>И Ещё вот что странно при print_r () у меня в браузере выдаёт массив [raion] => ТЗР
> [AVG(price)] => 1696.7925
>непойму почему, веть у меня Не т такого Поля в базе с именем [AVG(price)] , это параметры моему переменной... $rew=(int)$row['AVG(price)']; как онни в массив попали с помощью выше приведённого кода ума неприложу...
>
Что пытаетесь вывести с помощью print_r() ?
>Помогите......, внесите ясность Пожалусто.... | |
|
|
|
|
|
|
|
для: bill
(03.02.2008 в 18:17)
| | НЕУЖЕЛИ НИКТО НЕПОМОЖЕТ? 8**( | |
|
|
|
|