|
На страницу « 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 » |
|
|
|
|
Возраст: 37 C нами с 25.01.2005 Репутация: 133
|
|
Язык программирования, разработанный специально для динамической генерации веб-страниц. Намного превосходит возможности SSI. Имеет функции работы с базами данных (MySQL), создания графических файлов Jpeg и PNG (библиотека GD), обработки XML-документов и многие другие.
|
|
|
|
|
|
|
|
Возраст: 45 C нами с 27.03.2005 Репутация: 204.2
|
|
Павлин, у Вас в запросе записи из таблицы `tovars` никак не связаны с записями из других таблиц. Надо либо в "WHERE" добавить условие связи, либо соединять таблицы, как у Вас это сделано для `users` и `sales`.
P.S.: И лучше задавать подобные вопросы в отдельнй теме про SQL, как предложил NarWhal (впрочем, я здесь не модератор).
|
_____________________________ Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.10.2005 Репутация: 77.1
|
|
veloadmin писал(а): |
Если вы используете форму INPUT FILE, то tmp файл создается атоматически в папке /tmp с уникальным имененм и удаляется по закрытию скрипта.
Добавлено спустя 3 минуты 50 секунд:
ЗЫ данные надо брать из массива FILE:
В каждом элементе массива $_FILE будет размещена следующая информация:
$_FILE['ufile']['name'] — имя выбранного файла (например, uploadme.txt)
$_FILE['ufile']['type'] — тип выбранного файла (например, image/jpg)
$_FILE['ufile']['size'] — размер выбранного файла в байтах
$_FILE['ufile']['tmp_name'] — имя и каталог для временного размещения файла на сервере
$_FILE['ufile']['error'] — код ошибки, возникает в том случае, если попытка загрузки была неудачной
Здесь 'ufile' это соответственно name в вашем INPUT - e
|
$_FILE? Разве есть такая предопределенная переменная? Насколько я знаю в PHP есть только $_FILES
http://ru2.php.net/manual/ru/reserved.variables.php
В любом случае, вы мой код просмотрели полностью? Я беру данные из "tmp_name", при этом аттач к письму не крепиться. Больше того: размерность массива, хранящего данные о файле всегда - 0!
|
|
|
|
|
|
|
|
C нами с 02.03.2007 Репутация: 108
|
|
Конечно FILES
$uploaddir = '/public_html/site/html/uploads/'; (путь к папке uploads)
if ($_FILES['attach']['name'] != '')
{
$filename = $uploaddir.basename($_FILES['attach']['name']);
if (!move_uploaded_file($_FILES['attach']['tmp_name'], $filename))
{
$echo = 'Не удалось загрузить файл.';
}
else
{
function XMail( $_POST['from'], $_POST['to'], $_POST['subj'], $_POST['text'], $filename)
}
}
+ сама функция |
Главное тут это move_uploaded_file а остальное дополнительно
|
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.10.2005 Репутация: 77.1
|
|
Так, стоп. Т.е. прикрепить файл "на лету", без заливания в какую-то, пусть даже и временную директорию нельзя? Из того же tmp образа?
|
|
|
|
|
|
|
|
Возраст: 40 C нами с 26.01.2005 Репутация: 112.5
|
|
4t0m писал(а): |
Так, стоп. Т.е. прикрепить файл "на лету", без заливания в какую-то, пусть даже и временную директорию нельзя? Из того же tmp образа?
|
У него будет нечитаемое имя (типа a45fdg59ty54tggj8854g0).
|
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.10.2005 Репутация: 77.1
|
|
Дело в том, что я вообще не могу получить информацию о файле из $_FILES['attach']['tmp_name'], на лету, без заливки на фтп.
Вернее не правильно выразился. Информация то есть. Путь и прочее. Но к аттачу файл все равно не крепится. Когда данные загоняю в массив, он постоянно показывает 0 размерность...
Получается, рабочий только вариант с move, отправкой и последующим удалением этого "временного" файла с фтп?! Это как-то не красиво
Вообще, с файлами, я чего-только не делал. Но к письмам не крепил, потому, для меня,- это темный лес.
|
|
|
|
|
|
|
|
Возраст: 37 C нами с 08.05.2009 Репутация: 5.6
|
|
Silicoid, Скажите пожалуйста как мне вставить <input type="text" maxlength="100" name="comment" size="15" value= что-бы попали только цифры т.е поля sales.stock, sales.number, sales.rest вот в этом написанном вами коде
<html>
<head>
<title>Опыт 1</title>
</head>
<center><A href="http://www.test1.ru/counter.php">Переход к анкеру COUNTER</A><h2>
<?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 = '128500';
$mysql_password = 'root';
$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("Запос не выполнен!");
return $result;
mysql_close($link);
}
$per = 9;
$uid = 1;
$query = "SELECT users.u_name, tovars.t_package, sales.t_name, sales.t_ypakovka, sales.klient, sales.stock, sales.number, sales.s_date, sales.rest, sales.period FROM sales LEFT JOIN users ON users.u_id = sales.u_id LEFT JOIN tovars ON tovars.t_name = sales.t_name WHERE sales.u_id ='1' AND sales.period = '9' GROUP BY sales.t_ypakovka, sales.klient ORDER BY sales.t_name, sales.klient, sales.period";
$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']; // а тут список клиентов (из всех полей)
$package[$i] = $line['t_package']; // А тут список объёма товара
$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);
$goods_pos = array_flip($goods_names);
$goods_count = count($goods_names);
// определяем название и кол-во товаров динамические X позиции
$goods_package = array_unique_slice($package);
$package_pos = array_flip($goods_package);
$package_count = count($goods_package);
//сортируем массив, приняв во внимание, что 0 и 1 столбец используются
// столбец 0 - для ввода названия
// столбец 1 - для вывода типа упаковки
// столбец 2 - для вывода объема упаковки
// столбец 3...х+3 - это столбцы для соответствующих покупателей
// столбец х+4 - количество товара на складе
// столбец х+5 - остаток
// столбец x+6 - дата последней продажи
$output_table = array();
reset($data);
for ($x=0;$x<$max_lines;$x++)
{
$line = $data[$x];
$x_shift = $klients_pos[$line['klient']]+3;
$y_shift = $goods_pos[$line['t_name']];
$p_shift = $package_pos[$line['t_package']];
//для каждого конкретного товара
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+3]))
{ // если в ячейке уже есть данные то суммируем их
$curent_stock = $output_table [$y_shift][$klients_count+3];
$output_table [$y_shift][$klients_count+3] = $curent_stock+$line['stock'];
} else
{ // создаем данные с нуля
$output_table [$y_shift][$klients_count+3] = $line['stock'];
}
//для "остатки"
if (isset($output_table [$y_shift][$klients_count+4]))
{
$output_table [$y_shift][$klients_count+4] = $output_table [$y_shift][$klients_count+4] + $line['rest'];
} else
{ // создаем данные с нуля
$output_table [$y_shift][$klients_count+4] = $line['rest'];
}
// находим дату последней продажи
if (isset($output_table [$y_shift][$klients_count+5]))
{
if ($line['unix_timestamp']>$output_table [$y_shift][$klients_count+5]){$output_table [$y_shift][$klients_count+5] = $line['unix_timestamp'];}
} else
{ // создаем данные с нуля
$output_table [$y_shift][$klients_count+5] = $line['unix_timestamp'];
}
$output_table [$y_shift][0] = $line['t_name'];
$output_table [$y_shift][1] = $line['t_ypakovka'];
$output_table [$y_shift][2] = $line['t_package'];
}
// перегоняем все таймстампы во время
for ($y=0;$y<$goods_count;$y++)
{
$output_table [$y][$klients_count+5] = date ("d.m.Y",$output_table [$y][$klients_count+5]);
}
//1. создаем заголовок таблицы
$table_header = '<body><table border="1" bgcolor="#FFFFb1" cellspacing="0" cellpadding="2"><tr><td colspan ="3" align = "center" >Отчет заполняется в коробах</td><td colspan ="200" align = "center">Период № '.$line[period].'</td></tr><tr><td width ="150">Наименование</td><td>Тип</td><td>Package</td>';
for ($y=0;$y<$klients_count;$y++) {$table_header = $table_header.'<td><input type="text" maxlength="100" name="comment" size="15" value="'.$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+6;$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;
echo '<form action="#">
<p><input type="submit" name="submit" value="Сохранить"></p>
</form>'
?>
</body>
</html>
|
А вообше огромное вам thanks!
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.10.2005 Репутация: 77.1
|
|
Товарищи, был дико не прав, извиняюсь. Собс-но ошибок в коде не было никаких. Абсолютно - 100% рабочий и правильный код. Единственная неудобность, файлы, как и заметил уважаемый тов. nitro2005, прикрепляются с корявыми именами (собс-но этого и следовало ожидать от tmp_name). Вся проблема была в одном единственном месте, в котором я, ест-но, не догадался посмотреть. По-просту не был указан тип формы, из которой все эти данные и приходили.
enctype="multipart/form-data" |
Вывод: Крепить файлы на лету можно без проблем, только внимательней смотрите на формы
|
|
|
|
|
|
|
|
Возраст: 45 C нами с 28.07.2005 Репутация: 135.1
|
|
Павлин, хм задачка нетривиальная достаточно. А вообще, если честно, я не понял куда должно выводиться это поле.
точнее вместо чего. или вместе с чем
|
|
|
|
|
|
|
|
Возраст: 37 C нами с 08.05.2009 Репутация: 5.6
|
|
Silicoid, Я задался мыслью теперь сделать таблицу чтоб можно было таблицу создавать и редактировать в онлайн и сохранять в базе, а это <input type="text" maxlength="100" name="comment" size="15" value= я просто подумал что этот вариан подойдёт, вот простите плиз если написал ерунду но умного на ум ничего не пришло .
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 45 C нами с 28.07.2005 Репутация: 135.1
|
|
Павлин, во первых кол-во ячеек - не фиксировано, соответственно надо еще предварительно разъяснить скрипту кол-во обрабатываемых ячеек
в общем можно добавить вот сюда еще одну строку, которая будет замещать все значения в столбцах 3 и 4, например на ваши
// перегоняем все таймстампы во время
for ($y=0;$y<$goods_count;$y++)
{
$output_table [$y][$klients_count+5] = date ("d.m.Y",$output_table [$y][$klients_count+5]);
//вот сюда вставляем код...
$output_table [$y][$klients_count+2] = '<input type="text" maxlength="100" name="comment'.$y.'" size="15" value="'.[$y][$klients_count+2].'">";
}
|
(код написан для примера)
а еще надо будет в конце формы создать поле count c параметром hidden из которого будет браться кол-во строк
|
|
|
|
|
|
|
|
Возраст: 37 C нами с 08.05.2009 Репутация: 5.6
|
|
Silicoid, вот блин не могу разобрать где ошибка играться с запятыми и ковычками устал Parse error: syntax error, unexpected '[' in Z:\home\test1.ru\www\index4.php on line 153 ругается вот на эту строку $output_table [$y][$klients_count+2] = '<input type="text" maxlength="100" name="comment '.$y.'" size="15" value = "'.[$y][$klients_count+2].'">";
}
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 45 C нами с 27.03.2005 Репутация: 204.2
|
|
Павлин, а чего Вы ждёте от этой конструкции?
'...' . [$y][$klients_count+2] . '...'
|
_____________________________ Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
|
|
|
|
|
|
|
Возраст: 46 C нами с 18.11.2006 Репутация: 119.1
|
|
Подскажите, можно ли унифицировать эту функцию, для применения во всех браузерах(данная конфигурация работает только в IE)
<script>
function click(e)
{
if (document.all)
{
if (event.button == 2)
{
alert("Правая кнопка мыши отключена!");
return false;
}
}
}
if (document.layers)
{ document.captureEvents(Event.MOUSEDOWN); }
document.onmousedown=click;
</script>
|
|
|
|
|
|
|
|
|
Возраст: 45 C нами с 28.07.2005 Репутация: 135.1
|
|
Павлин, как я уже говорил, в рабочее время у меня для написания чего-либо, только форма ввода ансортеда, по этому вот я и допускаю таки баги.. сорри.
Как уже сказал Олег, в этой структуре ошибка. Должно быть $output_table [$y][$klients_count+2]
Malkom, Вы немного ошиблись разделом. Это в помощь по Javascript Подозреваю, что все проблемы в несовпадении синтаксисов (или вообще в поддержке функции мозилой) в первом случае необходимо ввести проверку типа браузера и правильный синтаксис. во втором случае - может как окольно можно..
но я в жабаскрипте вообще не сильно копенгаген по этому сразу так не помогу
|
|
|
|
|
|
|
|
На страницу « 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 »
|
|