Имя:    Пароль:      Помнить меня       
Unsorted   ~  Software  ~  Development and Design  ~  Помощь по PHP Все вопросы по PHP сюда
На страницу «  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  »
Doctor_Mozg
Сообщение  21 Ноя 2006, 16:37  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской  Доверенный пользователь
C нами с 25.01.2005
Репутация: 133

Язык программирования, разработанный специально для динамической генерации веб-страниц. Намного превосходит возможности SSI. Имеет функции работы с базами данных (MySQL), создания графических файлов Jpeg и PNG (библиотека GD), обработки XML-документов и многие другие.
В начало
Профиль : Фотоальбом : Личное Сообщение : ICQ
Silicoid
Сообщение  03 Июл 2009, 11:57  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской 
C нами с 28.07.2005
Репутация: 135.1

Да я пошутил вообщето )) у меня не такой скил, чтобы деньги за программинг брать...
ну да t-name то разный но уникальных покупателей 6. т.е просто надо в соответствующую ячейку добавить соответствующий цифирь, дабы не дублировать поля t-name

ежели это не критично и поля t-name могут дублироваться, то тогда код будет гораздо проще

вот, например у меня в результате клиент 3 стоит цифирка как в сушеной рыбе, так и в селёдке. (уже -1 поле) т.е. группировка идет как по Х так и по Y

а вот 9й - исчез..точнее. почему-то сбойнул (из шапки значение выпало, а это признак что какие-то проблемы с отбором)
В начало
Профиль : Блог : Личное Сообщение : Сайт : ICQ
Павлин
Сообщение  03 Июл 2009, 12:05  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Silicoid, А насчет ОРГ3 я не доглядел все ок. Только вот Клиент9 почему не отобразился Улыбочка

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
Silicoid
Сообщение  03 Июл 2009, 12:23  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской 
C нами с 28.07.2005
Репутация: 135.1

тут код надо еще доработать.
Просто меня мысль посетила. а что будет если один покупатель (например ОРГ3) будет покупать селёдку дважды.. или вообще раз в неделю.
в общем надо просуммировать не только покупки по всем покупателям, но и покупки по 1 покупателю. если такие возможны
В начало
Профиль : Блог : Личное Сообщение : Сайт : ICQ
Павлин
Сообщение  03 Июл 2009, 12:38  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Silicoid, Вот я как раз и не разберусь с этим суммированием я так еще не писал и не сталкивался с этим Юзер
Цитата:
Просто меня мысль посетила. а что будет если один покупатель (например ОРГ3) будет покупать селёдку дважды.. или вообще раз в неделю.
а так и должно быть Улыбочка

Добавлено спустя 35 минут 51 секунду:

Silicoid, в базе есть таблица periods, год поделен на 13 периодов, как сделать так, чтоб отбиралась инфа ещё и по периоду? я предпологаю что, это проще сделать в mysql запросе т.е. в переменной $query.? Стыдно Блин где бы отъучиться на вебдизайнера не дорого, не подскажете? Стыдно Улыбочка

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
Doctor_Mozg
Сообщение  03 Июл 2009, 16:32  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской  Доверенный пользователь
C нами с 25.01.2005
Репутация: 133

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

З.Ы. http://www.pixel2life.com/tutorials/php_coding/ - тут учиться. Бесплатно))

_____________________________
Это ты, Джон Уэйн?
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : ICQ
Silicoid
Сообщение  03 Июл 2009, 21:41  Ссылка : Ответить с цитатой
Возраст: 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

В начало
Профиль : Блог : Личное Сообщение : Сайт : ICQ
Павлин
Сообщение  06 Июл 2009, 11:05  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Silicoid, Огромное вам спасибо за внимание и помощь вопрос а вчем разница между array_unique_slice и array_unique и в каком случае они применяются

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
Олег
Сообщение  06 Июл 2009, 12:15  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской  Доверенный пользователь
C нами с 27.03.2005
Репутация: 205.2

Павлин, array_unique() — это стандартная библиотечная функция, она убирает повторяющиеся элементы из массива (см. здесь), а array_unique_slice() — пользовательская функция, определённая в начале кода Silicoid'а; что она делает — известно лишь автору и тем, кто не поленится прочитать приведённый код и разобраться в нём. Улыбочка

