|
На страницу « 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 » |
|
|
|
|
Возраст: 38 C нами с 25.01.2005 Репутация: 133
|
|
Язык программирования, разработанный специально для динамической генерации веб-страниц. Намного превосходит возможности SSI. Имеет функции работы с базами данных (MySQL), создания графических файлов Jpeg и PNG (библиотека GD), обработки XML-документов и многие другие.
|
|
|
|
|
|
|
|
Возраст: 45 C нами с 28.07.2005 Репутация: 135.1
|
|
Да я пошутил вообщето )) у меня не такой скил, чтобы деньги за программинг брать...
ну да t-name то разный но уникальных покупателей 6. т.е просто надо в соответствующую ячейку добавить соответствующий цифирь, дабы не дублировать поля t-name
ежели это не критично и поля t-name могут дублироваться, то тогда код будет гораздо проще
вот, например у меня в результате клиент 3 стоит цифирка как в сушеной рыбе, так и в селёдке. (уже -1 поле) т.е. группировка идет как по Х так и по Y
а вот 9й - исчез..точнее. почему-то сбойнул (из шапки значение выпало, а это признак что какие-то проблемы с отбором)
|
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.05.2009 Репутация: 5.6
|
|
Silicoid, А насчет ОРГ3 я не доглядел все ок. Только вот Клиент9 почему не отобразился
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 45 C нами с 28.07.2005 Репутация: 135.1
|
|
тут код надо еще доработать.
Просто меня мысль посетила. а что будет если один покупатель (например ОРГ3) будет покупать селёдку дважды.. или вообще раз в неделю.
в общем надо просуммировать не только покупки по всем покупателям, но и покупки по 1 покупателю. если такие возможны
|
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.05.2009 Репутация: 5.6
|
|
Silicoid, Вот я как раз и не разберусь с этим суммированием я так еще не писал и не сталкивался с этим
Цитата: |
Просто меня мысль посетила. а что будет если один покупатель (например ОРГ3) будет покупать селёдку дважды.. или вообще раз в неделю.
|
а так и должно быть
Добавлено спустя 35 минут 51 секунду:
Silicoid, в базе есть таблица periods, год поделен на 13 периодов, как сделать так, чтоб отбиралась инфа ещё и по периоду? я предпологаю что, это проще сделать в mysql запросе т.е. в переменной $query.? Блин где бы отъучиться на вебдизайнера не дорого, не подскажете?
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 38 C нами с 25.01.2005 Репутация: 133
|
|
Павлин, тебе не надо на веб дизайнера, тебе нужны основы программирования и основы алгоритмов. Вопросы, которые ты задавал, упираются именно в это.
З.Ы. http://www.pixel2life.com/tutorials/php_coding/ - тут учиться. Бесплатно))
|
_____________________________ Это ты, Джон Уэйн?
|
|
|
|
|
|
|
Возраст: 45 C нами с 28.07.2005 Репутация: 135.1
|
|
Павлин, вот еще вариант. Написан хоть немного длиннее, но зато красивше ))) и еще умеет суммировать все покупки из таблицы.
<?php
function array_unique_slice($from) {
$from = array_unique($from);
$icount = count($from);
$em = array();
$d = 0;
for ($i=0;$i<$icount;$i++)
{
$kv = each($from);
$key = $kv['key'];
$value=$kv['value'];
if (isset($value)) {$em[$d] = $value; $d++;}
}
return $em;
}
function db_query($query)
{//database_config
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_dbs = 'tbd';
$mysql_password = '';
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Could not connect");
mysql_select_db($mysql_dbs)
or die("Could not select database <br> $mysql_dbs");
$result = mysql_query($query) or die("Query failed. <br> $query");
return $result;
mysql_close($link);
}
$uid = 2;
$query = "SELECT users.u_name, sales.t_name, sales.t_ypakovka, sales.klient, sales.stock, sales.number, sales.s_date, sales.rest
FROM users LEFT JOIN sales ON sales.u_id = users.u_id
WHERE sales.u_id ='".$uid."' GROUP BY sales.t_ypakovka, sales.klient ORDER BY sales.t_name, sales.klient";
$result = db_query($query);
$max_lines = mysql_numrows($result);
//разгоняем все по массивам
for ($i=0;$i<$max_lines;$i++)
{
$line = mysql_fetch_array($result, MYSQL_ASSOC);
$t_name[$i] = $line['t_name']; // тут будет весь список товаров
$klients[$i]= $line['klient']; // a тут список клиентов (из всех полей)
$data[$i] = $line;
if (isset($line['s_date'])){
$date_p = explode(".",$line['s_date']);
$data[$i]['unix_timestamp'] = mktime(0,0,0,$date_p[1],$date_p[0],$date_p[2]); //тут все даты переводятся в формат Unix timestamp иеаче потом находить самую свежую будет тааакой гемор!
}
}
// определяем название и кол-во клиентов динамические Y позиции
$klients_names = array_unique_slice($klients);
$klients_pos = array_flip($klients_names);
$klients_count = count($klients_names);
// определяем название и кол-во товаров динамические X позиции
$goods_names = array_unique_slice($t_name);
//print_r ($goods_names);
$goods_pos = array_flip($goods_names);
$goods_count = count($goods_names);
//сортируем массив, приняв во внимание, что 0 и 1 столбец используются
// столбец 0 - для ввода названия
// столбец 1 - для вывода типа упаковки
// столбец 2...х+2 - это столбцы для соответствующих покупателей
// столбец х+3 - количество товара на складе
// столбец х+4 - остаток
// столбец x+5 - дата последней продажи
$output_table = array();
reset($data);
for ($x=0;$x<$max_lines;$x++)
{
$line = $data[$x];
$x_shift = $klients_pos[$line['klient']]+2;
$y_shift = $goods_pos[$line['t_name']];
//для каждого конкретного товара
if (isset($output_table [$y_shift][$x_shift]))
{ // если в ячейке уже есть данные то суммируем их
$curent_data = $output_table [$y_shift][$x_shift];
$output_table [$y_shift][$x_shift] = $curent_data+ $line['number'];
} else
{ // создаем данные с нуля
$output_table [$y_shift][$x_shift] = $line['number'];
}
//для "на складе"
if (isset($output_table [$y_shift][$klients_count+2]))
{ // если в ячейке уже есть данные то суммируем их
$curent_stock = $output_table [$y_shift][$klients_count+2];
$output_table [$y_shift][$klients_count+2] = $curent_stock+$line['stock'];
} else
{ // создаем данные с нуля
$output_table [$y_shift][$klients_count+2] = $line['stock'];
}
//для "остатки"
if (isset($output_table [$y_shift][$klients_count+3]))
{
$output_table [$y_shift][$klients_count+3] = $output_table [$y_shift][$klients_count+3] + $line['rest'];
} else
{ // создаем данные с нуля
$output_table [$y_shift][$klients_count+3] = $line['rest'];
}
// находим дату последней продажи
if (isset($output_table [$y_shift][$klients_count+4]))
{
if ($line['unix_timestamp']>$output_table [$y_shift][$klients_count+4]){$output_table [$y_shift][$klients_count+4] = $line['unix_timestamp'];}
} else
{ // создаем данные с нуля
$output_table [$y_shift][$klients_count+4] = $line['unix_timestamp'];
}
$output_table [$y_shift][0] = $line['t_name'];
$output_table [$y_shift][1] = $line['t_ypakovka'];
}
// перегоняем все таймстампы во время
for ($y=0;$y<$goods_count;$y++)
{
$output_table [$y][$klients_count+4] = date ("d.m.Y",$output_table [$y][$klients_count+4]);
}
//1. создаем заголовок таблицы
$table_header = '<body><table border="1" bgcolor="#FFFFb1" cellspacing="0" cellpadding="2"><tr><td>Наименование</td><td>Package</td>';
for ($y=0;$y<$klients_count;$y++) {$table_header = $table_header.'<td>'.$klients_names[$y].'</td>';}
$table_header = $table_header.'<td>На складе</td> <td>Остаток</td><td>Дата продажи</td></tr>';
$table_futter='</table></body>';
$table_body='';
//создаем таблицу
for ($x=0;$x<$goods_count;$x++)
{ $table_body = $table_body.'<tr>';
for ($y=0;$y<$klients_count+5;$y++)
{
if (isset($output_table[$x][$y])) { $data = $output_table[$x][$y];} else {$data='-';}
$table_body = $table_body.'<td>'.$data.'</td>';
}
$table_body = $table_body.'</tr>';
}
echo $table_header.$table_body.$table_futter;
?>
|
Что касается веб-дизайнера.
То, что мы сейчас делаем, это не вебдизайн. Это чистой воды коддинг... и научиться этому можно только если устроиться на работу младшим помощником последнего программиста и потихоньку вылезать в верхние ряды постоянно перенимая опыт "более крутых товарищей"
Вообще когда работаешь с людьми у которых скилл-левел гораздо выше. как-то растешь быстрее.
а азы можно и в интернете попробовать черпнуть
|
index.rar - 1.72 Kб
Скачиваний: 5
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.05.2009 Репутация: 5.6
|
|
Silicoid, Огромное вам спасибо за внимание и помощь вопрос а вчем разница между array_unique_slice и array_unique и в каком случае они применяются
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 45 C нами с 27.03.2005 Репутация: 205.2
|
|
Павлин, array_unique() — это стандартная библиотечная функция, она убирает повторяющиеся элементы из массива (см. здесь), а array_unique_slice() — пользовательская функция, определённая в начале кода Silicoid'а; что она делает — известно лишь автору и тем, кто не поленится прочитать приведённый код и разобраться в нём.
|
_____________________________ Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.05.2009 Репутация: 5.6
|
|
Silicoid, простите но я "дуб" в том что вы написали не могу сообразить как всё работает и где что можно если что изменить и добавить:) Не вычитается остаток и там особо не актуально чтоб
Цитата: |
//тут все даты переводятся в формат Unix timestamp иеаче потом находить самую свежую будет тааакой гемор!
|
товар отбирается по периодам таблица "periods" в моей базке если она у вас есть. Там тупо к каждому дню и месяцу я привязал номер периода и его я думал сделать чтоб вычеслялся по дате типа скрипт берет текущую дату и сверяет с таблицей "periods" если есть такая дата, то скрипт выводит из поля "period" соответствующую сверенной дате, строку "periods" ,вот! Периодов в году 13 по 28 дней, а 1 день который остается он не к кому не относится. Вы простите что я вот так вот к вам нагло обращаюсь со своими проблемами я бы и сам сделал если бы хоть чуть чуть знал что вы знаете, Я обучаюсь но это одному трудно, а с вопросами не каждый выдержет объяснять и предлогають всякие книжки читать я их уже кучу прочел понял только основное самое легкое а сложное и то как и в каких случаях это применять мне не всегда понятно
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 45 C нами с 28.07.2005 Репутация: 135.1
|
|
в кратце как работает скрипт.
первая часть скрипат загоняет полученные из запроса данные в 3 массива.
в первом массиве идут все поля t-name
во втором массиве все поля - klient
в третьем массиве собственно запрос.
2я часть сортирует массивы с данными из tname и klient находя в них только уникальные (т.е. не повторяющиеся) значения и располагает их в простом массиве.
Функция array_unique_slice() как раз это и делает. т.е. создает ключи от 0 до n, потому как функци яarray_unique () ключи массива не меняет.
потом оба массива инвертируются. т.е.
если сначала было:
0 => "селёдка",
1 => "хлеб",
2 => "колбаса"
то теперь становится
"селёдка" =>0,
"хлеб"=>1,
"колбаса"=>2
так и
"компания 1" => 0,
"компания 2" => 1,
"компания 3" => 2,
третья часть, котрая начинается с коммента
//сортируем массив, приняв во внимание, что 0 и 1 столбец используются
и заканчивается перед // перегоняем все таймстампы во время
занимается собственно созданием нашей будущей таблицы.
работает так:
у вас есть двухмерный массив (почти матрица) из
n строк и m+5 столбцов, где
первые 2 столбца фиксированы туда заносятся названия и тип упаковки. Далее идет m столбцов с продажами (циферки) далее идет несколько столбцов со статистикой.
далее запускается цикл
от 0 до n, где = кол-ву строк в запросе.
берется 1-е значение из запроса
смотрим это у нас "селёдка".
обращвемся к массиву 1 ($goods_pos) с ключем "Селёдка" он нам выдает число 0
ага. это перая строка
далее обращаемся к массиву 2 ($klients_pos) к ключу "компания 3" (компания, которая купила селёдку) Он нам выдает число 2. ага это 3й столбец.
и так у нас есть 1-я строка и 3й столбец массива
но так как у нас первые два столбца заняты названиями и размерностью, то прибавляем к столбцу 2
и так
у нас есть строка 1 столбец 5.
проверяем есть ли там данные. т.е. вообще существует-ли такая ячейка в массиве (функция isset) если нет, то просто берём значение из переменной продажа ($line['number']) и записываем её в ячейку. если переменная существует, то скорее всего там уже есть данные. тогда берем данные из этой ячейки и прибавляем данные из переменной "Продажа" ($line['number'])
такие-же фокусы проводим со всеми оставшимися строками запроса.
взял. Определил в какую ячейку пихать. Запихнул (при необходимости сложил.)
теперь что касается таймстампа timestamp очень полезная штука при выборе данных, потому как она все данные кодирует в числовой вид.
для того, чтобы вывести определенный диаппазон дат необходимо просто сделать условие, например
if (($date>$old_date) and ($date<$new_date)) {}
и всё
чобы преобразовать желаемую дату воспользуйтесь mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])
так как все хранится в виде числа, то и период 13 дней будет всегда константой и не надо будет мучаться с пересчетом. просто отняли нужное число и всё... то-же самое с 28 днями
так. потом функция перегоняет таймстамп в нормальный вид. циклом. (я думаю это понятно)
а последняя - просто пробегает весь массив от точки 0:0 до n:m+5 и выводит соответствующие ячейки в виде таблицы...
фуф. вроде всё
|
|
|
|
|
|
|
|
C нами с 07.11.2008 Репутация: 62.3
|
|
Подскажите пожалуста реально найти работу по PHP без опыта и без особых знаний??? Если нет то с чего лучше начать?может какие-то проекты самому сделать???
Я сейчас потихоньку изучаю, но чувствую на это ещё много времени и усилий уйдёт.У меня есть плюсы: изучал в универе С/С++, разрабатывал по учебе небольшие базы в FoxPro. Хотя сколько объявлений просмотрел везде опыт работы=(
|
|
|
|
|
|
|
|
Возраст: 45 C нами с 28.07.2005 Репутация: 135.1
|
|
SaikoPeipa, сейчас с работой сложно (говорю, как человек занимающийся разработкой некоторых крупных сайтов с вакансиями резюме) т.е. предложение сдорово опережает спрос.
Дело в том, что прошлой осенью выкинули на улицу весь планктон. т.е всех тех людей, которые ничего не делали и/или ничего не умели делать. по этому-то сейчас без опыта сложно.
хотя.....
я сейчас подумал.
можно попробовать устроиться в какую-нибудь не профильную конторку в рекламный отдел по специальности.
Т.е. если есть некоторый багаж знаний в принципах построения не многопоточных программ и справочник функций, то останется только подучить какую-нибудь не сложную ЦМС-ину.
Там как правило сидят люди достаточно некомпетентные в этой области (особенно в отделе кадров) и прошмыгнуть можно. Правда потом придется усиленно вкалывать пару лет, набираясь крутизны.
Правда учтите, что помимо программинга Вам еще придется Базово выучить фотошоп и на более продвинутом уровне верстку, хотя-бы на таблицах, потому как качественно завертать на дивах, имхо это вообще высший пилотаж
и еще один минус. в таких компаниях вам 80 тысяч вряд-ли кто положит. т.е придется работать за небольшие деньги, так сказать на перспективу. (я именно так и поступил. Когда подвернулся шанс устроиться на работу дизайнером (на 15 тыр), я тут-же уволился с предыдущей работы, хотя мой уровень знаний в том-же ФШ был почти нулевой. Про иллюстратор я даже ничего не слышал ))) Но за 4 года очень прилично прокачался) Так-же и с программингом.
и еще попробуйте найти работу по ближе к дому. т.е. Жуковский или Раменское и их окрестности. тем самым вы сэкономите тысяч 10-12 в месяц, а соответственно 20 тысяч тут, будет эквивалентом 30 в Москве.
Но все равно, считайте что это будет работа за похлебку.
|
|
|
|
|
|
|
|
Возраст: 42 C нами с 25.09.2006 Репутация: 77.9
|
|
|
|
|
|
|
|
C нами с 07.11.2008 Репутация: 62.3
|
|
Спасибо большое за советы, буду думать=)
|
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.10.2005 Репутация: 77.1
|
|
Товарищи, не думал, что придется обращаться. Но голову сломал уже. Есть потребность взять в одном SQL запросе информацию следующим образом. Рандомно взять из 5 последних статей (по дате) 3 статьи, из определенных трех разделов. Т.е. в разделах должны браться в рассчет только последние 5 статей.
В результате все 3 статьи должны быть из разных разделов.
Статьи привязаны к условному id этих разделов, всё как обычно.
Взял вот так, но не могу понять, выполняються ли все условия:
SELECT unit_id AS id, unit_name AS name, unit_img AS img, unit_img_over AS img_o
FROM (
(SELECT *
FROM `'.($this->tblPref).'units` WHERE unit_cl != "" AND unit_sid = 3
ORDER BY unit_edate DESC LIMIT 5)
UNION
(SELECT *
FROM `'.($this->tblPref).'units` WHERE unit_cl != "" AND unit_sid = 4
ORDER BY unit_edate DESC LIMIT 5)
UNION
(SELECT *
FROM `'.($this->tblPref).'units` WHERE unit_cl != "" AND unit_sid = 5
ORDER BY unit_edate DESC LIMIT 5)
) AS select_result
GROUP BY unit_sid
ORDER BY rand() LIMIT 0,3 |
Постоянно выбираются одни и теже 3 позиции, и рандомно выводяться.
Подмогите, други, кто знает, пожалуйста
|
|
|
|
|
|
|
|
На страницу « 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 »
|
|