_____________________________
Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
Павлин
Сообщение  06 Июл 2009, 14:18  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Silicoid, Улыбочка простите но я "дуб" в том что вы написали не могу сообразить как всё работает и где что можно если что изменить и добавить:) Не вычитается остаток и там особо не актуально чтоб
Цитата:
//тут все даты переводятся в формат Unix timestamp иеаче потом находить самую свежую будет тааакой гемор!
товар отбирается по периодам таблица "periods" в моей базке если она у вас есть. Там тупо к каждому дню и месяцу я привязал номер периода и его я думал сделать чтоб вычеслялся по дате типа скрипт берет текущую дату и сверяет с таблицей "periods" если есть такая дата, то скрипт выводит из поля "period" соответствующую сверенной дате, строку "periods" ,вот! Периодов в году 13 по 28 дней, а 1 день который остается он не к кому не относится. Вы простите что я вот так вот к вам нагло обращаюсь со своими проблемами я бы и сам сделал если бы хоть чуть чуть знал что вы знаете, Я обучаюсь но это одному трудно, а с вопросами не каждый выдержет объяснять и предлогають всякие книжки читать я их уже кучу прочел понял только основное самое легкое а сложное и то как и в каких случаях это применять мне не всегда понятно Юзер

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
Silicoid
Сообщение  06 Июл 2009, 19:45  Ссылка : Ответить с цитатой
Возраст: 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 и выводит соответствующие ячейки в виде таблицы...


фуф. вроде всё
В начало
Профиль : Блог : Личное Сообщение : Сайт : ICQ
SaikoPeipa
Сообщение  07 Июл 2009, 23:11  Ссылка : Ответить с цитатой
Пол: Мужской 
C нами с 07.11.2008
Репутация: 62.3

Подскажите пожалуста реально найти работу по PHP без опыта и без особых знаний??? Если нет то с чего лучше начать?может какие-то проекты самому сделать???
Я сейчас потихоньку изучаю, но чувствую на это ещё много времени и усилий уйдёт.У меня есть плюсы: изучал в универе С/С++, разрабатывал по учебе небольшие базы в FoxPro. Хотя сколько объявлений просмотрел везде опыт работы=(
В начало
Профиль : Личное Сообщение
Silicoid
Сообщение  07 Июл 2009, 23:44  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской 
C нами с 28.07.2005
Репутация: 135.1

SaikoPeipa, сейчас с работой сложно (говорю, как человек занимающийся разработкой некоторых крупных сайтов с вакансиями резюме) т.е. предложение сдорово опережает спрос.
Дело в том, что прошлой осенью выкинули на улицу весь планктон. т.е всех тех людей, которые ничего не делали и/или ничего не умели делать. по этому-то сейчас без опыта сложно.

хотя.....
я сейчас подумал.
можно попробовать устроиться в какую-нибудь не профильную конторку в рекламный отдел по специальности.
Т.е. если есть некоторый багаж знаний в принципах построения не многопоточных программ и справочник функций, то останется только подучить какую-нибудь не сложную ЦМС-ину.
Там как правило сидят люди достаточно некомпетентные в этой области (особенно в отделе кадров) и прошмыгнуть можно. Правда потом придется усиленно вкалывать пару лет, набираясь крутизны.
Правда учтите, что помимо программинга Вам еще придется Базово выучить фотошоп и на более продвинутом уровне верстку, хотя-бы на таблицах, потому как качественно завертать на дивах, имхо это вообще высший пилотаж
и еще один минус. в таких компаниях вам 80 тысяч вряд-ли кто положит. т.е придется работать за небольшие деньги, так сказать на перспективу. (я именно так и поступил. Когда подвернулся шанс устроиться на работу дизайнером (на 15 тыр), я тут-же уволился с предыдущей работы, хотя мой уровень знаний в том-же ФШ был почти нулевой. Про иллюстратор я даже ничего не слышал ))) Но за 4 года очень прилично прокачался) Так-же и с программингом.
и еще попробуйте найти работу по ближе к дому. т.е. Жуковский или Раменское и их окрестности. тем самым вы сэкономите тысяч 10-12 в месяц, а соответственно 20 тысяч тут, будет эквивалентом 30 в Москве.
Но все равно, считайте что это будет работа за похлебку.
В начало
Профиль : Блог : Личное Сообщение : Сайт : ICQ
jah
Сообщение  08 Июл 2009, 0:12  Ссылка : Ответить с цитатой
Возраст: 42 Пол: Мужской 
C нами с 25.09.2006
Репутация: 77.9

SaikoPeipa, главное желание, а не словоблудие на форумах ; Смайлик

Делали базы на FoxPro?

http://www.rabota.ru/vacancy27011531.html
http://www.keywork.ru/vacancy_view.php?vacancy_id=610535
http://495.superjob.ru/vacancy/?id=10500047

а потом уже, можно пословоблудить, как я Подмигивание)
В начало
Профиль : Личное Сообщение
SaikoPeipa
Сообщение  08 Июл 2009, 13:06  Ссылка : Ответить с цитатой
Пол: Мужской 
C нами с 07.11.2008
Репутация: 62.3

Спасибо большое за советы, буду думать=)
В начало
Профиль : Личное Сообщение
4t0m
Сообщение  09 Июл 2009, 21:39  Ссылка : Ответить с цитатой
Возраст: 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  »

Unsorted   ~  Software  ~  Development and Design  ~  Помощь по PHP

Ответить на тему

Перейти:  





Powered by phpBB   © Unsorted Team  support@unsorted.me  promo@unsorted.me  Полезные скрипты